diff options
author | Greg Kroah-Hartman | 2016-11-14 08:11:29 +0100 |
---|---|---|
committer | Greg Kroah-Hartman | 2016-11-14 08:11:29 +0100 |
commit | 8a0a8e1c42fdf656e7b729e9c468c2caa687adb7 (patch) | |
tree | bde58e16dd5e6912deccac7e41b9a95f05187ea6 /drivers/md/raid10.c | |
parent | USB: cdc-acm: use get_icount tty operation (diff) | |
parent | Linux 4.9-rc5 (diff) | |
download | kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.tar.gz kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.tar.xz kernel-qcow2-linux-8a0a8e1c42fdf656e7b729e9c468c2caa687adb7.zip |
Merge 4.9-rc5 into usb-next
We want/need the USB fixes in here as well, for testing and merge
issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r-- | drivers/md/raid10.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index be1a9fca3b2d..39fddda2fef2 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -447,6 +447,9 @@ static void raid10_end_write_request(struct bio *bio) struct r10conf *conf = r10_bio->mddev->private; int slot, repl; struct md_rdev *rdev = NULL; + bool discard_error; + + discard_error = bio->bi_error && bio_op(bio) == REQ_OP_DISCARD; dev = find_bio_disk(conf, r10_bio, bio, &slot, &repl); @@ -460,7 +463,7 @@ static void raid10_end_write_request(struct bio *bio) /* * this branch is our 'one mirror IO has finished' event handler: */ - if (bio->bi_error) { + if (bio->bi_error && !discard_error) { if (repl) /* Never record new bad blocks to replacement, * just fail it. @@ -503,7 +506,7 @@ static void raid10_end_write_request(struct bio *bio) if (is_badblock(rdev, r10_bio->devs[slot].addr, r10_bio->sectors, - &first_bad, &bad_sectors)) { + &first_bad, &bad_sectors) && !discard_error) { bio_put(bio); if (repl) r10_bio->devs[slot].repl_bio = IO_MADE_GOOD; |