Message ID | 20230824034304.37411-7-zhengqi.arch@bytedance.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | use refcount+RCU method to implement lockless slab shrink | expand |
On 2023/8/24 11:42, Qi Zheng wrote: > Use new APIs to dynamically allocate the erofs-shrinker. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > Reviewed-by: Muchun Song <songmuchun@bytedance.com> > CC: Gao Xiang <xiang@kernel.org> > CC: Chao Yu <chao@kernel.org> > CC: Yue Hu <huyue2@coolpad.com> > CC: Jeffle Xu <jefflexu@linux.alibaba.com> > CC: linux-erofs@lists.ozlabs.org Reviewed-by: Chao Yu <chao@kernel.org> Thanks,
On 2023/8/24 11:42, Qi Zheng wrote: > Use new APIs to dynamically allocate the erofs-shrinker. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > Reviewed-by: Muchun Song <songmuchun@bytedance.com> > CC: Gao Xiang <xiang@kernel.org> > CC: Chao Yu <chao@kernel.org> > CC: Yue Hu <huyue2@coolpad.com> > CC: Jeffle Xu <jefflexu@linux.alibaba.com> > CC: linux-erofs@lists.ozlabs.org Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Thanks, Gao Xiang
diff --git a/fs/erofs/utils.c b/fs/erofs/utils.c index cc6fb9e98899..6e1a828e6ca3 100644 --- a/fs/erofs/utils.c +++ b/fs/erofs/utils.c @@ -270,19 +270,25 @@ static unsigned long erofs_shrink_scan(struct shrinker *shrink, return freed; } -static struct shrinker erofs_shrinker_info = { - .scan_objects = erofs_shrink_scan, - .count_objects = erofs_shrink_count, - .seeks = DEFAULT_SEEKS, -}; +static struct shrinker *erofs_shrinker_info; int __init erofs_init_shrinker(void) { - return register_shrinker(&erofs_shrinker_info, "erofs-shrinker"); + erofs_shrinker_info = shrinker_alloc(0, "erofs-shrinker"); + if (!erofs_shrinker_info) + return -ENOMEM; + + erofs_shrinker_info->count_objects = erofs_shrink_count; + erofs_shrinker_info->scan_objects = erofs_shrink_scan; + erofs_shrinker_info->seeks = DEFAULT_SEEKS; + + shrinker_register(erofs_shrinker_info); + + return 0; } void erofs_exit_shrinker(void) { - unregister_shrinker(&erofs_shrinker_info); + shrinker_free(erofs_shrinker_info); } #endif /* !CONFIG_EROFS_FS_ZIP */