On Thu, Nov 9, 2017 at 1:46 PM, Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> 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. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>