The patch titled md: fix data corruption when a degraded raid5 array is reshaped has been added to the -mm tree. Its filename is md-fix-data-corruption-when-a-degraded-raid5-array-is-reshaped.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: md: fix data corruption when a degraded raid5 array is reshaped From: Dan Williams <dan.j.williams@xxxxxxxxx> md: Fix data corruption when a degraded raid5 array is reshaped. We currently do not wait for the block from the missing device to be computed from parity before copying data to the new stripe layout. The change in the raid6 code is not techincally needed as we don't delay data block recovery in the same way for raid6 yet. But making the change now is safer long-term. This bug exists in 2.6.23 and 2.6.24-rc Cc: <stable@xxxxxxxxxx> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> Acked-by: Neil Brown <neilb@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/md/raid5.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff -puN drivers/md/raid5.c~md-fix-data-corruption-when-a-degraded-raid5-array-is-reshaped drivers/md/raid5.c --- a/drivers/md/raid5.c~md-fix-data-corruption-when-a-degraded-raid5-array-is-reshaped +++ a/drivers/md/raid5.c @@ -2865,7 +2865,8 @@ static void handle_stripe5(struct stripe md_done_sync(conf->mddev, STRIPE_SECTORS, 1); } - if (s.expanding && s.locked == 0) + if (s.expanding && s.locked == 0 && + !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) handle_stripe_expansion(conf, sh, NULL); if (sh->ops.count) @@ -3067,7 +3068,8 @@ static void handle_stripe6(struct stripe md_done_sync(conf->mddev, STRIPE_SECTORS, 1); } - if (s.expanding && s.locked == 0) + if (s.expanding && s.locked == 0 && + !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) handle_stripe_expansion(conf, sh, &r6s); spin_unlock(&sh->lock); _ Patches currently in -mm which might be from dan.j.williams@xxxxxxxxx are md-fix-data-corruption-when-a-degraded-raid5-array-is-reshaped.patch git-arm.patch git-md-accel.patch dca-convert-struct-class_device-to-struct-device.patch add-dma-engine-driver-for-freescale-mpc85xx-processors.patch add-dma-engine-driver-for-freescale-mpc85xx-processors-fix.patch add-dma-engine-driver-for-freescale-mpc85xx-processors-fix-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html