Re: kernel BUG at block/bio.c:1785 while trying to issue a discard to LVM on RAID1 md

From: Shaohua Li
Date: Wed Oct 05 2016 - 17:39:56 EST


On Wed, Oct 05, 2016 at 10:31:11PM +0100, Sitsofe Wheeler wrote:
> On 3 October 2016 at 17:47, Sitsofe Wheeler <sitsofe@xxxxxxxxx> wrote:
> >
> > While trying to do a discard (via blkdiscard --length 1048576
> > /dev/<pathtodevice>) to an LVM device atop a two disk md RAID1 the
> > following oops was generated:
> >
> > [ 103.306243] md: resync of RAID array md127
> > [ 103.306246] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
> > [ 103.306248] md: using maximum available idle IO bandwidth (but not
> > more than 200000 KB/sec) for resync.
> > [ 103.306251] md: using 128k window, over a total of 244194432k.
> > [ 103.308158] ------------[ cut here ]------------
> > [ 103.308205] kernel BUG at block/bio.c:1785!
>
> This still seems to be here but slightly modified with a 4.8.0 kernel:

Does this fix the issue? Looks there is IO error


diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 21dc00e..349eb11 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2196,7 +2196,6 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
wbio = bio_clone_mddev(r1_bio->master_bio, GFP_NOIO, mddev);
}

- bio_set_op_attrs(wbio, REQ_OP_WRITE, 0);
wbio->bi_iter.bi_sector = r1_bio->sector;
wbio->bi_iter.bi_size = r1_bio->sectors << 9;