md/raid6: Fix raid-6 read-error correction in degraded state
authorGabriele A. Trombetti <[email protected]>
Wed, 28 Apr 2010 01:51:17 +0000 (11:51 +1000)
committerNeilBrown <[email protected]>
Fri, 7 May 2010 11:10:35 +0000 (21:10 +1000)
Fix: Raid-6 was not trying to correct a read-error when in
singly-degraded state and was instead dropping one more device, going to
doubly-degraded state. This patch fixes this behaviour.

Tested-by: Janos Haar <[email protected]>
Signed-off-by: Gabriele A. Trombetti <[email protected]>
Reported-by: Janos Haar <[email protected]>
Signed-off-by: NeilBrown <[email protected]>
Cc: [email protected]
drivers/md/raid5.c

index 58ea0ecae7c3494da002fbd964b557b6a875e1c3..15348c393b5daeb59ad11a9050f66eef428b4314 100644 (file)
@@ -1527,7 +1527,7 @@ static void raid5_end_read_request(struct bio * bi, int error)
 
                clear_bit(R5_UPTODATE, &sh->dev[i].flags);
                atomic_inc(&rdev->read_errors);
-               if (conf->mddev->degraded)
+               if (conf->mddev->degraded >= conf->max_degraded)
                        printk_rl(KERN_WARNING
                                  "raid5:%s: read error not correctable "
                                  "(sector %llu on %s).\n",