md/raid5: fix bug in reshape code when chunk_size decreases. [Linux 2.6.30]

This Linux kernel change "md/raid5: fix bug in reshape code when chunk_size decreases" is included in the Linux 2.6.30 release. This change is authored by NeilBrown <neilb [at] suse.de> on Tue Jun 9 16:32:22 2009 +1000. The commit for this change in Linux stable tree is 0e6e027 (patch).

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 <[email protected]>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/md/raid5.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 59f2ec0..bb37fb1 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)

Leave a Reply

Your email address will not be published. Required fields are marked *