]> git.baikalelectronics.ru Git - kernel.git/commit
md: clear CHANGE_PENDING in readonly array
authorShaohua Li <shli@fb.com>
Fri, 18 Sep 2015 17:20:12 +0000 (10:20 -0700)
committerNeilBrown <neilb@suse.com>
Fri, 2 Oct 2015 07:23:44 +0000 (17:23 +1000)
commit3d45e130ba42d4f87f3a16b7591ec7856124e275
treec087245ba01366fb5c568915fce7d353897cc7a1
parent2751b2fd66bd58d69be4462ce5f3189c3c3e6be1
md: clear CHANGE_PENDING in readonly array

If faulty disks of an array are more than allowed degraded number, the
array enters error handling. It will be marked as read-only with
MD_CHANGE_PENDING/RECOVERY_NEEDED set. But currently recovery doesn't
clear CHANGE_PENDING bit for read-only array.  If MD_CHANGE_PENDING is
set for a raid5 array, all returned IO will be hold on a list till the
bit is clear. But recovery nevery clears this bit, the IO is always in
pending state and nevery finish. This has bad effects like upper layer
can't get an IO error and the array can't be stopped.

Fixes: f2e95e5d5f18 ("md/raid5: ensure device failure recorded before write request returns.")
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: NeilBrown <neilb@suse.com>
drivers/md/md.c