Mariusz Tkaczyk 9631abdbf4 md: Set MD_BROKEN for RAID1 and RAID10
There is no direct mechanism to determine raid failure outside
personality. It is done by checking rdev->flags after executing
md_error(). If "faulty" flag is not set then -EBUSY is returned to
userspace. -EBUSY means that array will be failed after drive removal.

Mdadm has special routine to handle the array failure and it is executed
if -EBUSY is returned by md.

There are at least two known reasons to not consider this mechanism
as correct:
1. drive can be removed even if array will be failed[1].
2. -EBUSY seems to be wrong status. Array is not busy, but removal
   process cannot proceed safe.

-EBUSY expectation cannot be removed without breaking compatibility
with userspace. In this patch first issue is resolved by adding support
for MD_BROKEN flag for RAID1 and RAID10. Support for RAID456 is added in
next commit.

The idea is to set the MD_BROKEN if we are sure that raid is in failed
state now. This is done in each error_handler(). In md_error() MD_BROKEN
flag is checked. If is set, then -EBUSY is returned to userspace.

As in previous commit, it causes that #mdadm --set-faulty is able to
fail array. Previously proposed workaround is valid if optional
functionality[1] is disabled.

[1] commit 9a567843f7ce("md: allow last device to be forcibly removed from
    RAID1/RAID10.")

Reviewd-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Signed-off-by: Song Liu <song@kernel.org>
2022-04-25 14:00:34 -07:00
..
2022-03-24 19:37:53 -07:00
2022-03-24 19:37:53 -07:00
2022-04-17 19:49:59 -06:00
2022-03-24 19:37:53 -07:00
2022-04-17 19:49:59 -06:00
2021-12-04 08:58:51 -08:00
2022-01-06 08:37:03 -08:00
2022-04-17 19:49:59 -06:00
2022-03-24 19:37:53 -07:00
2022-04-25 14:00:34 -07:00
2022-04-25 14:00:34 -07:00
2022-04-17 19:49:59 -06:00
2022-03-08 15:16:54 -08:00
2022-04-25 14:00:34 -07:00
2022-03-08 15:16:54 -08:00
2022-03-26 11:51:46 -07:00
2022-04-17 19:49:59 -06:00
2022-01-06 08:37:02 -08:00
2022-03-08 15:16:54 -08:00