md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly()
authorYu Kuai <yukuai3@huawei.com>
Tue, 5 Dec 2023 09:42:14 +0000 (17:42 +0800)
committerSong Liu <song@kernel.org>
Wed, 6 Dec 2023 20:44:00 +0000 (12:44 -0800)
commitc9f7cb5b2bc968adcdc686c197ed108f47fd8eb0
tree6f32704b1646d72ad9ad264d9e312489cba2f296
parentf2d87a759f6841a132e845e2fafdad37385ddd30
md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly()

If md_set_readonly() failed, the array could still be read-write, however
'MD_RECOVERY_FROZEN' could still be set, which leave the array in an
abnormal state that sync or recovery can't continue anymore.
Hence make sure the flag is cleared after md_set_readonly() returns.

Fixes: 88724bfa68be ("md: wait for pending superblock updates before switching to read-only")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Acked-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20231205094215.1824240-3-yukuai1@huaweicloud.com
drivers/md/md.c