From patchwork Wed May 31 09:57:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101315 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2767396vqr; Wed, 31 May 2023 03:17:02 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7dTYbC2SMIuRvaRfiOwyTD+oiMV4WGZ/oehDNCzOf5cmWzL6SbBJiWjoTDTmBLUi6RB+0l X-Received: by 2002:a17:90a:ca96:b0:24e:d06:6912 with SMTP id y22-20020a17090aca9600b0024e0d066912mr5598338pjt.18.1685528221912; Wed, 31 May 2023 03:17:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528221; cv=none; d=google.com; s=arc-20160816; b=bAaYE7Z8GhFc7o3aywcz7LM1mZKXGI6GpsAxAni3bb4YgphK1rIDt/bNpiGKE0yoTF MGyOHGcbOD4PEw3mCyJJkCrK/GrAwq7y6qqI/AgJ23uUbNRXAHcXpxfW/VaEc6FGbq9g Sd9XdjbiP0KHk6pfIZXDQ/qt0mNMVeKhPYwh8yE6Je+k/NTHzVpKItRFZ+w4hngZcQgr DpLcVpOVf+P18L4mZxdocZU4pw9UOS7t7aQujhXAq4n3R6yvvSXOYiG7lkPxJDC3x6zV 8dkfffy/q09Q8P1n8AMr0zuax7tDqX6m3xm6ki1o2KI58DvnDP4JbRBrJyW8gAmVd7Tw QmjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=lnzxWyBrjsXVofp7h2XNt51t4g+fsU+gJXs/ea1cFR8=; b=vfamujn6S6Z/js9a9wqrEWaFetZ8ZKli/CCTTk/MMwB+1qFihQsz4bIOwgQu2kLOsI /tNqt/jN9nTD35ALHKCqg+I5PYDMTSZY0GiWmBNyxKvOMromLG5lvp5X+2NejdsqDEm+ 9AA87qG5FN0SGwvGlF/vYjUbMsVzed+mQzPXu3+n2MF1U4H+/erOFNyJNSXnC3t38Sap 4BBvwzOOTnHX5DP828AikKnmiDpIE3rvG7UIzP3AsO0ux+FKgYYHl36pPw1yqQHBgvoz fNA7fCW6w9GbRzrYsq7fQSV1emYEX9sENwOkcbMS9Gbl+BAue7N+hKfe08o04toIZsdM KfEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=sxRHWVlL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b1-20020a17090a800100b0024e47fae466si664960pjn.180.2023.05.31.03.16.49; Wed, 31 May 2023 03:17:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=sxRHWVlL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235698AbjEaJ6y (ORCPT + 99 others); Wed, 31 May 2023 05:58:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232884AbjEaJ6q (ORCPT ); Wed, 31 May 2023 05:58:46 -0400 Received: from out-2.mta0.migadu.com (out-2.mta0.migadu.com [IPv6:2001:41d0:1004:224b::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 391FD12B for ; Wed, 31 May 2023 02:58:24 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527099; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lnzxWyBrjsXVofp7h2XNt51t4g+fsU+gJXs/ea1cFR8=; b=sxRHWVlLu+rreVBFxwIJMsPglUs7BP6JtCkUt3t8Jj4/N9ua1Q2/SjbYdZXtKFG7R9C7pt 2t9WN+oDIJxf1PqTSf920IDKgkWQRBFGYeyKYjIsrWLrD8tL2dxfTRirVmdU/LhybNhnyd QK69UVOEAmxZHnZIIPi+vT1ngAY56cU= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 1/8] mm: vmscan: move shrinker_debugfs_remove() before synchronize_srcu() Date: Wed, 31 May 2023 09:57:35 +0000 Message-Id: <20230531095742.2480623-2-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404440934625188?= X-GMAIL-MSGID: =?utf-8?q?1767404440934625188?= From: Qi Zheng The debugfs_remove_recursive() will wait for debugfs_file_put() to return, so there is no need to put it after synchronize_srcu() to wait for the rcu read-side critical section to exit. Just move it before synchronize_srcu(), which is also convenient to put the heavy synchronize_srcu() in the delayed work later. Signed-off-by: Qi Zheng --- mm/vmscan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index eeca83e28c9b..a773e97e152e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -818,11 +818,11 @@ void unregister_shrinker(struct shrinker *shrinker) debugfs_entry = shrinker_debugfs_detach(shrinker, &debugfs_id); mutex_unlock(&shrinker_mutex); + shrinker_debugfs_remove(debugfs_entry, debugfs_id); + atomic_inc(&shrinker_srcu_generation); synchronize_srcu(&shrinker_srcu); - shrinker_debugfs_remove(debugfs_entry, debugfs_id); - kfree(shrinker->nr_deferred); shrinker->nr_deferred = NULL; } From patchwork Wed May 31 09:57:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101314 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2766695vqr; Wed, 31 May 2023 03:15:36 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5FxJ11JQEJ4ZZSRP7T6bosXJut0zyqyUSvM64VzzmzmSnwDfxHLGI8iIST4O3POywV46dq X-Received: by 2002:a05:6a00:2393:b0:64d:2a87:2596 with SMTP id f19-20020a056a00239300b0064d2a872596mr7654345pfc.10.1685528136274; Wed, 31 May 2023 03:15:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528136; cv=none; d=google.com; s=arc-20160816; b=SQ2lz1DuKmGBBMZBxURhzcbalgjz6p9Zpe4KDLpg0fKCKsOpB0wXM4kdVQmB/7CYxn UL+FczQhFHNQvG7+sb2ON4tZVFuWB7BzXKl3zYOdbK6QhNNGx3MP1KgC1EvmrJz/JEx0 javmPuaHLsBCpKAf0x0SipY0x0QdQ1BfoQ0zvl+hSPpe8oCiRhfDyWZD4Y/lxFOKg+Aj P8AT6fyjDxBWQg04vpcI6LbFO3CJ1QubAkDY4hHptJfgQdqwu1CHG+kHxgqXaEXeDoGT 5LT1DbEJ4uhFfEEQqGgrpaE1+2qg3G4E3DhnDm6MdHFzjQMzS0GVv9Bpicxzstkj3WAh jVbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZzyzkXd70pYEdWJhGutN+U1hmZmD/p5d/wpcM6Ajy+8=; b=iTgK7yqK7fThhM+JgL60CqT53dbj96YUcsyD3JTFD4UV6Df01nTfjYRO+/w6pTSdKM CSAtBA65wSgearAtW6sOz+st8RdRSORA5sR26+a3YOQvPTsrh/omX3LaalCMrUyfx5+6 WdjuBIp6PKUlKktFxV61iorxoLXIlJi2dO7DL44uSzelcweKceEypEUYwPaQhsVKdZEq WZmLu6v80ouOF5e0MFr9wMSN83c+dFWHLvup+P76dH8TJyvgXILrjEeim04UwWf4SFQg EokNd1kYeqSz/25PtszJFgMjKgNt3CzXuX4rxMbPqhHvYfyhshDqHFHWX2aXccMDl5zv isXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=ZihWgnR2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k7-20020a635607000000b0053f047e96a2si767568pgb.94.2023.05.31.03.15.24; Wed, 31 May 2023 03:15:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=ZihWgnR2; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235694AbjEaJ65 (ORCPT + 99 others); Wed, 31 May 2023 05:58:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232459AbjEaJ6x (ORCPT ); Wed, 31 May 2023 05:58:53 -0400 Received: from out-21.mta0.migadu.com (out-21.mta0.migadu.com [IPv6:2001:41d0:1004:224b::15]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDF9CE50 for ; Wed, 31 May 2023 02:58:28 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527104; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZzyzkXd70pYEdWJhGutN+U1hmZmD/p5d/wpcM6Ajy+8=; b=ZihWgnR2scrQOnB2k5nDPiR/oFSAGcE5oxTl8DJZlC6c35SkDHP860/TT0nEoqYq/lrcq1 d6CKRaCpb2dkgODgBX/qkpML3eCN0n5h1kziLNHv4ErGYZOVxBG6L8XG40g2Y8QxSO+u0s Pr9f8hmxkoCyCfWi4RAZ5pmhxQ/yWCA= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 2/8] mm: vmscan: split unregister_shrinker() Date: Wed, 31 May 2023 09:57:36 +0000 Message-Id: <20230531095742.2480623-3-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404351124374495?= X-GMAIL-MSGID: =?utf-8?q?1767404351124374495?= From: Kirill Tkhai This and the next patches in this series aim to make time effect of synchronize_srcu() invisible for user. The patch splits unregister_shrinker() in two functions: unregister_shrinker_delayed_initiate() unregister_shrinker_delayed_finalize() and shrinker users may make the second of them to be called asynchronous (e.g., from workqueue). Next patches make superblock shrinker to follow this way, so user-visible umount() time won't contain delays from synchronize_srcu(). Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- include/linux/shrinker.h | 2 ++ mm/vmscan.c | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h index 224293b2dd06..e9d5a19d83fe 100644 --- a/include/linux/shrinker.h +++ b/include/linux/shrinker.h @@ -102,6 +102,8 @@ extern void register_shrinker_prepared(struct shrinker *shrinker); extern int __printf(2, 3) register_shrinker(struct shrinker *shrinker, const char *fmt, ...); extern void unregister_shrinker(struct shrinker *shrinker); +extern void unregister_shrinker_delayed_initiate(struct shrinker *shrinker); +extern void unregister_shrinker_delayed_finalize(struct shrinker *shrinker); extern void free_prealloced_shrinker(struct shrinker *shrinker); extern void synchronize_shrinkers(void); diff --git a/mm/vmscan.c b/mm/vmscan.c index a773e97e152e..baf8d2327d70 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -799,10 +799,7 @@ int register_shrinker(struct shrinker *shrinker, const char *fmt, ...) #endif EXPORT_SYMBOL(register_shrinker); -/* - * Remove one - */ -void unregister_shrinker(struct shrinker *shrinker) +void unregister_shrinker_delayed_initiate(struct shrinker *shrinker) { struct dentry *debugfs_entry; int debugfs_id; @@ -819,6 +816,13 @@ void unregister_shrinker(struct shrinker *shrinker) mutex_unlock(&shrinker_mutex); shrinker_debugfs_remove(debugfs_entry, debugfs_id); +} +EXPORT_SYMBOL(unregister_shrinker_delayed_initiate); + +void unregister_shrinker_delayed_finalize(struct shrinker *shrinker) +{ + if (!shrinker->nr_deferred) + return; atomic_inc(&shrinker_srcu_generation); synchronize_srcu(&shrinker_srcu); @@ -826,6 +830,16 @@ void unregister_shrinker(struct shrinker *shrinker) kfree(shrinker->nr_deferred); shrinker->nr_deferred = NULL; } +EXPORT_SYMBOL(unregister_shrinker_delayed_finalize); + +/* + * Remove one + */ +void unregister_shrinker(struct shrinker *shrinker) +{ + unregister_shrinker_delayed_initiate(shrinker); + unregister_shrinker_delayed_finalize(shrinker); +} EXPORT_SYMBOL(unregister_shrinker); /** From patchwork Wed May 31 09:57:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101328 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2769976vqr; Wed, 31 May 2023 03:22:17 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6SNzy55i4Mes3B99apqqHX/N3aHEWGq9P8c6MNZVZJTM7YofhMUND7OH8aoLf5uBiPHmvk X-Received: by 2002:a17:90a:e2d7:b0:24b:52cb:9a31 with SMTP id fr23-20020a17090ae2d700b0024b52cb9a31mr14446969pjb.22.1685528537568; Wed, 31 May 2023 03:22:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528537; cv=none; d=google.com; s=arc-20160816; b=tM+CzK4Htb4KlJxZL8W8tybaJc9RSqx+mfw/KLMVg2PHzikpnDlezCcsxCLaeILAWh 10L32+dYt0VaujOm9HSJCg+jewfsXMrqqLTtSJWbBcKrtD79PD0ylctBVJLlzwMCxp37 PXSXA89oYPZLNeuOxuAH73UrQI0uptjD+1scgdNtYTS9Xj7V96ooxNCnTUNbwD9ndYpy HsaaNpcrDc3i2yWd/8EeYuFk51YdwgZSV6Jlh/xbRFrnPcQ+uCucBETyjwvGOuUsJlSw C34Zbh10Y2yZuCKucRgeN9lIZGQmEAaoUrPxRDkpsm6h8TC73arBaGclqivJLwMioIJd QsuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=E+T6MU8ntbBOvHLVHWyWd2NDGkscltn2p+HVjRapVkY=; b=ciTEQ4EjG1/tkhUm7c2LLLWvC1b1PsszlMtxoOlG8MO/yyAeZj9PIO69yK2u/ebOtO +ppUhLhv0gqJtXQkM9mOPuUzhgJKsFjFBNFMiwsD/PltwYqT6+dlR4E7wcpYcOtU0VoV NScJf7ykEzDwAA3gGbSCkk8yZQvxiD+856SknKCVqlpNJ3I7rG16RaBgQVLW6qX8NWBR a5fIKMs4nr3NPSSWb34WV/oKtIyfxttJ4zZXO8PY59WjJOv9usyYzEa8otabSfu2XO4C 6xLY2bUueLcRf8U9dtyvVgOL/fRG8wI+I+easuOmLXIqzQRxrDSD5l+Amh+ZoApQz7PL zZbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=aqACCvCW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fv6-20020a17090b0e8600b00256bb961a29si785688pjb.35.2023.05.31.03.22.04; Wed, 31 May 2023 03:22:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=aqACCvCW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235695AbjEaJ7B (ORCPT + 99 others); Wed, 31 May 2023 05:59:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54404 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235719AbjEaJ6z (ORCPT ); Wed, 31 May 2023 05:58:55 -0400 Received: from out-7.mta0.migadu.com (out-7.mta0.migadu.com [IPv6:2001:41d0:1004:224b::7]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D13718F for ; Wed, 31 May 2023 02:58:30 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E+T6MU8ntbBOvHLVHWyWd2NDGkscltn2p+HVjRapVkY=; b=aqACCvCWYJ0Y4210xFVIKOz1nuLZMkNqtH4dgIpFYFS1UqcYGGT2q8rSFyFjyZK7Pydu3w AuV1qecNPdxf4ytiJQpoRe0LH1oNWMkq+SrmRCO9rTKGu8v6q1BZVpGwerN8shJucy3Wif OiE0gEWmKmuhpBJRVVQpYf7vzkydq24= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 3/8] fs: move list_lru_destroy() to destroy_super_work() Date: Wed, 31 May 2023 09:57:37 +0000 Message-Id: <20230531095742.2480623-4-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404771424518182?= X-GMAIL-MSGID: =?utf-8?q?1767404771424518182?= From: Kirill Tkhai The patch makes s_dentry_lru and s_inode_lru be destroyed later from the workqueue. This is preparation to split unregister_shrinker(super_block::s_shrink) in two stages, and to call finalize stage from destroy_super_work(). Note, that generic filesystem shrinker unregistration is safe to be split in two stages right after this patch, since super_cache_count() and super_cache_scan() have a deal with s_dentry_lru and s_inode_lru only. But there are two exceptions: XFS and SHMEM, which define .nr_cached_objects() and .free_cached_objects() callbacks. These two do not allow us to do the splitting right after this patch. They touch fs-specific data, which is destroyed earlier, than destroy_super_work(). So, we can't call unregister_shrinker_delayed_finalize() from destroy_super_work() because of them, and next patches make preparations to make this possible. Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- fs/super.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/fs/super.c b/fs/super.c index 8d8d68799b34..2ce4c72720f3 100644 --- a/fs/super.c +++ b/fs/super.c @@ -159,6 +159,11 @@ static void destroy_super_work(struct work_struct *work) destroy_work); int i; + WARN_ON(list_lru_count(&s->s_dentry_lru)); + WARN_ON(list_lru_count(&s->s_inode_lru)); + list_lru_destroy(&s->s_dentry_lru); + list_lru_destroy(&s->s_inode_lru); + for (i = 0; i < SB_FREEZE_LEVELS; i++) percpu_free_rwsem(&s->s_writers.rw_sem[i]); kfree(s); @@ -177,8 +182,6 @@ static void destroy_unused_super(struct super_block *s) if (!s) return; up_write(&s->s_umount); - list_lru_destroy(&s->s_dentry_lru); - list_lru_destroy(&s->s_inode_lru); security_sb_free(s); put_user_ns(s->s_user_ns); kfree(s->s_subtype); @@ -287,8 +290,6 @@ static void __put_super(struct super_block *s) { if (!--s->s_count) { list_del_init(&s->s_list); - WARN_ON(s->s_dentry_lru.node); - WARN_ON(s->s_inode_lru.node); WARN_ON(!list_empty(&s->s_mounts)); security_sb_free(s); put_user_ns(s->s_user_ns); @@ -330,14 +331,6 @@ void deactivate_locked_super(struct super_block *s) unregister_shrinker(&s->s_shrink); fs->kill_sb(s); - /* - * Since list_lru_destroy() may sleep, we cannot call it from - * put_super(), where we hold the sb_lock. Therefore we destroy - * the lru lists right now. - */ - list_lru_destroy(&s->s_dentry_lru); - list_lru_destroy(&s->s_inode_lru); - put_filesystem(fs); put_super(s); } else { From patchwork Wed May 31 09:57:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101325 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2769608vqr; Wed, 31 May 2023 03:21:34 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7zmOB3zXilMznoixG/mY7jKr3u0KJs9Cn8J6ASq1LSzj7pCjK4L/7ocj7yjnOfr85PA3E2 X-Received: by 2002:a05:6a00:98f:b0:645:c730:f826 with SMTP id u15-20020a056a00098f00b00645c730f826mr5247984pfg.24.1685528494012; Wed, 31 May 2023 03:21:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528493; cv=none; d=google.com; s=arc-20160816; b=NUdszfnx7MImD4z9J1Pg12PiR4VVcMYjpjHr8ADYgQPuLLqS7OfTK5Emxz4I5V7HPe MP4fnajH9IWMGBel7dXM6iYd2cchdQgPsRQ/a3iDbxZazhWs4QTpUFGim8l0Dtmwdn3B McgAMoh4MmvFXT7wIdlKEEMsMx5u8pAuH616aK1OhlpwJi5/eeM1XBqsazuNcZXUPebK eo+x50C4rpJF0ulx5nvjO8u4z4kRtryicT22iPB4fUs4yw8qM98FUzzQpe2noWQECBne xwVVOKF5UjIGp4prA5oUyY0D0WlkW9giacAe/19BMsv7PwAHLQAS5KMYY9Ena6v8I9yW B9LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+ES1OZTmJM6HPZiOufnJqkIPYyFHG+uxk+XMAxdW/H0=; b=E/OMVltG6IqzkMoFa/Pgn6zS9jvK1Sn5858i6dki7viCFlAVv4XS6tCedwMfIMKGRC th3xC5/SqOMuICMBxNXxdKPX6Po1KzmVUcdhXqGfo5h4yz3U272+fnMSn9lAcplK+rcT FbJyDdCDAwqlZCKAGeShHgrCq8EBfIqPxSIAeOJUUhFhS/hP2II/gRbR+nmaZyIALXXn 8Xu6Gavi9H2Q6jOMKsvymR7dIecmsrSgAF4DIFHlWnahD7onPvCC4sToOAFWL+kHGdST Yh2FvyuNa0HOnoL3XtIaKcTbTTNIf+QGOs6Acee4dd+mLTERQfwfrav/nxCd4yZlVFyu fkoA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=pME7V5sg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f195-20020a6238cc000000b0064d48952fd6si1577455pfa.28.2023.05.31.03.21.20; Wed, 31 May 2023 03:21:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=pME7V5sg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235726AbjEaJ7O (ORCPT + 99 others); Wed, 31 May 2023 05:59:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235745AbjEaJ7G (ORCPT ); Wed, 31 May 2023 05:59:06 -0400 Received: from out-7.mta0.migadu.com (out-7.mta0.migadu.com [91.218.175.7]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 043E4124 for ; Wed, 31 May 2023 02:58:41 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527112; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+ES1OZTmJM6HPZiOufnJqkIPYyFHG+uxk+XMAxdW/H0=; b=pME7V5sghWDhiBYKlYhlIGGcd+I8ZIhtp+E9A11aBMxPx6kduDLdGh2+5uOlz/UhrC8USH AInETjEYhvnYApFG/QCWzh1ONDgIapx8Zsu0DP7P6tbY+y9jVOZnflKJtLkCkwkXmah55p +X/uwLrssbh7WgAqh01669o0MFk+pHM= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 4/8] fs: shrink only (SB_ACTIVE|SB_BORN) superblocks in super_cache_scan() Date: Wed, 31 May 2023 09:57:38 +0000 Message-Id: <20230531095742.2480623-5-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404726179978773?= X-GMAIL-MSGID: =?utf-8?q?1767404726179978773?= From: Kirill Tkhai This patch prepares superblock shrinker for delayed unregistering. It makes super_cache_scan() avoid shrinking of not active superblocks. SB_ACTIVE is used as such the indicator. In case of superblock is not active, super_cache_scan() just exits with SHRINK_STOP as result. Note, that SB_ACTIVE is cleared in generic_shutdown_super() and this is made under the write lock of s_umount. Function super_cache_scan() also takes the read lock of s_umount, so it can't skip this flag cleared. SB_BORN check is added to super_cache_scan() just for uniformity with super_cache_count(), while super_cache_count() received SB_ACTIVE check just for uniformity with super_cache_scan(). After this patch super_cache_scan() becomes to ignore unregistering superblocks, so this function is OK with splitting unregister_shrinker(). Next patches prepare super_cache_count() to follow this way. Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- fs/super.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/super.c b/fs/super.c index 2ce4c72720f3..2ce54561e82e 100644 --- a/fs/super.c +++ b/fs/super.c @@ -79,6 +79,11 @@ static unsigned long super_cache_scan(struct shrinker *shrink, if (!trylock_super(sb)) return SHRINK_STOP; + if ((sb->s_flags & (SB_BORN|SB_ACTIVE)) != (SB_BORN|SB_ACTIVE)) { + freed = SHRINK_STOP; + goto unlock; + } + if (sb->s_op->nr_cached_objects) fs_objects = sb->s_op->nr_cached_objects(sb, sc); @@ -110,6 +115,7 @@ static unsigned long super_cache_scan(struct shrinker *shrink, freed += sb->s_op->free_cached_objects(sb, sc); } +unlock: up_read(&sb->s_umount); return freed; } @@ -136,7 +142,7 @@ static unsigned long super_cache_count(struct shrinker *shrink, * avoid this situation, so do the same here. The memory barrier is * matched with the one in mount_fs() as we don't hold locks here. */ - if (!(sb->s_flags & SB_BORN)) + if ((sb->s_flags & (SB_BORN|SB_ACTIVE)) != (SB_BORN|SB_ACTIVE)) return 0; smp_rmb(); From patchwork Wed May 31 09:57:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101322 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2769308vqr; Wed, 31 May 2023 03:21:02 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7krI8P/r0Zu/FDv4jSkM8nS6L75dbV1UjzpiDRrRjHuO/HRs3ZLR3ik+xFHYWFpaqPHLek X-Received: by 2002:a05:6a20:549a:b0:10f:fea:1997 with SMTP id i26-20020a056a20549a00b0010f0fea1997mr6426223pzk.5.1685528462564; Wed, 31 May 2023 03:21:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528462; cv=none; d=google.com; s=arc-20160816; b=p8yPQr1HMsuzFSLU3/5nNjYb0D5cIgQYCG8a3xN9e+0UZ8ANC1ooWGK7GSxk51EG+o loLSfiQuTFcPIdWeK1stymGeTW47G6f2UhUSZcKPxWalHbs28iGzK2v1yRNejuRt0ZaT b64D20wlhJRYiY0cI2FeG/g2Gu7uP20d4jsYyEHjrJnotKw6DEvhK/p/Rz1siyBpivyb fF1UuwTs/EzEXXTZm8GutfmmynaSmWT++l26PM/Jp2onv6cuEFXxzNRYzT7yFuzhL1ny H3wcCIwJ+gm4YHbrsCKNnfu6HJA2CTja7ZLIgDDadUtxuUO5FvJRpmjZ1WBJiOYVkntj 4srg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TtT/YiPGcEdmTG9OAN3DQ5AumhKObXT9/Vj+qIl0WEg=; b=VOmcg//aVc504FKMX61TG5KXXpyA7N09DTll+TEmIcx81snwyvDjN9AjMs3ge5YK3K gtDwB4OxeSp89F1vOotnU0ZQwBZuLQxhJOIc0hooJy0Pv11fClLjXEGMOWqOy+412w1F 0JO8Pl582NU4a2E1UyGmgo7Jnj+jwZTgeJwZ7WXwsCHzm1zvqNXVdmY7ulQ7/wVG31C4 S1/SLjbfJoc4RNHzo3JFArUSNPgs52ywdMdOhJCV6zMuGID/2WiOHZgOMlOeIoa4V2vK EAP7seibhu8G85CeICh73jhP3MdsLmM/MEBjnF+erpIdXQouzPlasCzy0b95BFR1oda6 HQrw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=PlSv9IPm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j12-20020a633c0c000000b00534866eb2c2si698901pga.835.2023.05.31.03.20.48; Wed, 31 May 2023 03:21:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=PlSv9IPm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235233AbjEaJ7S (ORCPT + 99 others); Wed, 31 May 2023 05:59:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54624 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235734AbjEaJ7I (ORCPT ); Wed, 31 May 2023 05:59:08 -0400 Received: from out-47.mta0.migadu.com (out-47.mta0.migadu.com [91.218.175.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 907D71B1 for ; Wed, 31 May 2023 02:58:44 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527116; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TtT/YiPGcEdmTG9OAN3DQ5AumhKObXT9/Vj+qIl0WEg=; b=PlSv9IPmuSHjdrKvEPl7w4TEiIOKkc/t+uD+8kCUMyQjVkWRlPkNzabQJ7hHCOKGaBYK7W bUUNx1CrZkZITlDuz0x6psukNLY7bBJ0k/0MQR2aKvy2s33NxB3JNm4Ms6dXTNpvioEckI QgaCfDLB4ZAFsh5XY9kozVeBEH/jkVw= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 5/8] fs: introduce struct super_operations::destroy_super() callback Date: Wed, 31 May 2023 09:57:39 +0000 Message-Id: <20230531095742.2480623-6-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404693013692383?= X-GMAIL-MSGID: =?utf-8?q?1767404693013692383?= From: Kirill Tkhai The patch introduces a new callback, which will be called asynchronous from delayed work. This will allows to make ::nr_cached_objects() safe to be called on destroying superblock in next patches, and to split unregister_shrinker() into two primitives. Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- fs/super.c | 3 +++ include/linux/fs.h | 1 + 2 files changed, 4 insertions(+) diff --git a/fs/super.c b/fs/super.c index 2ce54561e82e..4e9d08224f86 100644 --- a/fs/super.c +++ b/fs/super.c @@ -170,6 +170,9 @@ static void destroy_super_work(struct work_struct *work) list_lru_destroy(&s->s_dentry_lru); list_lru_destroy(&s->s_inode_lru); + if (s->s_op->destroy_super) + s->s_op->destroy_super(s); + for (i = 0; i < SB_FREEZE_LEVELS; i++) percpu_free_rwsem(&s->s_writers.rw_sem[i]); kfree(s); diff --git a/include/linux/fs.h b/include/linux/fs.h index 0b54ac1d331b..30b46d0facfc 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1910,6 +1910,7 @@ struct super_operations { int (*drop_inode) (struct inode *); void (*evict_inode) (struct inode *); void (*put_super) (struct super_block *); + void (*destroy_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); int (*freeze_super) (struct super_block *); int (*freeze_fs) (struct super_block *); From patchwork Wed May 31 09:57:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101312 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2765530vqr; Wed, 31 May 2023 03:13:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7roCzHQj6mjj7PJpLWrJJcJeBWVfDo7m09qbeaN7xZGi8xXfQRM2uhCGkgB1D1WNp5P0J2 X-Received: by 2002:a17:90a:1dd:b0:258:7fae:dce with SMTP id 29-20020a17090a01dd00b002587fae0dcemr695319pjd.24.1685527997983; Wed, 31 May 2023 03:13:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685527997; cv=none; d=google.com; s=arc-20160816; b=wdhRh6JShxK0GdRh8aFPc+Ua/sYj9TTAdMBbMdJEDwgxcPR2jH8wpm4OMI3Znk30GB A2UPnC+IJIS/4mAO72xxsLbVdodeayhEVfmf9j35FG1ATaWp7VboeqH38ZwgTWAyWSO5 QPuxsXKg0mnjHsz626eCCNKbCoZVZIR2kbGmEIL/G407CAHuVUh/vy2ZMjjVmUWk6Qbp 0o80SeFny9jyA0ngaLkMp4Nozja5Dzuwpp5b2Q4ch/LULkV+RFPVO8M+n/D3qeBCLUEU jbU5x5s7ZW3Jn2L9AODCL9wWluas8TvHrKOSkSnv2AhEQhDuCDa9UzxVWWzGAFfprZjN CR2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=E1v6Nmr+iDUp1so91WjqnHTNpH9v5OnKQ0PJi2AfGq4=; b=R0dIRizowxzi3IDVe3eqI0FxnfzfFHma/CE4RFy/7DTmn6zkpMVH2ad12YfLjx1Wy5 IMrfRx2y4qgbgMijLGPeGjJAlnqYSUjwrSFlyg4u2kg0Q27t3iLu3xJX7luhGuf+9dyT sN+4l7YzGUsHvyg1Y8fnSu7UXrXI6UL4hwyOUMeHNAnAWicQ5GbRw72hz0kjTo4xhJrF 37ovm1PhakXJxxDWKVoL9Ah6burJg+/L/5xzu8+vFp1E9PuDUxTP4ICaPfw7lIlKoqXt c6bZXu+dzh0LS7hgDPQCOV2KWj6fgwH/g633va0vDBmbogPGEpDNZkkIk33HAvX+kU4h /eSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=rS4mRe4L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k68-20020a633d47000000b00517ab01bb8fsi763460pga.100.2023.05.31.03.13.06; Wed, 31 May 2023 03:13:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=rS4mRe4L; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235713AbjEaJ7Q (ORCPT + 99 others); Wed, 31 May 2023 05:59:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230300AbjEaJ7H (ORCPT ); Wed, 31 May 2023 05:59:07 -0400 Received: from out-62.mta0.migadu.com (out-62.mta0.migadu.com [IPv6:2001:41d0:1004:224b::3e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05BC9180 for ; Wed, 31 May 2023 02:58:43 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527121; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E1v6Nmr+iDUp1so91WjqnHTNpH9v5OnKQ0PJi2AfGq4=; b=rS4mRe4LmeoSOb/mL2JDcthPretqgBkrv8Kq1Nka9fPmRIXJQ4mg/9Wg8Bj9SViBUA7yr6 PoZXbDH9wstFXz3FQzUyM1geHY3OxQh815EPwbi4X/Zntio/xy3pCNOacpjQfTALY9gKYI zTMcUPF8nNFvCOF+ZtfaP9t9mQ6pBAk= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 6/8] xfs: introduce xfs_fs_destroy_super() Date: Wed, 31 May 2023 09:57:40 +0000 Message-Id: <20230531095742.2480623-7-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404206455094396?= X-GMAIL-MSGID: =?utf-8?q?1767404206455094396?= From: Kirill Tkhai xfs_fs_nr_cached_objects() touches sb->s_fs_info, and this patch makes it to be destructed later. After this patch xfs_fs_nr_cached_objects() is safe for splitting unregister_shrinker(): mp->m_perag_tree is stable till destroy_super_work(), while iteration over it is already RCU-protected by internal XFS business. Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- fs/xfs/xfs_super.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 7e706255f165..694616524c76 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -743,11 +743,18 @@ xfs_fs_drop_inode( } static void -xfs_mount_free( +xfs_free_names( struct xfs_mount *mp) { kfree(mp->m_rtname); kfree(mp->m_logname); +} + +static void +xfs_mount_free( + struct xfs_mount *mp) +{ + xfs_free_names(mp); kmem_free(mp); } @@ -1136,8 +1143,19 @@ xfs_fs_put_super( xfs_destroy_mount_workqueues(mp); xfs_close_devices(mp); - sb->s_fs_info = NULL; - xfs_mount_free(mp); + xfs_free_names(mp); +} + +static void +xfs_fs_destroy_super( + struct super_block *sb) +{ + if (sb->s_fs_info) { + struct xfs_mount *mp = XFS_M(sb); + + kmem_free(mp); + sb->s_fs_info = NULL; + } } static long @@ -1165,6 +1183,7 @@ static const struct super_operations xfs_super_operations = { .dirty_inode = xfs_fs_dirty_inode, .drop_inode = xfs_fs_drop_inode, .put_super = xfs_fs_put_super, + .destroy_super = xfs_fs_destroy_super, .sync_fs = xfs_fs_sync_fs, .freeze_fs = xfs_fs_freeze, .unfreeze_fs = xfs_fs_unfreeze, From patchwork Wed May 31 09:57:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101313 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2766081vqr; Wed, 31 May 2023 03:14:21 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6as3C+QZScp2VM2Y//IPQkngB7ML2emF46t5e5s5AGE1CytuA2u2GY/BuJkhm/urr22GWp X-Received: by 2002:a05:6870:628a:b0:19f:6af1:87f8 with SMTP id s10-20020a056870628a00b0019f6af187f8mr2783777oan.41.1685528061121; Wed, 31 May 2023 03:14:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528061; cv=none; d=google.com; s=arc-20160816; b=aBAssuS76aUagEWItFiz4JgyULUvwUAFxJfYx2XItp8HFyiu7OW0N5Hxei01Y8Q7MR Qkwxpb6hzoH8Rsp9c4OQ8Xwpxi5C18obW36IQ6ZcghvdeJoZxgiRkYunPz+acBhYoLUQ dHs+4rPdek0651Opz9TdPKhT35Y8re2g8siTYkfnexVypRF+n1FPz9lo8TKSSHY4AIGw plEVLxSX12+KaTdROt4RYaEDSiXxjCbnu0/y/2wbzVeYg99EMpSlohllrxQ5+Zzuh9ss 4VxjLUpSiP3bnxmRAwpsg3iNfKJt+eJDcE3Fy5pofHUoWQty1JLfds5fGJD58rdQIG7C W5UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cNetM4XBa/Gbuqkaq6l+2vD89eQsIgmLTdtu3cv7dk8=; b=o0IXozx3D/LV6a9oSL1tk57s4S3EwB/+j+r4hcojzqZw1+1wS1gcsVkPjv/wIxdKwO Arwf9Ho1EkuLcO98OltX4R7ai3Od5TKRJQnBkClP0fzYnJ5yQDS6f9jQsdAJB5532DVx rfyOkm8pYfaCM4iiBOynC0dW7LssgNUB3RER4UVT2QEWE8LbDk9t+9Bgd3n2CiCGDauY MLtvfqj2IIFa+flWNmC9fCxqj3mmo6Yn4HEE8efkk8SpuG7kMwDBJoy/zjGcYLLqnGfe o4OLLiLoMOZgKle3mBsS7wtnLo0Z+kC0PX5MMVKJ9eHAMqdoJCNEwnhv3KcS90yCVD6l z6lw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=lvO7SWW0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w198-20020a627bcf000000b0063b77e2123csi3280315pfc.26.2023.05.31.03.14.09; Wed, 31 May 2023 03:14:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=lvO7SWW0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235775AbjEaJ7V (ORCPT + 99 others); Wed, 31 May 2023 05:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235755AbjEaJ7M (ORCPT ); Wed, 31 May 2023 05:59:12 -0400 Received: from out-46.mta0.migadu.com (out-46.mta0.migadu.com [IPv6:2001:41d0:1004:224b::2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E8AD1B9 for ; Wed, 31 May 2023 02:58:48 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527125; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cNetM4XBa/Gbuqkaq6l+2vD89eQsIgmLTdtu3cv7dk8=; b=lvO7SWW0g6amQil27w7Ch1WvlKqI4Syaj9ZKVX28hbNP7t8j4/5bAKuiTPnmEYRwcznnpM FC4tcITydxIA3hqHO31xf6p70DR7WKVF4bsUNWyhiAhBcj85YqAuj7QvPpCBdGQUEYFJeW 8/DXDI12VzN61sf4+h1P/9MfcFO1sIc= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 7/8] shmem: implement shmem_destroy_super() Date: Wed, 31 May 2023 09:57:41 +0000 Message-Id: <20230531095742.2480623-8-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404272545862894?= X-GMAIL-MSGID: =?utf-8?q?1767404272545862894?= From: Kirill Tkhai Similar to xfs_fs_destroy_super() implement the method for shmem. shmem_unused_huge_count() just touches sb->s_fs_info. After such the later freeing it will be safe for unregister_shrinker() splitting (which is made in next patch). Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- mm/shmem.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mm/shmem.c b/mm/shmem.c index 71e6c9855770..a4c3fdf23838 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -3930,6 +3930,12 @@ static void shmem_put_super(struct super_block *sb) free_percpu(sbinfo->ino_batch); percpu_counter_destroy(&sbinfo->used_blocks); mpol_put(sbinfo->mpol); +} + +static void shmem_destroy_super(struct super_block *sb) +{ + struct shmem_sb_info *sbinfo = SHMEM_SB(sb); + kfree(sbinfo); sb->s_fs_info = NULL; } @@ -4018,6 +4024,7 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) failed: shmem_put_super(sb); + shmem_destroy_super(sb); return -ENOMEM; } @@ -4182,6 +4189,7 @@ static const struct super_operations shmem_ops = { .evict_inode = shmem_evict_inode, .drop_inode = generic_delete_inode, .put_super = shmem_put_super, + .destroy_super = shmem_destroy_super, #ifdef CONFIG_TRANSPARENT_HUGEPAGE .nr_cached_objects = shmem_unused_huge_count, .free_cached_objects = shmem_unused_huge_scan, From patchwork Wed May 31 09:57:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zheng X-Patchwork-Id: 101331 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2770387vqr; Wed, 31 May 2023 03:23:03 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ40sKNkRp9KVaWykC3OcGBhgmO8xXH5pV+Ml+V223BtNAfw+ei9M2D1Cx7+G44l5qh/4K3Z X-Received: by 2002:a9d:7dc2:0:b0:6af:887d:a517 with SMTP id k2-20020a9d7dc2000000b006af887da517mr2016567otn.15.1685528583301; Wed, 31 May 2023 03:23:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685528583; cv=none; d=google.com; s=arc-20160816; b=EailfUWZYb3+39M7RULNPHF5gyUl/bH6ERDaLmWgplZ8VNETBx4gNgrP7XS9P+5wj/ PXuP5huOUtMlRB5xlHD06/N95o78WPNprodUGmFM5Kx1iGe4F8jw+xBbVxTRF10qx48H zMMwyTNA2VLQTeXNurxBu88dQHW24pWqI0HajHfdRQhJHT3I7tjZjOIIqKmAT86BpkLq Ns0IDBZgT0iZL4jyjnpQVqUts6jazDSJt5GQJbHtL8a0brZ3ABGkmKs/Bw+4ABtskLKZ yFPRTjYUDLh1bFiVy4TDB3KqP/wTmDdumiUutDv+xfCiE7I2F7KKKpijzb7cwW5g8H8Y hcnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=mjcsinqX7KwTJ40/JcL+JgGM2W0swatrtd18npIFtVk=; b=Jt9+bK0QjoBCIlkB4uIbbvAhx/o4MkVB1+Hgtlbi3zKC2Oeir3GDDqmjx5an3LnEJt b2i92Rzy3Ooq3ozr7dCywXKG/R6qSyh7kNtcEOe67KH//gehgb1bSGT94MmrEqJc0xze 3bC9YSFN5SUv/irYLS2MYPLHEclTxaNAQtTlrFR5Ozho313THLxyGZ3ZnGL7QX+df8Y3 +2PttuOxr3tDjBe3joubddA7+f/erDAh8ldnI/bMIjHHFTRxcwkatxlQj69HxwBQ80DU uuNgraohSYuOeIiuMym0KLPbhffv62RvPMb/fWOJ/NEXEqLSBnAkOMU2JcgF9tOgJuLf QUWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=baMB2GLV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m63-20020a625842000000b0063a6dbeaa56si3413520pfb.60.2023.05.31.03.22.49; Wed, 31 May 2023 03:23:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b=baMB2GLV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235791AbjEaJ70 (ORCPT + 99 others); Wed, 31 May 2023 05:59:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235740AbjEaJ7Q (ORCPT ); Wed, 31 May 2023 05:59:16 -0400 Received: from out-54.mta0.migadu.com (out-54.mta0.migadu.com [IPv6:2001:41d0:1004:224b::36]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8568E10E for ; Wed, 31 May 2023 02:58:53 -0700 (PDT) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685527129; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mjcsinqX7KwTJ40/JcL+JgGM2W0swatrtd18npIFtVk=; b=baMB2GLVbbUmgLTp+CUXyhhVv/9x56bQV3iqZ8MjrGpSa7p5jatJsXPULpCV9EV8+jBrYl PchelLFH6ZF8vYpgvhoNebbx99TRM79XB4NftLwSZ90r/JoVrRMdf+o3xlQ1brouvtCBtm EjXCENjNIePsNVRgiPye7pdqlsEyPGs= From: Qi Zheng To: akpm@linux-foundation.org, tkhai@ya.ru, roman.gushchin@linux.dev, vbabka@suse.cz, viro@zeniv.linux.org.uk, brauner@kernel.org, djwong@kernel.org, hughd@google.com, paulmck@kernel.org, muchun.song@linux.dev Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Qi Zheng Subject: [PATCH 8/8] fs: use unregister_shrinker_delayed_{initiate, finalize} for super_block shrinker Date: Wed, 31 May 2023 09:57:42 +0000 Message-Id: <20230531095742.2480623-9-qi.zheng@linux.dev> In-Reply-To: <20230531095742.2480623-1-qi.zheng@linux.dev> References: <20230531095742.2480623-1-qi.zheng@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767404819960875216?= X-GMAIL-MSGID: =?utf-8?q?1767404819960875216?= From: Kirill Tkhai Previous patches made all the data, which is touched from super_cache_count(), destroyed from destroy_super_work(): s_dentry_lru, s_inode_lru and super_block::s_fs_info. super_cache_scan() can't be called after SB_ACTIVE is cleared in generic_shutdown_super(). So, it safe to move heavy unregister_shrinker_delayed_finalize() part to delayed work, i.e. it's safe for parallel do_shrink_slab() to be executed between unregister_shrinker_delayed_initiate() and destroy_super_work()->unregister_shrinker_delayed_finalize(). This makes the heavy synchronize_srcu() to do not affect on user-visible unregistration speed (since now it's executed from workqueue). All further time-critical for unregistration places may be written in the same conception. Signed-off-by: Kirill Tkhai Signed-off-by: Qi Zheng --- fs/super.c | 4 +++- include/linux/fs.h | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/super.c b/fs/super.c index 4e9d08224f86..c61efb74fa7f 100644 --- a/fs/super.c +++ b/fs/super.c @@ -165,6 +165,8 @@ static void destroy_super_work(struct work_struct *work) destroy_work); int i; + unregister_shrinker_delayed_finalize(&s->s_shrink); + WARN_ON(list_lru_count(&s->s_dentry_lru)); WARN_ON(list_lru_count(&s->s_inode_lru)); list_lru_destroy(&s->s_dentry_lru); @@ -337,7 +339,7 @@ void deactivate_locked_super(struct super_block *s) { struct file_system_type *fs = s->s_type; if (atomic_dec_and_test(&s->s_active)) { - unregister_shrinker(&s->s_shrink); + unregister_shrinker_delayed_initiate(&s->s_shrink); fs->kill_sb(s); put_filesystem(fs); diff --git a/include/linux/fs.h b/include/linux/fs.h index 30b46d0facfc..869dd8de91a5 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1929,6 +1929,11 @@ struct super_operations { ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); struct dquot **(*get_dquots)(struct inode *); #endif + /* + * Shrinker may call these two function on destructing super_block + * till unregister_shrinker_delayed_finalize() has completed + * in destroy_super_work(), and they must care about that. + */ long (*nr_cached_objects)(struct super_block *, struct shrink_control *); long (*free_cached_objects)(struct super_block *,