From: Lars Ellenberg <lars.ellenberg@linbit.com>
To: device-mapper development <dm-devel@redhat.com>
Subject: Re: [PATCH 1/2] blkdev: fix merge_bvec_fn return value checks
Date: Fri, 5 Mar 2010 20:20:27 +0100 [thread overview]
Message-ID: <20100305192027.GA24222@soda.linbit> (raw)
In-Reply-To: <20100305173716.GQ27852@agk-dp.fab.redhat.com>
On Fri, Mar 05, 2010 at 05:37:16PM +0000, Alasdair G Kergon wrote:
> On Thu, Mar 04, 2010 at 06:59:21PM +0100, Lars Ellenberg wrote:
> > + /* Restricting max_sectors is not enough.
> > + * If someone uses bio_add_page to add 8 disjunct 512 byte
> > + * partial pages to a bio, it would succeed,
> > + * but could still cross a border of whatever restrictions
> > + * are below us (raid0 stripe boundary). An attempted
> > + * bio_split would not succeed, because bi_vcnt is 8.
> > + * E.g. the xen io layer is known to trigger this.
> > + */
>
> Sounds plausible.
>
> Do you or anyone readingt his have example messages demonstrating the failure
> when this patch is not applied?
This has been an issue said two years ago when using Xen VMs on DRBD clusters.
My original summary post once the issue was understood is
http://archives.free.net.ph/message/20080523.161104.054c63ef.html
(the gmane link therein seems to be broken now, is not really of
interesst here anyways, but, just in case, equivalent with
http://archives.free.net.ph/message/20080410.212155.d9e0243d.html)
Actual error messages looked like
kernel: drbd3: bio would need to, but cannot, be split: (vcnt=8,idx=0,size=4096,sector=13113083)
kernel: drbd3: bio would need to, but cannot, be split: (vcnt=8,idx=0,size=4096,sector=13113149)
kernel: drbd3: bio would need to, but cannot, be split: (vcnt=8,idx=0,size=4096,sector=13113215)
bi_size is only 4k, but bi_vcnt is 8.
These had been submitted by Xen virtio on a typical VM image with the
legacy 63 sector offset into the first "partition".
You'd have the exact same issue (with slightly different error printk's)
on md raid0, or any other bio consumer with boundary restrictions not
having "generic" bio split logic, but directly using bio_split(),
as that does
BUG_ON(bi->bi_vcnt != 1);
BUG_ON(bi->bi_idx != 0);
--
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com
DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
next prev parent reply other threads:[~2010-03-05 19:20 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-27 17:35 [PATCH 1/2] blkdev: fix merge_bvec_fn return value checks Dmitry Monakhov
2010-02-27 17:35 ` [PATCH 2/2] blktrace: perform cleanup after setup error Dmitry Monakhov
2010-02-28 18:46 ` Jens Axboe
2010-02-28 18:46 ` [PATCH 1/2] blkdev: fix merge_bvec_fn return value checks Jens Axboe
2010-03-03 3:49 ` Dmitry Monakhov
2010-03-03 7:30 ` Jens Axboe
2010-03-03 8:39 ` Dmitry Monakhov
2010-03-03 12:21 ` Jens Axboe
2010-03-03 18:20 ` Mike Snitzer
2010-03-03 18:45 ` Dmitry Monakhov
2010-03-03 19:16 ` Mike Snitzer
2010-03-03 19:42 ` Dmitry Monakhov
2010-03-03 20:07 ` Jens Axboe
2010-03-04 11:47 ` [dm-devel] " Mikulas Patocka
2010-03-04 12:19 ` Jens Axboe
2010-03-04 21:55 ` Mikulas Patocka
2010-03-05 7:30 ` Jens Axboe
2010-03-05 7:30 ` [dm-devel] " Jens Axboe
2010-03-05 21:56 ` Neil Brown
2010-03-05 22:27 ` Alasdair G Kergon
2010-03-05 22:27 ` Alasdair G Kergon
2010-03-05 23:52 ` Neil Brown
2010-03-06 2:20 ` Alasdair G Kergon
2010-03-08 9:01 ` Mikulas Patocka
2010-03-04 17:59 ` Lars Ellenberg
2010-03-05 17:37 ` Alasdair G Kergon
2010-03-05 19:20 ` Lars Ellenberg [this message]
2010-03-08 5:43 ` Neil Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100305192027.GA24222@soda.linbit \
--to=lars.ellenberg@linbit.com \
--cc=dm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.