Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

md/raid5: never wait for bad-block acks on failed device.

Once a device is failed we really want to completely ignore it.
It should go away soon anyway.

In particular the presence of bad blocks on it should not cause us to
block as we won't be trying to write there anyway.

So as soon as we can check if a device is Faulty, do so and pretend
that it is already gone if it is Faulty.

Signed-off-by: NeilBrown <neilb@suse.de>

NeilBrown 9283d8c5 8bd2f0a0

+3 -1
+3 -1
drivers/md/raid5.c
··· 3036 3036 if (dev->written) 3037 3037 s->written++; 3038 3038 rdev = rcu_dereference(conf->disks[i].rdev); 3039 + if (rdev && test_bit(Faulty, &rdev->flags)) 3040 + rdev = NULL; 3039 3041 if (rdev) { 3040 3042 is_bad = is_badblock(rdev, sh->sector, STRIPE_SECTORS, 3041 3043 &first_bad, &bad_sectors); ··· 3065 3063 } 3066 3064 } else if (test_bit(In_sync, &rdev->flags)) 3067 3065 set_bit(R5_Insync, &dev->flags); 3068 - else if (!test_bit(Faulty, &rdev->flags)) { 3066 + else { 3069 3067 /* in sync if before recovery_offset */ 3070 3068 if (sh->sector + STRIPE_SECTORS <= rdev->recovery_offset) 3071 3069 set_bit(R5_Insync, &dev->flags);