--- /dev/null
+While the stripe in-memory must be in-sync, the stripe on disk might not be
+because if we computed a block rather than reading it from an in-sync disk,
+the in-memory stripe can be different from the on-disk stripe.
+
+If this bug were still in mainline I would probably want a bigger patch which
+would leave this code but also set R5_LOCKED on all blocks that have been
+computed. But as it is a stablisation patch, the above is simple and more
+clearly correct.
+
+Thanks for you patience - I look forward to your success/failure report.
+
+NeilBrown
+
+diff -up /drivers/md/raid5.c
+===========================================
+--- a/drivers/md/raid5.c
++++ b/drivers/md/raid5.c
+@@ -2466,8 +2466,6 @@
+ locked++;
+ set_bit(R5_Wantwrite, &sh->dev[i].flags);
+ }
+- /* after a RECONSTRUCT_WRITE, the stripe MUST be in-sync */
+- set_bit(STRIPE_INSYNC, &sh->state);
+
+ if (test_and_clear_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) {
+ atomic_dec(&conf->preread_active_stripes);
raid5-merge-ios-rhel5.patch
raid5-zerocopy-rhel5.patch
raid5-maxsectors-rhel5.patch
+raid5-rebuild-corrupt-bug.patch
md-rebuild-policy.patch
jbd-journal-chksum-2.6.18-vanilla.patch
quota-large-limits-rhel5.patch