]> 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>
Wed, 9 Nov 2011 00:32:09 +0000 (11:32 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 9 Nov 2011 00:32:09 +0000 (11:32 +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 78d3115e5770f0e5420c8276452758ef7a087f2c..ea6dce9db10dc0cea20004f41f2ed5c3b7d95a60 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))