Re: [PATCH] md:array cannot be opened again after 'md_set_readonly'
From: NeilBrown <hidden>
Date: 2017-03-28 21:13:36
Attachments
- signature.asc [application/pgp-signature] 832 bytes
From: NeilBrown <hidden>
Date: 2017-03-28 21:13:36
On Mon, Mar 27 2017, Zhilong Liu wrote:
This is a bug about array cannot be opened again after 'md_set_readonly', because the MD_CLOSING bit is still waiting for clear. MD_CLOSING should only be set for a short period or time to avoid certain races. After the operation that set it completes, it should be cleared. Reviewed-by: NeilBrown <redacted>
No I didn't. I never reviewed this patch. I don't agree with this patch. This patch is wrong. The flag is set in md_ioctl(), and it should be cleared in md_ioctl(). NeilBrown
Cc: Guoqing Jiang <redacted> Signed-off-by: Zhilong Liu <redacted> --- drivers/md/md.c | 1 + 1 file changed, 1 insertion(+)diff --git a/drivers/md/md.c b/drivers/md/md.c index f6ae1d6..7f2db7c 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c@@ -5588,6 +5588,7 @@ static int md_set_readonly(struct mddev *mddev, struct block_device *bdev) int err = 0; int did_freeze = 0; + test_and_clear_bit(MD_CLOSING, &mddev->flags); if (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { did_freeze = 1; set_bit(MD_RECOVERY_FROZEN, &mddev->recovery);-- 2.6.6