public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] block: silently error unsupported empty barriers too
@ 2009-08-06 11:14 Mark McLoughlin
  2009-08-06 11:45 ` [dm-devel] " Alasdair G Kergon
  0 siblings, 1 reply; 7+ messages in thread
From: Mark McLoughlin @ 2009-08-06 11:14 UTC (permalink / raw)
  To: Jens Axboe
  Cc: linux-kernel, virtualization, dm-devel, Rusty Russell,
	Mikulas Patocka, Alasdair Kergon, Neil Brown

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(-)

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;
 	}
-- 
1.6.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [dm-devel] [PATCH] block: silently error unsupported empty barriers too
  2009-08-06 11:14 [PATCH] block: silently error unsupported empty barriers too Mark McLoughlin
@ 2009-08-06 11:45 ` Alasdair G Kergon
  2009-08-06 12:22   ` Christoph Hellwig
  2009-08-07  1:50   ` Mikulas Patocka
  0 siblings, 2 replies; 7+ messages in thread
From: Alasdair G Kergon @ 2009-08-06 11:45 UTC (permalink / raw)
  To: Mark McLoughlin
  Cc: device-mapper development, Jens Axboe, Rusty Russell,
	linux-kernel, virtualization, Mikulas Patocka

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dm-devel] [PATCH] block: silently error unsupported empty barriers too
  2009-08-06 11:45 ` [dm-devel] " Alasdair G Kergon
@ 2009-08-06 12:22   ` Christoph Hellwig
  2009-08-07  1:50   ` Mikulas Patocka
  1 sibling, 0 replies; 7+ messages in thread
From: Christoph Hellwig @ 2009-08-06 12:22 UTC (permalink / raw)
  To: Mark McLoughlin, device-mapper development, Jens Axboe,
	Rusty Russell, linux-kernel, virtualization, Mikulas Patocka

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.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dm-devel] [PATCH] block: silently error unsupported empty barriers too
  2009-08-06 11:45 ` [dm-devel] " Alasdair G Kergon
  2009-08-06 12:22   ` Christoph Hellwig
@ 2009-08-07  1:50   ` Mikulas Patocka
  2009-10-28 20:19     ` Andrew Patterson
  1 sibling, 1 reply; 7+ messages in thread
From: Mikulas Patocka @ 2009-08-07  1:50 UTC (permalink / raw)
  To: Alasdair G Kergon
  Cc: Mark McLoughlin, device-mapper development, Jens Axboe,
	Rusty Russell, linux-kernel, virtualization

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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [dm-devel] [PATCH] block: silently error unsupported empty barriers too
  2009-08-07  1:50   ` Mikulas Patocka
@ 2009-10-28 20:19     ` Andrew Patterson
  2009-10-28 21:03       ` Mike Snitzer
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Patterson @ 2009-10-28 20:19 UTC (permalink / raw)
  To: Mikulas Patocka
  Cc: Alasdair G Kergon, Mark McLoughlin, device-mapper development,
	Jens Axboe, Rusty Russell, linux-kernel, virtualization,
	". troy.heber"

On Thu, 2009-08-06 at 21:50 -0400, Mikulas Patocka wrote:
> 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
> --

This patch seems to have been dropped.  I can reproduce the error using
the following:

     1. Create an LVM logical volume on top of a cciss device (note that
        the cciss driver does not support barriers)
     2. Create an ext3 file system on top of the logical volume
     3. Mount the file-system using -obarrier=1
     4. Copy some files onto the file-system
     5. Run sync (dm_flush is called)

If I apply the patch (with some munging), the 

"end_request: I/O error, dev cciss/cXdY, sector 0"

messages go away.

This is not strictly a regression, given that the problem was introduced
in 2.6.31, but I think it should still be fixed for 2.6.32.

Andrew

