diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2014-02-18 15:57:22 +0100 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2014-02-18 16:48:57 +0100 |
commit | f3a44fe0608eb628e1f8f6e3540462e6d171a745 (patch) | |
tree | 6e9dae9298d355d238d8b95d9b756f431d6f830e /drivers/md/dm-raid1.c | |
parent | dm io: fix I/O to multiple destinations (diff) | |
download | linux-f3a44fe0608eb628e1f8f6e3540462e6d171a745.tar.xz linux-f3a44fe0608eb628e1f8f6e3540462e6d171a745.zip |
dm raid1: fix immutable biovec related BUG when retrying read bio
When restoring bi_end_io, increase bi_remaining before retrying the bio
to avoid BUG_ON(atomic_read(&bio->bi_remaining) <= 0) in bio_endio().
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-raid1.c')
-rw-r--r-- | drivers/md/dm-raid1.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index f284e0bfb25f..7dfdb5c746d6 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -1244,6 +1244,9 @@ static int mirror_end_io(struct dm_target *ti, struct bio *bio, int error) dm_bio_restore(bd, bio); bio_record->details.bi_bdev = NULL; + + atomic_inc(&bio->bi_remaining); + queue_bio(ms, bio, rw); return DM_ENDIO_INCOMPLETE; } |