From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753610AbdKJSQS (ORCPT ); Fri, 10 Nov 2017 13:16:18 -0500 Received: from mail-wm0-f42.google.com ([74.125.82.42]:40045 "EHLO mail-wm0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753562AbdKJSQR (ORCPT ); Fri, 10 Nov 2017 13:16:17 -0500 X-Google-Smtp-Source: AGs4zMYiDZyEBPRUL7WhezExoGUKhZ8Uk3qBkBEMkEyLSnnhlW+uxJ3pgvE2JgqWptUTsLcdatWUHD9tQt8hHqLEiCE= MIME-Version: 1.0 In-Reply-To: <201711100646.IJH39597.HOtMLJVSFOQFOF@I-love.SAKURA.ne.jp> References: <20171108173740.115166-1-shakeelb@google.com> <2940c150-577a-30a8-fac3-cf59a49b84b4@I-love.SAKURA.ne.jp> <201711100646.IJH39597.HOtMLJVSFOQFOF@I-love.SAKURA.ne.jp> From: Shakeel Butt Date: Fri, 10 Nov 2017 10:16:14 -0800 Message-ID: Subject: Re: [PATCH v2] mm, shrinker: make shrinker_list lockless To: Tetsuo Handa Cc: Minchan Kim , Huang Ying , Mel Gorman , Vladimir Davydov , Michal Hocko , Greg Thelen , Johannes Weiner , Andrew Morton , Linux MM , LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Nov 9, 2017 at 1:46 PM, Tetsuo Handa 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.