Message ID | 20230529132037.2124527-6-yukuai1@huaweicloud.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
Series | md: fix that MD_RECOVERY_RUNNING can be cleared while sync_thread is still running | expand |
在 2023/5/29 下午9:20, Yu Kuai 写道: > From: Yu Kuai <yukuai3@huawei.com> > > md_reap_sync_thread() is just replaced with wait_event(resync_wait, ...) > from action_store(), just make sure action_store() will still wait for > everything to be done in md_reap_sync_thread(). > > Signed-off-by: Yu Kuai <yukuai3@huawei.com> > --- > drivers/md/md.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index 7912de0e4d12..f90226e6ddf8 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -9531,7 +9531,6 @@ void md_reap_sync_thread(struct mddev *mddev) > if (mddev_is_clustered(mddev) && is_reshaped > && !test_bit(MD_CLOSING, &mddev->flags)) > md_cluster_ops->update_size(mddev, old_dev_sectors); > - wake_up(&resync_wait); > /* flag recovery needed just to double check */ > set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); > sysfs_notify_dirent_safe(mddev->sysfs_completed); > @@ -9539,6 +9538,7 @@ void md_reap_sync_thread(struct mddev *mddev) > md_new_event(); > if (mddev->event_work.func) > queue_work(md_misc_wq, &mddev->event_work); > + wake_up(&resync_wait); > } > EXPORT_SYMBOL(md_reap_sync_thread); > Reviewd-by: Xiao Ni <xni@redhat.com>
diff --git a/drivers/md/md.c b/drivers/md/md.c index 7912de0e4d12..f90226e6ddf8 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -9531,7 +9531,6 @@ void md_reap_sync_thread(struct mddev *mddev) if (mddev_is_clustered(mddev) && is_reshaped && !test_bit(MD_CLOSING, &mddev->flags)) md_cluster_ops->update_size(mddev, old_dev_sectors); - wake_up(&resync_wait); /* flag recovery needed just to double check */ set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); sysfs_notify_dirent_safe(mddev->sysfs_completed); @@ -9539,6 +9538,7 @@ void md_reap_sync_thread(struct mddev *mddev) md_new_event(); if (mddev->event_work.func) queue_work(md_misc_wq, &mddev->event_work); + wake_up(&resync_wait); } EXPORT_SYMBOL(md_reap_sync_thread);