Message ID | 1249557257.3721.55.camel@blaa (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Thu, Aug 06, 2009 at 12:14:17PM +0100, Mark McLoughlin wrote: > We should error all barriers, even empty barriers, on devices like > virtio_blk which don't support them. Have you considered whether or not virtio_blk actually needs to support empty barriers? Alasdair -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
On Thu, Aug 06, 2009 at 12:45:50PM +0100, Alasdair G Kergon wrote: > On Thu, Aug 06, 2009 at 12:14:17PM +0100, Mark McLoughlin wrote: > > We should error all barriers, even empty barriers, on devices like > > virtio_blk which don't support them. > > Have you considered whether or not virtio_blk actually needs to > support empty barriers? virtio_blk on kvm does not support any barriers at all, similar to many other drivers out there. If the queue flags say we don't support barriers higher layers should not submit any barrier requests. -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
On Thu, 6 Aug 2009, Alasdair G Kergon wrote: > On Thu, Aug 06, 2009 at 12:14:17PM +0100, Mark McLoughlin wrote: > > We should error all barriers, even empty barriers, on devices like > > virtio_blk which don't support them. > > Have you considered whether or not virtio_blk actually needs to > support empty barriers? > > Alasdair This is only for request-based drivers, where it is the responsibility of blk-core to translate barriers. I think the empty barrier request anyway in blk_do_ordered, but with an error message. So the patch changes it to discard it early and queitly. It seems ok. Mikulas -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
diff --git a/block/blk-core.c b/block/blk-core.c index e3299a7..35ad2bb 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -1163,8 +1163,7 @@ static int __make_request(struct request_queue *q, struct bio *bio) const int unplug = bio_unplug(bio); int rw_flags; - if (bio_barrier(bio) && bio_has_data(bio) && - (q->next_ordered == QUEUE_ORDERED_NONE)) { + if (bio_barrier(bio) && (q->next_ordered == QUEUE_ORDERED_NONE)) { bio_endio(bio, -EOPNOTSUPP); return 0; }
With 2.6.31-rc5 in a KVM guest using dm and virtio_blk, we see the following errors: end_request: I/O error, dev vda, sector 0 end_request: I/O error, dev vda, sector 0 The errors go away if dm stops submitting empty barriers, by reverting: commit 52b1fd5a27c625c78373e024bf570af3c9d44a79 Author: Mikulas Patocka <mpatocka@redhat.com> dm: send empty barriers to targets in dm_flush We should error all barriers, even empty barriers, on devices like virtio_blk which don't support them. See also: https://bugzilla.redhat.com/514901 Signed-off-by: Mark McLoughlin <markmc@redhat.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Mikulas Patocka <mpatocka@redhat.com> Cc: Alasdair G Kergon <agk@redhat.com> Cc: Neil Brown <neilb@suse.de> --- block/blk-core.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)