]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
md/raid5: Mark device replaceable when we see a write error.
authorNeilBrown <neilb@suse.de>
Fri, 9 Dec 2011 03:27:05 +0000 (14:27 +1100)
committerNeilBrown <neilb@suse.de>
Fri, 9 Dec 2011 03:27:05 +0000 (14:27 +1100)
Now that Replaceable drives are replaced cleanly, mark a drive
as replaceable when we see a write error.  It might get failed soon so
the Replaceable flag is irrelevant, but if the write error is recorded
in the bad block log, we still want to activate any spare that might
be available.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/raid5.c

index cecacc6577e281c457c60a24b9810c264f744b7d..29d09371d1140d403c693727cd31d83305d1dcdc 100644 (file)
@@ -1784,6 +1784,9 @@ static void raid5_end_write_request(struct bio *bi, int error)
                if (!uptodate) {
                        set_bit(WriteErrorSeen, &rdev->flags);
                        set_bit(R5_WriteError, &sh->dev[i].flags);
+                       if (!test_and_set_bit(Replaceable, &rdev->flags))
+                               set_bit(MD_RECOVERY_NEEDED,
+                                       &rdev->mddev->recovery);
                } else if (is_badblock(rdev, sh->sector,
                                       STRIPE_SECTORS,
                                       &first_bad, &bad_sectors))