diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/raid0.c | 4 | ||||
-rw-r--r-- | drivers/md/raid5.c | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index 683e685ed697..9afd00b45f83 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -531,6 +531,9 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio) ? (sector & (chunk_sects-1)) : sector_div(sector, chunk_sects)); + /* Restore due to sector_div */ + sector = bio->bi_iter.bi_sector; + if (sectors < bio_sectors(bio)) { split = bio_split(bio, sectors, GFP_NOIO, fs_bio_set); bio_chain(split, bio); @@ -538,7 +541,6 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio) split = bio; } - sector = bio->bi_iter.bi_sector; zone = find_zone(mddev->private, §or); tmp_dev = map_sector(mddev, zone, sector, §or); split->bi_bdev = tmp_dev->bdev; diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 3545fafe2027..b98c70e1f1a9 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -1914,7 +1914,8 @@ static int resize_stripes(struct r5conf *conf, int newsize) conf->slab_cache = sc; conf->active_name = 1-conf->active_name; - conf->pool_size = newsize; + if (!err) + conf->pool_size = newsize; return err; } |