patch-2.4.22 linux-2.4.22/drivers/md/raid5.c
Next file: linux-2.4.22/drivers/media/video/Config.in
Previous file: linux-2.4.22/drivers/md/md.c
Back to the patch index
Back to the overall index
- Lines: 24
- Date:
2003-08-25 04:44:42.000000000 -0700
- Orig file:
linux-2.4.21/drivers/md/raid5.c
- Orig date:
2003-06-13 07:51:34.000000000 -0700
diff -urN linux-2.4.21/drivers/md/raid5.c linux-2.4.22/drivers/md/raid5.c
@@ -882,7 +882,7 @@
/* check if the array has lost two devices and, if so, some requests might
* need to be failed
*/
- if (failed > 1 && to_read+to_write) {
+ if (failed > 1 && to_read+to_write+written) {
for (i=disks; i--; ) {
/* fail all writes first */
if (sh->bh_write[i]) to_write--;
@@ -891,6 +891,14 @@
bh->b_reqnext = return_fail;
return_fail = bh;
}
+ /* and fail all 'written' */
+ if (sh->bh_written[i]) written--;
+ while ((bh = sh->bh_written[i])) {
+ sh->bh_written[i] = bh->b_reqnext;
+ bh->b_reqnext = return_fail;
+ return_fail = bh;
+ }
+
/* fail any reads if this device is non-operational */
if (!conf->disks[i].operational) {
spin_lock_irq(&conf->device_lock);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)