Message ID | 20230824034304.37411-6-zhengqi.arch@bytedance.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | use refcount+RCU method to implement lockless slab shrink | expand |
On 24.08.23 05:42, Qi Zheng wrote: > Use new APIs to dynamically allocate the xen-backend shrinker. > > Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> > Reviewed-by: Muchun Song <songmuchun@bytedance.com> > CC: Juergen Gross <jgross@suse.com> > CC: Stefano Stabellini <sstabellini@kernel.org> > CC: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> > CC: xen-devel@lists.xenproject.org Acked-by: Juergen Gross <jgross@suse.com> Just one note: it seems as if most users will set seeks to DEFAULT_SEEKS. Wouldn't it be better to do this in shrinker_alloc() and let only callers who want a different value overwrite that? Juergen
Hi Juergen, On 2023/8/24 14:00, Juergen Gross wrote: > On 24.08.23 05:42, Qi Zheng wrote: >> Use new APIs to dynamically allocate the xen-backend shrinker. >> >> Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com> >> Reviewed-by: Muchun Song <songmuchun@bytedance.com> >> CC: Juergen Gross <jgross@suse.com> >> CC: Stefano Stabellini <sstabellini@kernel.org> >> CC: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> >> CC: xen-devel@lists.xenproject.org > > Acked-by: Juergen Gross <jgross@suse.com> Thanks for your review! > > Just one note: it seems as if most users will set seeks to DEFAULT_SEEKS. > Wouldn't it be better to do this in shrinker_alloc() and let only callers > who want a different value overwrite that? I think it makes sense, will do. Thanks, Qi > > > Juergen
diff --git a/drivers/xen/xenbus/xenbus_probe_backend.c b/drivers/xen/xenbus/xenbus_probe_backend.c index da96c260e26b..929c41a5ccee 100644 --- a/drivers/xen/xenbus/xenbus_probe_backend.c +++ b/drivers/xen/xenbus/xenbus_probe_backend.c @@ -284,13 +284,9 @@ static unsigned long backend_shrink_memory_count(struct shrinker *shrinker, return 0; } -static struct shrinker backend_memory_shrinker = { - .count_objects = backend_shrink_memory_count, - .seeks = DEFAULT_SEEKS, -}; - static int __init xenbus_probe_backend_init(void) { + struct shrinker *backend_memory_shrinker; static struct notifier_block xenstore_notifier = { .notifier_call = backend_probe_and_watch }; @@ -305,8 +301,16 @@ static int __init xenbus_probe_backend_init(void) register_xenstore_notifier(&xenstore_notifier); - if (register_shrinker(&backend_memory_shrinker, "xen-backend")) - pr_warn("shrinker registration failed\n"); + backend_memory_shrinker = shrinker_alloc(0, "xen-backend"); + if (!backend_memory_shrinker) { + pr_warn("shrinker allocation failed\n"); + return 0; + } + + backend_memory_shrinker->count_objects = backend_shrink_memory_count; + backend_memory_shrinker->seeks = DEFAULT_SEEKS; + + shrinker_register(backend_memory_shrinker); return 0; }