-diff -pur linux-2.6.18-53.orig/drivers/md/raid5.c linux-2.6.18-53/drivers/md/raid5.c
---- linux-2.6.18-53.orig/drivers/md/raid5.c 2007-12-28 18:55:24.000000000 +0800
-+++ linux-2.6.18-53/drivers/md/raid5.c 2007-12-28 19:08:15.000000000 +0800
+diff -pur b/drivers/md/raid5.c a/drivers/md/raid5.c
+--- b/drivers/md/raid5.c 2009-02-20 15:56:36.000000000 +0800
++++ a/drivers/md/raid5.c 2009-02-20 15:57:49.000000000 +0800
@@ -1277,7 +1277,26 @@ static void compute_block_2(struct strip
}
}
}
if (sh) {
- handle_stripe(sh, NULL);
-+ handle_stripe(sh, NULL, NULL);
++ handle_stripe(sh, NULL, bios);
release_stripe(sh);
sh = NULL;
}
+ handle_stripe(sh, conf->spare_page, NULL);
release_stripe(sh);
- spin_lock_irq(&conf->device_lock);
+ cond_resched();