md/raid6: Fix raid-6 read-error correction in degraded state
authorGabriele A. Trombetti <g.trombetti.lkrnl1213@logicschema.com>
Wed, 28 Apr 2010 01:51:17 +0000 (11:51 +1000)
committerNeilBrown <neilb@suse.de>
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 <janos.haar@netcenter.hu>
Signed-off-by: Gabriele A. Trombetti <g.trombetti.lkrnl1213@logicschema.com>
Reported-by: Janos Haar <janos.haar@netcenter.hu>
Signed-off-by: NeilBrown <neilb@suse.de>
Cc: stable@kernel.org
drivers/md/raid5.c

index 58ea0ec..15348c3 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",