Message ID | 20230531095742.2480623-2-qi.zheng@linux.dev (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | make unregistration of super_block shrinker more faster | expand |
On Wed, May 31, 2023 at 09:57:35AM +0000, Qi Zheng wrote: > From: Qi Zheng <zhengqi.arch@bytedance.com> > > The debugfs_remove_recursive() will wait for debugfs_file_put() > to return, so there is no need to put it after synchronize_srcu() > to wait for the rcu read-side critical section to exit. > > Just move it before synchronize_srcu(), which is also convenient > to put the heavy synchronize_srcu() in the delayed work later. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > --- Afaict, should be a patch independent of this series.
On 2023/5/31 18:49, Christian Brauner wrote: > On Wed, May 31, 2023 at 09:57:35AM +0000, Qi Zheng wrote: >> From: Qi Zheng <zhengqi.arch@bytedance.com> >> >> The debugfs_remove_recursive() will wait for debugfs_file_put() >> to return, so there is no need to put it after synchronize_srcu() >> to wait for the rcu read-side critical section to exit. >> >> Just move it before synchronize_srcu(), which is also convenient >> to put the heavy synchronize_srcu() in the delayed work later. >> >> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> >> --- > > Afaict, should be a patch independent of this series. OK, will resend as an independent patch. Thanks, Qi
diff --git a/mm/vmscan.c b/mm/vmscan.c index eeca83e28c9b..a773e97e152e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -818,11 +818,11 @@ void unregister_shrinker(struct shrinker *shrinker) debugfs_entry = shrinker_debugfs_detach(shrinker, &debugfs_id); mutex_unlock(&shrinker_mutex); + shrinker_debugfs_remove(debugfs_entry, debugfs_id); + atomic_inc(&shrinker_srcu_generation); synchronize_srcu(&shrinker_srcu); - shrinker_debugfs_remove(debugfs_entry, debugfs_id); - kfree(shrinker->nr_deferred); shrinker->nr_deferred = NULL; }