-- 
Andrew Patterson
Hewlett-Packard


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: block: silently error unsupported empty barriers too
  2009-10-28 20:19     ` Andrew Patterson
@ 2009-10-28 21:03       ` Mike Snitzer
  2009-10-29  7:45         ` Jens Axboe
  0 siblings, 1 reply; 7+ messages in thread
From: Mike Snitzer @ 2009-10-28 21:03 UTC (permalink / raw)
  To: Andrew Patterson
  Cc: Mikulas Patocka, device-mapper development, Mark McLoughlin,
	". troy.heber", Rusty Russell, linux-kernel,
	virtualization, Jens Axboe, Alasdair G Kergon

On Wed, Oct 28 2009 at  4:19pm -0400,
Andrew Patterson <andrew.patterson@hp.com> wrote:

> On Thu, 2009-08-06 at 21:50 -0400, Mikulas Patocka wrote:
> > 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
> > --
> 
> This patch seems to have been dropped.  I can reproduce the error using
> the following:
> 
>      1. Create an LVM logical volume on top of a cciss device (note that
>         the cciss driver does not support barriers)
>      2. Create an ext3 file system on top of the logical volume
>      3. Mount the file-system using -obarrier=1
>      4. Copy some files onto the file-system
>      5. Run sync (dm_flush is called)
> 
> If I apply the patch (with some munging), the 
> 
> "end_request: I/O error, dev cciss/cXdY, sector 0"
> 
> messages go away.
> 
> This is not strictly a regression, given that the problem was introduced
> in 2.6.31, but I think it should still be fixed for 2.6.32.

It was resubmitted last Friday:
http://lkml.org/lkml/2009/10/23/196

And is queued in Jens' 'for-linus' branch (meaning it should get
upstream in time for 2.6.32), see:
http://git.kernel.org/?p=linux/kernel/git/axboe/linux-2.6-block.git;a=commit;h=6cafb12dc85a5bdc722791cc5070968413264909

Mike

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: block: silently error unsupported empty barriers too
  2009-10-28 21:03       ` Mike Snitzer
@ 2009-10-29  7:45         ` Jens Axboe
  0 siblings, 0 replies; 7+ messages in thread
From: Jens Axboe @ 2009-10-29  7:45 UTC (permalink / raw)
  To: Mike Snitzer
  Cc: Andrew Patterson, Mikulas Patocka, device-mapper development,
	Mark McLoughlin, ". troy.heber", Rusty Russell,
	linux-kernel, virtualization, Alasdair G Kergon

On Wed, Oct 28 2009, Mike Snitzer wrote:
> On Wed, Oct 28 2009 at  4:19pm -0400,
> Andrew Patterson <andrew.patterson@hp.com> wrote:
> 
> > On Thu, 2009-08-06 at 21:50 -0400, Mikulas Patocka wrote:
> > > 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
> > > --
> > 
> > This patch seems to have been dropped.  I can reproduce the error using
> > the following:
> > 
> >      1. Create an LVM logical volume on top of a cciss device (note that
> >         the cciss driver does not support barriers)
> >      2. Create an ext3 file system on top of the logical volume
> >      3. Mount the file-system using -obarrier=1
> >      4. Copy some files onto the file-system
> >      5. Run sync (dm_flush is called)
> > 
> > If I apply the patch (with some munging), the 
> > 
> > "end_request: I/O error, dev cciss/cXdY, sector 0"
> > 
> > messages go away.
> > 
> > This is not strictly a regression, given that the problem was introduced
> > in 2.6.31, but I think it should still be fixed for 2.6.32.
> 
> It was resubmitted last Friday:
> http://lkml.org/lkml/2009/10/23/196
> 
> And is queued in Jens' 'for-linus' branch (meaning it should get
> upstream in time for 2.6.32), see:
> http://git.kernel.org/?p=linux/kernel/git/axboe/linux-2.6-block.git;a=commit;h=6cafb12dc85a5bdc722791cc5070968413264909

I sent out a pull request yesterday, but it isn't in yet. Any day now...

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-10-29  7:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-06 11:14 [PATCH] block: silently error unsupported empty barriers too Mark McLoughlin
2009-08-06 11:45 ` [dm-devel] " Alasdair G Kergon
2009-08-06 12:22   ` Christoph Hellwig
2009-08-07  1:50   ` Mikulas Patocka
2009-10-28 20:19     ` Andrew Patterson
2009-10-28 21:03       ` Mike Snitzer
2009-10-29  7:45         ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox