aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-06-09 16:32:22 +1000
committerNeilBrown <neilb@suse.de>2009-06-09 16:32:22 +1000
commit0e6e0271a210817e202c8a4bfffbde3e3c0616d1 (patch)
tree0452e29d393b7688f09f38c98f113703d1b5cc3d /drivers/md
parentmd/raid5 - avoid deadlocks in get_active_stripe during reshape (diff)
downloadlinux-dev-0e6e0271a210817e202c8a4bfffbde3e3c0616d1.tar.xz
linux-dev-0e6e0271a210817e202c8a4bfffbde3e3c0616d1.zip
md/raid5: fix bug in reshape code when chunk_size decreases.
Now that we support changing the chunksize, we calculate "reshape_sectors" to be the max of number of sectors in old and new chunk size. However there is one please where we still use 'chunksize' rather than 'reshape_sectors'. This causes a reshape that reduces the size of chunks to freeze. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/raid5.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 59f2ec0759b4..bb37fb1b2d82 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3916,7 +3916,7 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
raid5_compute_sector(conf, stripe_addr*(new_data_disks),
1, &dd_idx, NULL);
last_sector =
- raid5_compute_sector(conf, ((stripe_addr+conf->chunk_size/512)
+ raid5_compute_sector(conf, ((stripe_addr+reshape_sectors)
*(new_data_disks) - 1),
1, &dd_idx, NULL);
if (last_sector >= mddev->dev_sectors)