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. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel