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 <neilb@xxxxxxxx> 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 <gqjiang@xxxxxxxx> > Signed-off-by: Zhilong Liu <zlliu@xxxxxxxx> > --- > 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
Attachment:
signature.asc
Description: PGP signature