From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7EFFC61DA4 for ; Mon, 13 Mar 2023 19:11:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229800AbjCMTLF (ORCPT ); Mon, 13 Mar 2023 15:11:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60820 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230395AbjCMTKv (ORCPT ); Mon, 13 Mar 2023 15:10:51 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CAE4A75A6C for ; Mon, 13 Mar 2023 12:10:40 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 83B70B81203 for ; Mon, 13 Mar 2023 19:10:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 19D4BC433EF; Mon, 13 Mar 2023 19:10:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1678734638; bh=IdOvUfdqf3kELLKtJceAGQlGOnVbj7LmZxSpWa7DF5k=; h=Date:To:From:Subject:From; b=NRnGUEgmNd8drInDnNbkp2xfw+oPskRObIzXplH02IQnr1idxhmfCvj7zj11Mpmx/ olZD+QwczQ/xi8KBjPBhntka3z87aTJWnSssLUHuzBGfNUuP5MXIIsf6Pr4z8rP7Dt mesTF0hDeNej3tPAPMeMkKh9Xk5og0yQEDRVE5qs= Date: Mon, 13 Mar 2023 12:10:37 -0700 To: mm-commits@vger.kernel.org, vbabka@suse.cz, tkhai@ya.ru, sultan@kerneltoast.com, shy828301@gmail.com, shakeelb@google.com, roman.gushchin@linux.dev, penguin-kernel@i-love.sakura.ne.jp, paulmck@kernel.org, muchun.song@linux.dev, mhocko@kernel.org, hannes@cmpxchg.org, david@redhat.com, dave@stgolabs.net, christian.koenig@amd.com, zhengqi.arch@bytedance.com, akpm@linux-foundation.org From: Andrew Morton Subject: + mm-vmscan-remove-shrinker_rwsem-from-synchronize_shrinkers.patch added to mm-unstable branch Message-Id: <20230313191038.19D4BC433EF@smtp.kernel.org> Precedence: bulk Reply-To: linux-kernel@vger.kernel.org List-ID: X-Mailing-List: mm-commits@vger.kernel.org The patch titled Subject: mm: vmscan: remove shrinker_rwsem from synchronize_shrinkers() has been added to the -mm mm-unstable branch. Its filename is mm-vmscan-remove-shrinker_rwsem-from-synchronize_shrinkers.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-vmscan-remove-shrinker_rwsem-from-synchronize_shrinkers.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Qi Zheng Subject: mm: vmscan: remove shrinker_rwsem from synchronize_shrinkers() Date: Mon, 13 Mar 2023 19:28:18 +0800 Currently, the synchronize_shrinkers() is only used by TTM pool. It only requires that no shrinkers run in parallel, and doesn't care about registering and unregistering of shrinkers. Since slab shrink is protected by SRCU, synchronize_srcu() is sufficient to ensure that no shrinker is running in parallel. So the shrinker_rwsem in synchronize_shrinkers() is no longer needed, just remove it. Link: https://lkml.kernel.org/r/20230313112819.38938-8-zhengqi.arch@bytedance.com Signed-off-by: Qi Zheng Acked-by: Vlastimil Babka Acked-by: Kirill Tkhai Cc: Christian König Cc: David Hildenbrand Cc: Davidlohr Bueso Cc: Johannes Weiner Cc: Michal Hocko Cc: Muchun Song Cc: Paul E. McKenney Cc: Roman Gushchin Cc: Shakeel Butt Cc: Sultan Alsawaf Cc: Tetsuo Handa Cc: Yang Shi Signed-off-by: Andrew Morton --- --- a/mm/vmscan.c~mm-vmscan-remove-shrinker_rwsem-from-synchronize_shrinkers +++ a/mm/vmscan.c @@ -790,15 +790,11 @@ EXPORT_SYMBOL(unregister_shrinker); /** * synchronize_shrinkers - Wait for all running shrinkers to complete. * - * This is equivalent to calling unregister_shrink() and register_shrinker(), - * but atomically and with less overhead. This is useful to guarantee that all - * shrinker invocations have seen an update, before freeing memory, similar to - * rcu. + * This is useful to guarantee that all shrinker invocations have seen an + * update, before freeing memory. */ void synchronize_shrinkers(void) { - down_write(&shrinker_rwsem); - up_write(&shrinker_rwsem); atomic_inc(&shrinker_srcu_generation); synchronize_srcu(&shrinker_srcu); } _ Patches currently in -mm which might be from zhengqi.arch@bytedance.com are mm-vmscan-add-a-map_nr_max-field-to-shrinker_info.patch mm-vmscan-make-global-slab-shrink-lockless.patch mm-vmscan-make-memcg-slab-shrink-lockless.patch mm-shrinkers-make-count-and-scan-in-shrinker-debugfs-lockless.patch mm-vmscan-hold-write-lock-to-reparent-shrinker-nr_deferred.patch mm-vmscan-remove-shrinker_rwsem-from-synchronize_shrinkers.patch mm-shrinkers-convert-shrinker_rwsem-to-mutex.patch