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: 13261857 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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5A566C7EE24 for ; Wed, 31 May 2023 09:58:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D01BD8E0002; Wed, 31 May 2023 05:58:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CD8256B0074; Wed, 31 May 2023 05:58:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC7218E0002; Wed, 31 May 2023 05:58:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id B181E6B0072 for ; Wed, 31 May 2023 05:58:44 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 77D74160329 for ; Wed, 31 May 2023 09:58:44 +0000 (UTC) X-FDA: 80850100968.11.56EEE84 Received: from out-31.mta0.migadu.com (out-31.mta0.migadu.com [91.218.175.31]) by imf17.hostedemail.com (Postfix) with ESMTP id BCAFF4001D for ; Wed, 31 May 2023 09:58:42 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=rS4mRe4L; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf17.hostedemail.com: domain of qi.zheng@linux.dev designates 91.218.175.31 as permitted sender) smtp.mailfrom=qi.zheng@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685527122; a=rsa-sha256; cv=none; b=SZGy3wLWlzuWhXN4IyI5y1ec4IwJZspQc5/Xf0lOue+VUv8V2nJl+xZzZoI3QMLt8GX4gW 03m/kXlUDS4rZfF63EAuMSd/ihBf3F/y3z/MEm5BCKVuX6DrrwlvWaise1oSGQqRzSza9K lNiP1mxX0D1ige4uk+wf3XzvlcxrnDg= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=rS4mRe4L; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf17.hostedemail.com: domain of qi.zheng@linux.dev designates 91.218.175.31 as permitted sender) smtp.mailfrom=qi.zheng@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685527122; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E1v6Nmr+iDUp1so91WjqnHTNpH9v5OnKQ0PJi2AfGq4=; b=5ofZ/nCdfxJWWX3xXIDbNYCKtXQ02ruRkTHz9qKwDEw0ZCqhN5KNCSq1NVuTXoEoeGWX8X V/lTpQHO3saNl3Namnlfjb5jiGNK0IbkXzEUwc6cSlgIDsBU876eVgiWWHz1/kbkxZdgZo 1qu01cmkh4W9SL25fWI0ZKYxTVXowuU= 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-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: BCAFF4001D X-Stat-Signature: pykdi58kig65fnfbau3obm5zj7xi3na1 X-HE-Tag: 1685527122-311246 X-HE-Meta: U2FsdGVkX190zUnrztWTJ6kA6AKoaYqTW1ZVaEF34KJSEUxgKqrvEx2dpx98omWEdOp3ku3PU3bMXxT95xERpK2wUDd4HIeVjkz3DAlAgFRzYAzXyKHAWmz8D/5mvxSOM0xaiXHx8tMwA4EqA0e25smJrMytqYPB0pvXdb3iGoLybyqZugaxjMEPdzoDyTf8HY3Ay6V2fVSB/RGjSF/61uEdxyQrh2D/PLZgukotxR3I8p75KCYK/uu16WZvtAdwSPTi4aOrEbbPcj5Poisv6U3cQVKrYez63CbD+geEPAVaahiX31DLz4jTgw0kH0lXnqIl9yWRoSPui/KspY9uQ/setK2pU2nkFk137Phd19ZxtKS5y86iP6cuyl148eJLC9UJBDRA/O68pStmBstUwPXhJhQ6CMp8qh/u8A9FjO7sbTm1FUUl8XXSUoJO2j4SpLmdW0Fa8lbEKyVD3EEozemZXmS1PJWOrBd5rdgEDr+mAiwK/yHuXkRtvks0U/jJC1eggZgJlLxIQLtdnmF+EyczuDy/DXzpYmgl8RHB2S5IPES1EWivH2nNCiP7sdqDYU0fVAXG+IzdVQbrRzB7YZ/hksX66MXbWmKY1pAiShd+XvFmQNDWteUIDknOJHeKV4eA9xc6RKsl3hyZ4i1j9kZr7bTkhzkp0EsLXC+HeSKjCpPMQAWkFz6BNwIzk9kVvU9cJOOTOBixMfoBU5S+oAdmw68JwaJfQhT4is+Uvepfbq2MMDuz6hM23nc7eRTbUtX7M506PGN7JVAc1AI3nPm/qib8lM+w0aCtD7DsbaXq+zIPqbj9dD179FTF4AMbjMFkbVCCcId9HHPHAf5X9UIegImgq6VPeHT+DRBTxmsvTAvGRL6/oqkfYJ/W0M4pDKujysyDSqrT7lY6pofU+XXG4SaRJlZgoKBobX0YDMgZB+BJoyLVTgeFhLJ22Rs34wHSvrYQz8goPdzUsTj L9Pq+X2F 4isgd3gAuLEpvuNErw0mIBafguYe1TBAtZCsDgHULQsl7Ppl4Wq5a1BRIaxuFT51vdQcuDiPC2FQHRrBzR2WfTOcE3SOJf4ZXhqEB7RLAayw8ymYJryfhlXoIOHTn4XvoPVxHnue3AIfgFxf93q88ne/VY9rmGF35XgmLF4FGz9l5mHnvQzm2QybTpV3XsSO/Dmmkl5VdMZBdOlA8+dPswLwCynJ23qdxFXrcV5m8czO4nYD9ZiCJjJN5nA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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,