From: NeilBrown This condtion on this loop is primarily to avoid the loop if it doesn't appear to be needed. However it optimises a little too much and there is a case where it skips the loop when it is really needed. This patch fixes it. This is the raid6 version of the recent raid5 resync bugfix. Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 25-akpm/drivers/md/raid6main.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/md/raid6main.c~fix-bug-in-raid6-resync-code drivers/md/raid6main.c --- 25/drivers/md/raid6main.c~fix-bug-in-raid6-resync-code 2004-06-07 21:59:09.667436144 -0700 +++ 25-akpm/drivers/md/raid6main.c 2004-06-07 21:59:09.671435536 -0700 @@ -1157,7 +1157,7 @@ static void handle_stripe(struct stripe_ * parity, or to satisfy requests * or to load a block that is being partially written. */ - if (to_read || non_overwrite || (syncing && (uptodate+failed < disks))) { + if (to_read || non_overwrite || (syncing && (uptodate < disks))) { for (i=disks; i--;) { dev = &sh->dev[i]; if (!test_bit(R5_LOCKED, &dev->flags) && !test_bit(R5_UPTODATE, &dev->flags) && _