Comment 17 for bug 420423

Revision history for this message
In , Mark (mark-redhat-bugs) wrote :

Okay, reverting this:

  http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=52b1fd5a27

  commit 52b1fd5a27c625c78373e024bf570af3c9d44a79
  Author: Mikulas Patocka <email address hidden>
  Date: Mon Jun 22 10:12:21 2009 +0100

    dm: send empty barriers to targets in dm_flush

    Pass empty barrier flushes to the targets in dm_flush().

    Signed-off-by: Mikulas Patocka <email address hidden>
    Signed-off-by: Alasdair G Kergon <email address hidden>

fixes it for me

Also, this little hack fixes it too:

  @@ -1163,7 +1163,7 @@ static int __make_request(struct request_queue *q, struct
          const int unplug = bio_unplug(bio);
          int rw_flags;

  - if (bio_barrier(bio) && bio_has_data(bio) &&
  + if (bio_barrier(bio) && /* bio_has_data(bio) && */
              (q->next_ordered == QUEUE_ORDERED_NONE)) {
                  bio_endio(bio, -EOPNOTSUPP);
                  return 0;

virtio_blk doesn't support barriers, and it seems these empty barriers submitted by device-mapper are getting through to the device and causing these errors