Messages in this thread | | | From | Shakeel Butt <> | Date | Fri, 10 Nov 2017 10:16:14 -0800 | Subject | Re: [PATCH v2] mm, shrinker: make shrinker_list lockless |
| |
On Thu, Nov 9, 2017 at 1:46 PM, Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> wrote: > Shakeel Butt wrote: >> > If you can accept serialized register_shrinker()/unregister_shrinker(), >> > I think that something like shown below can do it. >> >> If we assume that we will never do register_shrinker and >> unregister_shrinker on the same object in parallel then do we still >> need to do msleep & synchronize_rcu() within mutex? > > Doing register_shrinker() and unregister_shrinker() on the same object > in parallel is wrong. This mutex is to ensure that we do not need to > worry about ->list.next field. synchronize_rcu() should not be slow. > If you want to avoid msleep() with mutex held, you can also apply > >> > If you want parallel register_shrinker()/unregister_shrinker(), something like >> > shown below on top of shown above will do it. > > change.
Thanks for the explanation. Can you post the patch for others to review without parallel register/unregister and SHRINKER_PERMANENT (we can add when we need them)? You can use the motivation for the patch I mentioned in my patch instead.
| |