From patchwork Mon Mar 17 20:59:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019974 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79E1320296C; Mon, 17 Mar 2025 21:00:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245209; cv=none; b=hXtFJRq2/V60rFIZYtCT/xA+34rvY/T/xowzKckxYKm3WqoK2DP07EtsihDE+DjTaHpkdoxDRuOQcgLXKRhqgN5xQB3KdVdcuSWKptJ5uNCyhJePJIr/yKomU51+cxE7Wp7oyzKWgs7E25hKlpzR92Sq1q2ANS6PJ5CO+Mo0Ahk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245209; c=relaxed/simple; bh=+G4GEs+C3F247y1XxEheT7t8MXEdbzC3dtqmXdncARw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GJRMBu/pFuXw4ijg+eCjZmfaOnwWSXN9qSO1+x4/xBD0A0Vci4aN+KzrSUkD/TkYHqiHZnaqvNGTN0J4xAm58AjpqnPeIOjDO2cnq+glNgT9hCQviDX5uBnANTfpOcLGUv+izJjeHfC2x7BHXTC1PYAMP+ZeafQGw4CDZPts+1E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HzQR6Vc+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HzQR6Vc+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D66DBC4CEEF; Mon, 17 Mar 2025 21:00:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245209; bh=+G4GEs+C3F247y1XxEheT7t8MXEdbzC3dtqmXdncARw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HzQR6Vc+47rQmBdPLXfcFpV3KmDrShA+dR+S2i3PFe4GPKGj8VsUF1kz081Tsk8Jx O688l3oKvCtLPIoxYFGH2pntRpzSqV0uezhSjSzalys1/QVXa8gT6HzoFgHH+s3fJR nP+kovuERymE3EFM8JCUtBBxfey7Eb33uqpoNZ67nv4aiwXMg4H5FI16NRZNTkCvN+ sDC3VcE5PDS/4wEoxg+UX+2VYOSYiUOFtrpzjZkoQCiZk+5SRWy7wpD9WZ5Nnc1fG9 mkUxvzoKf2w3uphqNdpV/etpczsWj34hxuuobJII6/IYq7/is0I+XuHy5Vumwjp5LW 9ZjrORlBOuy5w== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:53 -0400 Subject: [PATCH RFC 1/9] sunrpc: transplant shutdown_client() to sunrpc module Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-1-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3086; i=jlayton@kernel.org; h=from:subject:message-id; bh=+G4GEs+C3F247y1XxEheT7t8MXEdbzC3dtqmXdncARw=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1Ufn1hQfrwvIELveta9eb6BpvxFGO9B1fp/ ADErQVybXqJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVAAKCRAADmhBGVaC FdLRD/4zgiTqDasldmLP4CLSQQyQCbGPyo9GmUIFWygN19EJNbOdhs0AtGhLHEOwvkPecrFPlre 34HHVDpatRohB66nvvzC4UD4kHjxdq4MHHrbl5RXUcSZZBhdk7r9LzmWxn+8+wepCUyOu2zIKyc ohRZP+/+6sYv0BNbITH/BS7EcwAgwxObZEbfF5EluHE5YNH9BkEup11i4cxEHHFtZljf8whKVsH 9+aZksDsq074CcQYF7sGeRxdQR235p3nbMOuHstcOoVL2R/Bw1La4hIhxOR2jYtBS12NSilVmSm rIDMFrpa/r1dlvsblgaggYw0lvKTYY/4fzE/NdBgtZhn02pGU+IFv42spf0wOc+AlTOLu+U7rSE V/5PK/ElO+QzLXVNq6T5bSOq1JeHdG179wKtzezBAE+/e1rx+hdMOGp4TC/Iww0nYG+hISBQ5dV TkglMGbGt8/KPmhGl+WuNUYMWoVkoeizSmewaHRPRoKyGEAPhqAY1+gj30v+pWOh9Uh1CGNC1Bc IlTc+VIdQ+GbaWvDTf8UXQ8RGtTcWyxl8yH8rBMj1XBmbmgUfNCrmVo0PUxJbfE4NetehkSJGxA sZVHrhMA9KN4Dmw8t16XFeGONEcUwkQDxd9uBEOWuwAonv9cEak5RwNUzLKyQgnQ3j5izMlCeZf HgqIeG0aoSmLuKg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 This is really a sunrpc-level function, and in later patches we'll need to call this routine from lockd as well. Move it to the sunrpc module, rename and export it. Signed-off-by: Jeff Layton --- fs/nfs/sysfs.c | 19 ++++--------------- include/linux/sunrpc/sched.h | 1 + net/sunrpc/clnt.c | 12 ++++++++++++ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c index 7b59a40d40c061a41b0fbde91aa006314f02c1fb..c29c5fd639554461bdcd9ff612726194910d85b5 100644 --- a/fs/nfs/sysfs.c +++ b/fs/nfs/sysfs.c @@ -217,17 +217,6 @@ void nfs_netns_sysfs_destroy(struct nfs_net *netns) } } -static bool shutdown_match_client(const struct rpc_task *task, const void *data) -{ - return true; -} - -static void shutdown_client(struct rpc_clnt *clnt) -{ - clnt->cl_shutdown = 1; - rpc_cancel_tasks(clnt, -EIO, shutdown_match_client, NULL); -} - static ssize_t shutdown_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) @@ -258,14 +247,14 @@ shutdown_store(struct kobject *kobj, struct kobj_attribute *attr, goto out; server->flags |= NFS_MOUNT_SHUTDOWN; - shutdown_client(server->client); - shutdown_client(server->nfs_client->cl_rpcclient); + rpc_clnt_shutdown(server->client); + rpc_clnt_shutdown(server->nfs_client->cl_rpcclient); if (!IS_ERR(server->client_acl)) - shutdown_client(server->client_acl); + rpc_clnt_shutdown(server->client_acl); if (server->nlm_host) - shutdown_client(server->nlm_host->h_rpcclnt); + rpc_clnt_shutdown(server->nlm_host->h_rpcclnt); out: return count; } diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index eac57914dcf3200c1a6ed39ab030e3fe8b4da3e1..fe7c39a17ce44ec68c0cf057133d0f8e7f0ae797 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h @@ -232,6 +232,7 @@ unsigned long rpc_cancel_tasks(struct rpc_clnt *clnt, int error, bool (*fnmatch)(const struct rpc_task *, const void *), const void *data); +void rpc_clnt_shutdown(struct rpc_clnt *clnt); void rpc_execute(struct rpc_task *); void rpc_init_priority_wait_queue(struct rpc_wait_queue *, const char *); void rpc_init_wait_queue(struct rpc_wait_queue *, const char *); diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 2fe88ea79a70c134e58abfb03fca230883eddf1f..0028858b12d97e7b45f4c24cfbd761ba2a734b32 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -934,6 +934,18 @@ unsigned long rpc_cancel_tasks(struct rpc_clnt *clnt, int error, } EXPORT_SYMBOL_GPL(rpc_cancel_tasks); +static bool shutdown_match_client(const struct rpc_task *task, const void *data) +{ + return true; +} + +void rpc_clnt_shutdown(struct rpc_clnt *clnt) +{ + clnt->cl_shutdown = 1; + rpc_cancel_tasks(clnt, -EIO, shutdown_match_client, NULL); +} +EXPORT_SYMBOL_GPL(rpc_clnt_shutdown); + static int rpc_clnt_disconnect_xprt(struct rpc_clnt *clnt, struct rpc_xprt *xprt, void *dummy) { From patchwork Mon Mar 17 20:59:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019975 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8E4AA204588; Mon, 17 Mar 2025 21:00:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245211; cv=none; b=Tgp6jXOVk+4gtF4fhTRtazWSKy3FB0vthkuPqBZFMPdbzxvhSTMuQ/PjEe50g8b+z3ZYrFey8K4taa7ux1531hOPIafAkEfD6rMwfJ5qmgn3Iy/gPUcWAs9SRsMJqwu3yGGEl9weP8TjkEU88uv3hHZjKeLNqKGde7Pnx75v2+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245211; c=relaxed/simple; bh=Ns96+RGe273nraJ8gzjQKb0+xRtXkPKEmkrCxe31bqU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ssH440yc/orWZaTyuMET2QEZyJ2NnLOdB6RnEnDlUPkt/vMNiYc0Kb1g1QooF9OJb6fMxh1b2p9/+CwnZKHQEYDZsi4MW6Kp2Wodl1D7WzLFbOfSKu2aPWJtL6HUkb87bLqCufIpEMF+/Cf2DK+mSqtz3YxOOCw/1oGli6LmabE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Of15iLVt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Of15iLVt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91375C4CEE3; Mon, 17 Mar 2025 21:00:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245211; bh=Ns96+RGe273nraJ8gzjQKb0+xRtXkPKEmkrCxe31bqU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Of15iLVtGgr69R2qx28PpV27sB0uz95koGBw/lW0QlinSb6F9Q93Y1kpF6O+S+IoW zYpp82zROcbYybjcEJSc44CWxs94ssKvbXY3F6vjO4AXawQ4J64v2zvTqeftbNnDxd +77igDWSQGtHUEgTHS5y0JV2XMKD7OO4d13jhk2PoviYjJvTo61kcxi69uciEB31xP UGieJyI5PJPMsaVe6GxqX3Hg5qssJW8Jev6FeqPSN1a0JNinRmW11EAgN4dNPg8JP0 p6ZpIY+MJxk5R7UykWif/aQlsglgT//4UvRfeM0L+qbnxli+JaaLW4JgdCRnavZMUb pdL7+t0F3nMwQ== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:54 -0400 Subject: [PATCH RFC 2/9] lockd: add a helper to shut down rpc_clnt in nlm_host Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-2-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1812; i=jlayton@kernel.org; h=from:subject:message-id; bh=Ns96+RGe273nraJ8gzjQKb0+xRtXkPKEmkrCxe31bqU=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1UTR7ayWfZAPvYwSItpsKRM5A3zab+g8/Za 0503n0vxfmJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVAAKCRAADmhBGVaC FQeDD/4gNSL2p+8sfejzjr1xgyiVgmM0MswB4DtzBmLzO9ZuxMPBoaBbuwwLTg8wqdNaY9581le xAUlmV3x7pQyJJoY3KHHWeZqlcjWtU9/gvnEp80kzGC0BBLGLUvcHKrW52OYlNxwtSTSZIOfS/G 3EPYdFNQHdSnuFZkMtUOznVKMIr9GT7l4FYF/cHbM4DO4nOD0DAR1tsQy8nvQ6TI1B3wY0cGtGn xgYQVG0CYp8NyTzJeakV6fFSuONPdxGtGtsd5hs0tjh/qvtqkP9n0vC+2nZ/6qzmZYGKNR+XQ46 O94gyG3CdjYaSbwRqNpCkswLuJY1buI5mHDy72BGzTuYjx0Ngau1RgYCcD4WZd141zyvrTR4sAZ j119lU/Kq6gBu47kUgeEipXxcuyEAFjg0LopkpgNXNAIxcSLR1Pd2YI+sHrYnQkqw76v7gqblr3 sgs0aI7t+BvZA3qxRK19KJpjIJThMIcUEen4xlZG3SP+4valqPY7mmlETcobhWk/pxeCfUR3fN8 rSuYnoDEfAg1kw1TDQQ3eN+XE9QYQiLFfSS48LkGcx/Iz2IkxTSQp8YtIU3uDnumHKOjVshsWCD qwZ7YK2ozNVjBtc3F5pjiaCsr/jXfHdzVfZP38HebxnSL8m231pr3dAaZ2upIwaW5gSNGdEccap wSaKdKkCfV1ryaQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 NFS reaching into struct nlm_host is at least a minor layering violation. Make an exported helper function and have nfs call that instead. Signed-off-by: Jeff Layton --- fs/lockd/host.c | 7 +++++++ fs/nfs/sysfs.c | 2 +- include/linux/lockd/lockd.h | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/lockd/host.c b/fs/lockd/host.c index 5e6877c37f7303e7141fbb96bc278a207c8e5ddc..ed88c102eca0f999a9c5351467d823b806c30962 100644 --- a/fs/lockd/host.c +++ b/fs/lockd/host.c @@ -692,3 +692,10 @@ nlm_gc_hosts(struct net *net) ln->next_gc = jiffies + NLM_HOST_COLLECT; } } + +void +nlm_host_shutdown_rpc(struct nlm_host *host) +{ + rpc_clnt_shutdown(host->h_rpcclnt); +} +EXPORT_SYMBOL_GPL(nlm_host_shutdown_rpc); diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c index c29c5fd639554461bdcd9ff612726194910d85b5..c0bfe6df53b51c0fcc541c33ab7590813114d7ec 100644 --- a/fs/nfs/sysfs.c +++ b/fs/nfs/sysfs.c @@ -254,7 +254,7 @@ shutdown_store(struct kobject *kobj, struct kobj_attribute *attr, rpc_clnt_shutdown(server->client_acl); if (server->nlm_host) - rpc_clnt_shutdown(server->nlm_host->h_rpcclnt); + nlm_host_shutdown_rpc(server->nlm_host); out: return count; } diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index c8f0f9458f2cc035fd9161f8f2486ba76084abf1..6b8c912f443c3b4130f49b8170070d0b794abb94 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h @@ -248,6 +248,7 @@ void nlm_shutdown_hosts(void); void nlm_shutdown_hosts_net(struct net *net); void nlm_host_rebooted(const struct net *net, const struct nlm_reboot *); +void nlm_host_shutdown_rpc(struct nlm_host *host); /* * Host monitoring From patchwork Mon Mar 17 20:59:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019976 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 620F61FECD1; Mon, 17 Mar 2025 21:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245213; cv=none; b=btq5qsQ/cqObDhtVtwZmYoB3Y4LHfq6VBXXefWULvD6/b3w6NrEk4tVQonBKEfxtMz7KSaWx9W/r/ooFCS1w79IZp3LfqVSeJCtzqFoESiRJDOfJozo+H+Mwsmx3Z3T47VrT2BpWqAHkTZ6NNV5c8tUvb69WlAqUc+u35saZE/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245213; c=relaxed/simple; bh=Z8+zmkrN7LhrP0MkJFChPV8uMJu827UOhw4WsUjVhZA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hd4qwEcLHeF6hfPM+qsI3gEKgaiKZl80W5Msvw5JxAgMt3S534H9VvIh7QVyQqKZDbnFnMLM1oDjim39wAA7kbpHAVzfSz0h+ZDfngajU5nr47LmZlB6xUyrT8/9nnfUKvsoJMQDRq0uPUzaB7yxaXjL9+nwsmXkIsBBPHvus7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mim8WU4s; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mim8WU4s" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4B13FC4CEF2; Mon, 17 Mar 2025 21:00:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245212; bh=Z8+zmkrN7LhrP0MkJFChPV8uMJu827UOhw4WsUjVhZA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mim8WU4sOomZEmeQ3aNunFWsglhUZRDesS0dW220nrhgZK0yPI8fHio1cTaktKgrV vWV7FtEbScUlyG4ZPM9QNL0/yK1IrH2DBKmFuTTKZAnJS9hxmQZo4jRIHIGPnfPlJR Lj6UdMKb2Mcrod/EqjN53KTdRdogEScKU9o3oj2gJ+ubq0viX8ELLxebRgtDLoDQof gfqQ3V/aGVTQ75/Ol9NM+jOc0ioRvHxwM3OUGFNlQlNL+giHXv7G8kxX56uuXbaNLW t0LDzms/v92PDjk4fDC4JrSur3nc5Jg8kTUW9Cpw8bTUqDB6YwnXmOPwA3ZDeWinYT S8UUo8texQiGQ== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:55 -0400 Subject: [PATCH RFC 3/9] lockd: don't #include debug.h from lockd.h Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-3-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5550; i=jlayton@kernel.org; h=from:subject:message-id; bh=Z8+zmkrN7LhrP0MkJFChPV8uMJu827UOhw4WsUjVhZA=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1UWq9Ti1qnKUyZMea0lRaTutpfQI3YSGdCL MviXaptbFOJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVAAKCRAADmhBGVaC FdXDD/4h6mSKDBstWZdZKEK7FN2NyVFD4JT+U+AIKzn0Yw61Xvg0koTqx/YFfUlxmwABs3fBSnv /h0XSi8fHOeHZdtkYQZn7fv4GghjnctbP767omEwM9lz3V0TS6skvmV6pOXnoUfy1wHr4bM8BHk fDMIScAxgI38JTMZ7wq/MbgH3jTtCEHtHB9/6LaDFi6dZKrXtvd20V5ZxVg9pVYxBRJCcKq745W kNdwz2X4ZdLRpgz5W9KXG/jMvrzJbvkHhjeO3X+KX9/1iPYsHBfwq5GoardxxHLLk+UxdkHh0vm ZX5VZn0YZo/HEBI5B4fcVThsFf/3lfZxbS9p8VdMoGe5UTi1qdnWPOV26set2l2Qp4xs/KYRNC0 J0wTi6g3sYQgnBZ2tF2l9RrMubqGg1dR3h9mETSDy1QXmU6U7ZGShRFQ6TPEVCwnfv4tgNx0WI0 HTcX1MHGXDCL7WNF5Se1LsGuUg+Xfk+GxnCft6KF6kTZACIrdGVxjNYCxDL8Mo/8q6FoVMaKoAE D7or1FINRWPHlP6dSL9o9WxSggyg9lyEGDotKoSDG3tXy+ObfxWBZb4V3vKTI3m9ASRgqkF0FKE sez8T1hDK21NNWcgABgu+HlVVIF1EB91qFRRvnxb62GYRv7gSjWNEDYr2DGiIU7hylXbviZbwB3 /pNHNNHxRkCl5iQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 We need to #include lockd.h in some files in fs/nfs, but the dprintk definitions collide with the ones in NFS. Include it directly in the files in fs/lockd/ that need it. Signed-off-by: Jeff Layton --- fs/lockd/clnt4xdr.c | 1 + fs/lockd/clntlock.c | 1 + fs/lockd/clntproc.c | 1 + fs/lockd/clntxdr.c | 1 + fs/lockd/host.c | 1 + fs/lockd/mon.c | 1 + fs/lockd/svc.c | 1 + fs/lockd/svc4proc.c | 1 + fs/lockd/svclock.c | 1 + fs/lockd/svcproc.c | 1 + fs/lockd/svcsubs.c | 1 + include/linux/lockd/lockd.h | 1 - 12 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fs/lockd/clnt4xdr.c b/fs/lockd/clnt4xdr.c index 527458db4525af3e76d9119feb6e5e5b62890741..d824c8f89aeedf5903052bf4ed045b079adadaa1 100644 --- a/fs/lockd/clnt4xdr.c +++ b/fs/lockd/clnt4xdr.c @@ -14,6 +14,7 @@ #include #include #include +#include #include diff --git a/fs/lockd/clntlock.c b/fs/lockd/clntlock.c index a7e0519ec024a9f73ca05d0d4a0ca29f22d0eb23..5f593d367c1f1781cf68842bb00610234c436524 100644 --- a/fs/lockd/clntlock.c +++ b/fs/lockd/clntlock.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include "trace.h" diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c index cebcc283b7ce2e813944d9037de2a7462585a2c9..2cc331c8b2a294f4feae38d1ca0da240b14008bc 100644 --- a/fs/lockd/clntproc.c +++ b/fs/lockd/clntproc.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "trace.h" diff --git a/fs/lockd/clntxdr.c b/fs/lockd/clntxdr.c index 6ea3448d2d31ea54451d6ec0fd01c5f31c35e123..effcef151b60a929a8e96d5560aa5efa84e00b74 100644 --- a/fs/lockd/clntxdr.c +++ b/fs/lockd/clntxdr.c @@ -16,6 +16,7 @@ #include #include #include +#include #include diff --git a/fs/lockd/host.c b/fs/lockd/host.c index ed88c102eca0f999a9c5351467d823b806c30962..931a24abd78462ae12b18b7799e1c060748ff276 100644 --- a/fs/lockd/host.c +++ b/fs/lockd/host.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c index b8fc732e1c677063a0d0a1385a64ce22fe216ae4..79364ffa7b2f2aa43c1a504b59d2de77691ae378 100644 --- a/fs/lockd/mon.c +++ b/fs/lockd/mon.c @@ -17,6 +17,7 @@ #include #include #include +#include #include diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c index 2c8eedc6c2cc9ebcfe521d90364de84e00eae40f..1cd1bdb06566c70c77728e9a3bab19364c155cdc 100644 --- a/fs/lockd/svc.c +++ b/fs/lockd/svc.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "netns.h" diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c index 109e5caae8c7045487d32bf35b5b80456a421f57..6fdaac8e6877f148927bdc9c0ba613de2dbf2be0 100644 --- a/fs/lockd/svc4proc.c +++ b/fs/lockd/svc4proc.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index c1315df4b350bbd753305b5c08550d50f67b92aa..d73ba3959aac3160904b55e77cc10d59604b725c 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c @@ -30,6 +30,7 @@ #include #include #include +#include #define NLMDBG_FACILITY NLMDBG_SVCLOCK diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c index f53d5177f26732092242fcabe32f0f8931fc1fb6..68c08bf21d300a1c5739c659ceffe375b465c16b 100644 --- a/fs/lockd/svcproc.c +++ b/fs/lockd/svcproc.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c index 9103896164f6886eec5adf65a55f4c29433dcb29..e3b63708f7872d5a97df0d1379db40b2fbd3ac5d 100644 --- a/fs/lockd/svcsubs.c +++ b/fs/lockd/svcsubs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index 6b8c912f443c3b4130f49b8170070d0b794abb94..21cd2cd85e537708ac83d658e40265cec327197b 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h @@ -24,7 +24,6 @@ #ifdef CONFIG_LOCKD_V4 #include #endif -#include #include /* From patchwork Mon Mar 17 20:59:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019977 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 987EE204F63; Mon, 17 Mar 2025 21:00:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245214; cv=none; b=SbRuBKYysLSj5MmqewJMLd5RWXCigjQI6foVzs9tO77J7FW63/KCPfvJcB1lsTYz0jvMX5osHQe7/5lUiUu79PKRmBUdnwTjNvmL2burrG+7gPNFxhC04MHEG8r2cLt5eUWloGivUnJp+Q+vZA15OPnTMSTUvqM1UPuvmDaKWnE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245214; c=relaxed/simple; bh=+wgurTIA42S6EU/CFvkiUXQW5qZX53Jdp807van4r5I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HovdZOd1Sj+iEsPoypPCLvq/rz/TMY9zZe+Qnqm38ibUMKdomm9KtDT7/IPHlZxWIN49tOh8ONwadEkBs8B+HKqbJ+2rqlUovz43WuBL7mt2mdiNIQE3+wGzgt9Ucozn6raE6cW4lMoB33fHw6V+bUoJpn/1/pZI+5FMS6Uu1ew= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ncl1QSkI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ncl1QSkI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 04F19C4CEF0; Mon, 17 Mar 2025 21:00:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245214; bh=+wgurTIA42S6EU/CFvkiUXQW5qZX53Jdp807van4r5I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ncl1QSkIDiZqv59li1IKJ4kQRNXOxVoLLPmRwXs0ffjmEvmVyUQsT7MnWX3QBA12X HgKUTnGvEYxG9as6+jRiHh7+POOVyRjcGL6EnXCxnT5MEEZ3gF0E1q+EZuzZwQBzFY uH/b4i0k2t1zMcrXW5LeRLxBqsm4rmlNQvvDeVZq4NpSuashwi2/lv25C4i0Pe4bTc M572+xDOfCDLDQK6uZje/l2uvoGmaq0w1iNjjbu2VwkUORE4h9bV50vr5HvvoHtlFB Rwwo5xj8tGcpqYXmT12Bda2JKfrK/G6kxgThmAEuIk4ARGcdjW1FeaAgSeRwwxdfxU szwIr2Ou3Ys1Q== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:56 -0400 Subject: [PATCH RFC 4/9] nfs: transplant nfs_server shutdown into a helper function Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-4-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2811; i=jlayton@kernel.org; h=from:subject:message-id; bh=+wgurTIA42S6EU/CFvkiUXQW5qZX53Jdp807van4r5I=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1UJxGyym3ELJRBjYuUrRDsHe6bm7Wjns3Rp E5pCnQiiz+JAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVAAKCRAADmhBGVaC Fa2YEADB7WfIfGw5nyum3kkEEUiGKwMfFrN8nnBQkPWswm6yRLKXs10kbip+bitofjnLbRsfOwz GWKL48T8MPa1jGywKyOjoubfxMWlvdkDotFH+uObCeDR/ycDFZlouX5bPTmCieuqXSuaVKbbIt1 v8rzkY//bonVh1F/zfOzsRSYdG51GEFXj5ALevCcmKAzIlzRdTTXsSulpEMRC+5PN6fz3IoYOl7 agQKiBC1ctWfjkiVwzrGgT0u5jiYJYuOwtPrLSm5ZQNV4BVE0Ya6AUMKIGbbiiB5Hr/FZK+LOJg am/j7L4cjSdXxbrycq6lQnszdhcwPpZYdgYUirZvNItT9e7/w8TL7kS0RAxea9ZUT3C+ANUYEfF ajaOvHBBvcszteYfyLSFQUtIRYBBq+ayR/1o3LKsrcGz3qnuf1WdZ2LtD1PGcNWReX4S8O/DXQv AZWc9mr7mC/2/IUDrMugsRflkpmdZRl9UOiaUqBPL/WerIteB4J17dNhtzjNhNixoUG0yLHuM4W Z1YTXyXz0ZIL2m0TIuP2NEE6B27eHuHtTVgeleG+Qw/PyI6j02DX6PQup57mVsfOzpr39xpDrHq zcSQINwMvfG6JRTxpgn4rK+hQ/UM2YnNSjoHsaf18iilM8jlhlWCsbrxHk4RmhqknOQdWtIRaeD OlCUGfYreg2QWOg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Move the guts of shutdown_store() into a new helper for shutting down a nfs_server. Signed-off-by: Jeff Layton --- fs/nfs/internal.h | 1 + fs/nfs/super.c | 18 ++++++++++++++++++ fs/nfs/sysfs.c | 16 ++-------------- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index fae2c7ae4acc286e1c5ad2b2225b1e9a6930b56b..968c8c845f49f5b7ca6f78e391ba2a3024ce64ff 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -507,6 +507,7 @@ bool nfs_auth_info_match(const struct nfs_auth_info *, rpc_authflavor_t); int nfs_try_get_tree(struct fs_context *); int nfs_get_tree_common(struct fs_context *); void nfs_kill_super(struct super_block *); +void nfs_server_shutdown(struct nfs_server *server); extern int __init register_nfs_fs(void); extern void __exit unregister_nfs_fs(void); diff --git a/fs/nfs/super.c b/fs/nfs/super.c index aeb715b4a6902dc907b4b4cf2712232b080c497f..b78251dde6b717738847ebf4b75f6de10e7ea644 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -56,6 +56,7 @@ #include #include #include +#include #include #include @@ -1386,6 +1387,23 @@ void nfs_kill_super(struct super_block *s) } EXPORT_SYMBOL_GPL(nfs_kill_super); +void nfs_server_shutdown(struct nfs_server *server) +{ + /* already shut down? */ + if (server->flags & NFS_MOUNT_SHUTDOWN) + return; + + server->flags |= NFS_MOUNT_SHUTDOWN; + rpc_clnt_shutdown(server->client); + rpc_clnt_shutdown(server->nfs_client->cl_rpcclient); + + if (!IS_ERR(server->client_acl)) + rpc_clnt_shutdown(server->client_acl); + + if (server->nlm_host) + nlm_host_shutdown_rpc(server->nlm_host); +} + #if IS_ENABLED(CONFIG_NFS_V4) /* diff --git a/fs/nfs/sysfs.c b/fs/nfs/sysfs.c index c0bfe6df53b51c0fcc541c33ab7590813114d7ec..1b2e2ed10a1bf8d4ad06dc676ec5831d6eba99b4 100644 --- a/fs/nfs/sysfs.c +++ b/fs/nfs/sysfs.c @@ -14,6 +14,7 @@ #include #include +#include "internal.h" #include "nfs4_fs.h" #include "netns.h" #include "sysfs.h" @@ -242,20 +243,7 @@ shutdown_store(struct kobject *kobj, struct kobj_attribute *attr, if (val != 1) return -EINVAL; - /* already shut down? */ - if (server->flags & NFS_MOUNT_SHUTDOWN) - goto out; - - server->flags |= NFS_MOUNT_SHUTDOWN; - rpc_clnt_shutdown(server->client); - rpc_clnt_shutdown(server->nfs_client->cl_rpcclient); - - if (!IS_ERR(server->client_acl)) - rpc_clnt_shutdown(server->client_acl); - - if (server->nlm_host) - nlm_host_shutdown_rpc(server->nlm_host); -out: + nfs_server_shutdown(server); return count; } From patchwork Mon Mar 17 20:59:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019978 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C503204F63; Mon, 17 Mar 2025 21:00:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245218; cv=none; b=nNNuKRstso80EOsQnl2mMKg9coC4Jf37hLSilE7oDAgcDcdIeVNcx5VXxHqyX6+179FBUGaYbc3BW6QF7HB3TttnLMmG2UB8K1v50y/U3mntNKmSM54Pj+vzWVYaUCWHeoDHVwEIMoWcjOscIAH6sFbYCtmNfkR5zL3QldI1BSA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245218; c=relaxed/simple; bh=VIYyeSTvZ+KE6fzatpx9PpZw8b244H4HoirdliCtKfc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tAsfd4RcHNMOX29KnlmJpja0CgGookNtGOCwFBocML4BXlhmTLIPoXDNInLTBBYC1lxFNIseldzdTctlLNseOGWR4zVQX71JppOO2jcpJk+2MOkKOELaGz3v1oYUMK4yRi6sVuP3KdTy59i4ybrUb78mVBAY6sPvglius2xbfaw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iNtlFWJu; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iNtlFWJu" Received: by smtp.kernel.org (Postfix) with ESMTPSA id B2A88C4CEEF; Mon, 17 Mar 2025 21:00:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245216; bh=VIYyeSTvZ+KE6fzatpx9PpZw8b244H4HoirdliCtKfc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=iNtlFWJuvmCBckC34H1DPDzeVV8Mxwv3ZXdjFVRQS9Qr6WVFu0kTxjQitylLFsvdD gQD0+ewRpBpl5N9rd8sarptX+xpacESW9eS6weak95OOQRlzHCMdxmPA+pUaeVayfQ 9Deg30EGpaO3zvZksfiEDc4vdGRu8gKwrk3+d3/6eknQQdw/wHZqtG0jpf/SwItPqn 6hgOI1v/ko3mIyyaGZyGsVvapCT8kAHzNNKLjV6PddnMd1eJ1/Qa1pyeucKwAAQgPd EGqNzjXjB6BwM8jWmFkhxQyurys5vqRkQTkS1STILKPFzJZmzzVliY977VnIVkNT0F a1U+7XIai5qsw== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:57 -0400 Subject: [PATCH RFC 5/9] nfs: don't hold a reference to struct net in struct nfs_client Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-5-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3230; i=jlayton@kernel.org; h=from:subject:message-id; bh=VIYyeSTvZ+KE6fzatpx9PpZw8b244H4HoirdliCtKfc=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1ViDiUEQS0Wt/GAqTra62F1ds5XDzIyXX0N 523Sc8LPpGJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVQAKCRAADmhBGVaC FagmEACJo2L22E2DGsk+XyX0ZAudSnlK2NZLL2gDkXKTriIBasZJet8y+I+FKjyYdykdqLtdSAJ GqkJDCqPqv2yMdzQxsJRuitrnmW9x2ccSxz4ByduZczKGCAMc3l/6c8SffMhSeCo/ka6VVEh4Go Wf0yE2HETHsPCw3NpZrfcRe3gl0N7gze/CAbWTTUinTcgmFxg1C7zjETKlmV+I9rmGQrDAkdG4s mRI3dFr+b/k5pUQT5dvShsUAL/dj7rQ70Ni7CW8H33ByKbJrc39oaOjqdoO8oyH8ybQHeEMUctN SEgWZHcmR+NvvXawYf04CSRWLgtGJGmMcWRO8LGrw8SUy5GxP2bn632vuPwm9XJWMXi9foyWvvr EwXjvcmw53X2ggrsjLHa75TVdLIaVaPoJYHE2GGTSjeQy4L9P1oYh+ALJy7mrAy+jEVKreqlphX bQ6TfQru6BE55hsJHAWDgmmBWTvxMHnbWh8/eO1S0MZIzG+TJsjot1LMUF7wlGX4ShvFYUpkqki 2RA+y/l7+0GLdBTX8jcvNOpGq89bdKP0qikCFIu+XpmuXiOA75iqosqnz22mXlVX6jPCJxbsuMl jtv8JwrnCnX4q1OH1b/nLK8bZiluzfeaiGt7kcF0TIoKdk7cYsGJYA/Sb5/C11JFNlvQk23roG0 qf+ilhPMIQezTVg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 An NFS client holds a reference to the net namespace. This can cause nfs_clients to stick around after a container dies spontaneously. The container orchestrator sees that there are no more tasks in the container, detaches the filesystems and tears down the networking. Unfortunately, there can still be RPCs in flight that will end up attempting to retransmit indefinitely. No userland tasks have a way to reach that net namespace any longer though, so there is no hope of it being rescued. Instead of keeping a net reference in struct nfs_client, add a nfs_net pre_exit routine that kills off the nfs_server and any remaining nfs_clients, and then waits for the nfs_client_list to go empty. Signed-off-by: Jeff Layton --- fs/nfs/client.c | 6 ++++-- fs/nfs/inode.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 3b0918ade53cd331d76baaa86fd2adec5d945b78..8f41cb88f88c2b4d7f10424484b6e70ac2b8835a 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c @@ -180,7 +180,7 @@ struct nfs_client *nfs_alloc_client(const struct nfs_client_initdata *cl_init) clp->cl_proto = cl_init->proto; clp->cl_nconnect = cl_init->nconnect; clp->cl_max_connect = cl_init->max_connect ? cl_init->max_connect : 1; - clp->cl_net = get_net(cl_init->net); + clp->cl_net = cl_init->net; #if IS_ENABLED(CONFIG_NFS_LOCALIO) seqlock_init(&clp->cl_boot_lock); @@ -244,13 +244,15 @@ static void pnfs_init_server(struct nfs_server *server) */ void nfs_free_client(struct nfs_client *clp) { + struct nfs_net *nn = net_generic(clp->cl_net, nfs_net_id); + nfs_localio_disable_client(clp); /* -EIO all pending I/O */ if (!IS_ERR(clp->cl_rpcclient)) rpc_shutdown_client(clp->cl_rpcclient); - put_net(clp->cl_net); + wake_up_var(&nn->nfs_client_list); put_nfs_version(clp->cl_nfs_mod); kfree(clp->cl_hostname); kfree(clp->cl_acceptor); diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 1aa67fca69b2fbd8afb1c51be78198220b1e13c7..0352e7e6ee270562a971d031ba02bdec96496288 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -2562,9 +2562,37 @@ static void nfs_net_exit(struct net *net) nfs_clients_exit(net); } +static bool all_clients_gone(struct nfs_net *nn) +{ + bool gone; + + spin_lock(&nn->nfs_client_lock); + gone = list_empty(&nn->nfs_client_list); + spin_unlock(&nn->nfs_client_lock); + + return gone; +} + +static void nfs_net_pre_exit(struct net *net) +{ + struct nfs_net *nn = net_generic(net, nfs_net_id); + struct nfs_server *server; + struct nfs_client *clp; + + spin_lock(&nn->nfs_client_lock); + list_for_each_entry(server, &nn->nfs_volume_list, master_link) + nfs_server_shutdown(server); + list_for_each_entry(clp, &nn->nfs_client_list, cl_share_link) + rpc_clnt_shutdown(clp->cl_rpcclient); + spin_unlock(&nn->nfs_client_lock); + + wait_var_event(&nn->nfs_client_list, all_clients_gone(nn)); +} + static struct pernet_operations nfs_net_ops = { .init = nfs_net_init, .exit = nfs_net_exit, + .pre_exit = nfs_net_pre_exit, .id = &nfs_net_id, .size = sizeof(struct nfs_net), }; From patchwork Mon Mar 17 20:59:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019979 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7EA49205ABF; Mon, 17 Mar 2025 21:00:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245218; cv=none; b=t4tLbfBYaOvTmkCwEBezyL3BmwPKIQbcWSDwa/gVfUmVYPJpi/Hvu9ntvESJqop9ptQKnJvlow4HY4+oZLFuMbMM4uQZYA4LU2lj9nD+XH+xD3RKyu7nqovlVNKKs1EdLp9qFLbVl5PiU2YdHIbUbRds3o3V4E4GDl/EMkZRRIs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245218; c=relaxed/simple; bh=IBV+vN6wOOZiC4bOQLfVH5Q5rc2w53Ap+h6wej5B8qc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e+UMcTIDfxiiuF+YaxO3v1MIXqPNBS6y4i77+xbz+kUYEwGjf66criVzjLcdkz3LwwRXvnEwQhDoAaAf7eaeiOvaCX/LAVnnNzo0+nkJGJExZvMq6cr84FCVubZNESe5b/rtrulKcPrqzcQxsqg0z/A9jbChjOx1pOoxc/Iiafw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EmVkQaKf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EmVkQaKf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6E0CCC4CEED; Mon, 17 Mar 2025 21:00:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245217; bh=IBV+vN6wOOZiC4bOQLfVH5Q5rc2w53Ap+h6wej5B8qc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EmVkQaKfzpRjlixX5u6ptOjwQlYK0bGuuPHyha9OuLfW6ua0AD2ogyTTEm5nL099M n1jssYiqefE9815iK4hN4hI+ScA8GtKI22Gw5YofhHyH4iK0EGwDkukpfVzjvWnTqy NcWIhCLK4mX2QZqGmH214CDHLHmKmiBxcuPeXTC5iicEgqUaJ9GGluoLcNykz1bjKw p9OWKJvBmXFxGYNj1XkIfX9klwjlgARUJw32F8VmYhZV8TPsT7Vo6TTctHFjUgGQPG kZWv0+jm+1SRXLzxIhhCY8ShyN2xbjaTUbCCfWoV9lrrN8NRBQm5DqB6WB/nZINScy vsYPEomqEyEYQ== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:58 -0400 Subject: [PATCH RFC 6/9] auth_gss: shut down gssproxy rpc_clnt in net pre_exit Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-6-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2322; i=jlayton@kernel.org; h=from:subject:message-id; bh=IBV+vN6wOOZiC4bOQLfVH5Q5rc2w53Ap+h6wej5B8qc=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1VqJI3DHTF0owzCuhiL67WUbGvo0HYo6WEq 17eeapc+YGJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVQAKCRAADmhBGVaC FeHqD/96hvh2LiqTHfHVE0QZOsFKZoN4m7gbdMKfPj7r0UmhIVRZYZDOWof3BCO60OYP+tPPkrA 5zY+NbtNYpJlByPeEf2WBAeCGAKzJHaaLa4ItQ6qeJ1sqqoz6oqiMUu0fPQAbLoTqjZxcf2HNDS fOwU951CjBHUcLk0y2VHfjI7dfPiuN3IilfVG+xBuHXtqtAkMshyRfKKBQQtqK5MpKK5/TePPhf OuAz0Ra/2DsemXiwpq+XaSTNBC5jjIRMiCjrM6d25iz4pBMZ3wB06j/1oxrAJcdYxiWxoA6pa4g l/kQ+xK78Ofaqfe2dmY4BkecHvO3G+/rtwbIF22dgdMZIObfp6sCT5b9lyocLllp6wCUVvxYtJr Y73hDrHJcPKJBHDtJLxBDcXgkRP2YcBPhWlbjuv2HftHyXIXKpVnfekyw6yxP1pu38IXje0L33J TVeMor39kTovZF4wswsDY1WYznO4Mjzo4ybOUIMfP/86eVfArnyBvy5iWO2X+HyczMnzYs494ZP rYrchWUn+FPLpdEUezowescnGQP5hAuBHsdEMgTJ0B+WOtDMbIe5pZb1augpwUdE/oFpbAMymcz DQd4x8sonGCins1BXuWWpJ/xTdh7IoXBY5e+vbA7Nl7lfU7uK9HYPIhIHxa5Qbsf2mrW4q42Wdj spw+/nr2QxfaoVg== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 With a coming change to rpc_xprt's not holding a reference to the netns, it will be necessary to shut down the gssp_clnt in pre_exit rather than the netns exit routine. Signed-off-by: Jeff Layton --- include/linux/sunrpc/svcauth_gss.h | 1 + net/sunrpc/auth_gss/auth_gss.c | 6 ++++++ net/sunrpc/auth_gss/svcauth_gss.c | 7 ++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/linux/sunrpc/svcauth_gss.h b/include/linux/sunrpc/svcauth_gss.h index f09c82b0a7aefed0b4ce6ab60258a2d34cea8e27..0dfda2f25f7fdb16a6bc9e537399548e47dfde56 100644 --- a/include/linux/sunrpc/svcauth_gss.h +++ b/include/linux/sunrpc/svcauth_gss.h @@ -19,6 +19,7 @@ int gss_svc_init(void); void gss_svc_shutdown(void); int gss_svc_init_net(struct net *net); +void gss_svc_pre_shutdown_net(struct net *net); void gss_svc_shutdown_net(struct net *net); struct auth_domain *svcauth_gss_register_pseudoflavor(u32 pseudoflavor, char *name); diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 369310909fc98596c8a06db8ac3c976a719ca7b2..78571776f446e2097bf25642c182d57546502803 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c @@ -2242,9 +2242,15 @@ static __net_exit void rpcsec_gss_exit_net(struct net *net) gss_svc_shutdown_net(net); } +static __net_exit void rpcsec_gss_pre_exit_net(struct net *net) +{ + gss_svc_pre_shutdown_net(net); +} + static struct pernet_operations rpcsec_gss_net_ops = { .init = rpcsec_gss_init_net, .exit = rpcsec_gss_exit_net, + .pre_exit = rpcsec_gss_pre_exit_net, }; /* diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c index 73a90ad873fb9da659ba76184b2e2a0e5324ce0d..624e88be6eb3163b131902c4800e4842e4c0808e 100644 --- a/net/sunrpc/auth_gss/svcauth_gss.c +++ b/net/sunrpc/auth_gss/svcauth_gss.c @@ -2102,11 +2102,16 @@ gss_svc_init_net(struct net *net) return rv; } +void +gss_svc_pre_shutdown_net(struct net *net) +{ + destroy_use_gss_proxy_proc_entry(net); +} + void gss_svc_shutdown_net(struct net *net) { destroy_krb5_enctypes_proc_entry(net); - destroy_use_gss_proxy_proc_entry(net); rsi_cache_destroy_net(net); rsc_cache_destroy_net(net); } From patchwork Mon Mar 17 20:59:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019980 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B7EEE2063C3; Mon, 17 Mar 2025 21:00:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245219; cv=none; b=SAuslX/byX853RkP/rX+W73s2z0We2Rbu+FTcIJRVa4f37bNKsv+vUAZ6grendorZQusnFDhEqNI9tYBtsS7tL3Dz7yv6REJziDjbx/AgJu3rRsyV0e2R0LEpUyYaUMZaRt9RDL8OU++e7p++PK/WfmOTLXgfKEwxrlpuKa2vBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245219; c=relaxed/simple; bh=FZgJlwD7q/KVkhllrSyqU3sWFbaUznyU5+XlxzH/Gu8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qpr4O8Q3e9WxkHMTgVH8JFzWajHvnzBbMRuw9cMTcJUiXru0vElpOsgtuFipItkw7kazVcJ4s1xlKAgk1ZOsk5lmUXZaLAnu6XXhlpbQXYrvlUTopuFQ0bKck8TRv3by8Q31knbvpYFcXqJMAK9WgKrGVcXIh244+nJ+b7LZsEc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rIxwAt6f; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rIxwAt6f" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 273FEC4CEF1; Mon, 17 Mar 2025 21:00:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245219; bh=FZgJlwD7q/KVkhllrSyqU3sWFbaUznyU5+XlxzH/Gu8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=rIxwAt6fr2y5XeH81YL7FXRqmGVCx7SoavWD56Dl7bBLvmnreN38RuFeY0718UbNT wrpnBbXyEvQi7VTzwEutZ7+00YDStUy+jaQ7M2mFtUxFmjq5mTRYoKMLba8s6WiDew e7E21YCo9+YxzGdLsWo9Qp1YOZU0SXqBxOON16j1cbJuSmYi/bfSXi/2JZ7ZIXOTKS 9xFtjxvzylitoQqALz1v8PZ/ryIJoxgRsu9j9F/avvn8nwqBYMIpeBL4vsk4Ay/969 qN0eh5fjkeFQ/NkKrR9rI+lfthUgNnMP3DhQUnZv2nMckLlOYlWWV70dVTnbaYIHDX 4OmqGJk1Vb5gQ== From: Jeff Layton Date: Mon, 17 Mar 2025 16:59:59 -0400 Subject: [PATCH RFC 7/9] auth_gss: don't hold a net reference in gss_auth Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-7-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2238; i=jlayton@kernel.org; h=from:subject:message-id; bh=FZgJlwD7q/KVkhllrSyqU3sWFbaUznyU5+XlxzH/Gu8=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1VPI8r7zGxukH/RwNzSdWwBI5QXfWDlhMDL /EB68xdHmiJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVQAKCRAADmhBGVaC Fe3+D/9m/uy/A2wuVHMYADSwBcoYLZxk20mBOjp8qMXSH+EdJ/52UKcS/dauuVeOWtwlw+fUPu7 wvRa9euPx9cbflNj67rGpCFRlynHicfSfukmLNEqYclDc84Dtw0P61ekDynYY3AuHVzTL0sBp0J KbixtyOCMB8Z7z1Q7tWXJIK7d2kecz+Ja8W9FR8FadAvtuhaO9HMGwdLkASeneUq0gzw4ZV2y3j fhsqsulm68M3T7mPQP28h3DfudyfC+BZIBmNaRRzEIJw7t9WcKXBdxNzzAqXUBeXeaDMF8nLooD n/vt4vXeNZua6rR+SHZoGSv8xsgBzoZRUEzJcf+rqAPAEhPgKgaIaUmNHDWn069VSHDIrIovNSK VfvYIJ4NKjY86diy+xU5mfTv9DMEVfVJvvbNM3ihuMKu9TtnzSdVZCl/j36CDUg22iz3qQphuQ1 5tqoi6jWbdmjcgSVutmGu5DgAMEHAHiYpIOUnEkw3pDK4B88vAZcGwJiEcbpmQHzsPVo/202Ua1 b8KRq0g4OngyqvpwtsEXMyA16rPYLavup75HG9Gu6aiUD742isRTn4iiQWF9nrNzCxjTlxTwuqE ndyi5zCBbnqs9O5dsgK3es96LWHDjo3tkXAikBiJE9Euz/jFDHKlYySIl3Ohr0gKNsqb6fNnSBh 5L0fJf9nQiiQgLA== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 It's not clear to me that these net references were ever needed. They were added in commit e726340ac9cf ("RPCSEC_GSS: Further cleanups"), but there no is explanation for taking it in the patch description and it's not clear what race this prevents. Now that the gssproxy client is shut down in pre_exit, there should be no need to keep a reference here. Signed-off-by: Jeff Layton --- net/sunrpc/auth_gss/auth_gss.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 78571776f446e2097bf25642c182d57546502803..9698914d7ed3e5674351f9cc4f43c08d7b746bc3 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c @@ -89,7 +89,6 @@ struct gss_auth { enum rpc_gss_svc service; struct rpc_clnt *client; struct net *net; - netns_tracker ns_tracker; /* * There are two upcall pipes; dentry[1], named "gssd", is used * for the new text-based upcall; dentry[0] is named after the @@ -1045,12 +1044,11 @@ gss_create_new(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt) goto err_free; } gss_auth->client = clnt; - gss_auth->net = get_net_track(rpc_net_ns(clnt), &gss_auth->ns_tracker, - GFP_KERNEL); + gss_auth->net = rpc_net_ns(clnt); err = -EINVAL; gss_auth->mech = gss_mech_get_by_pseudoflavor(flavor); if (!gss_auth->mech) - goto err_put_net; + goto err_free; gss_auth->service = gss_pseudoflavor_to_service(gss_auth->mech, flavor); if (gss_auth->service == 0) goto err_put_mech; @@ -1101,8 +1099,6 @@ gss_create_new(const struct rpc_auth_create_args *args, struct rpc_clnt *clnt) rpcauth_destroy_credcache(auth); err_put_mech: gss_mech_put(gss_auth->mech); -err_put_net: - put_net_track(gss_auth->net, &gss_auth->ns_tracker); err_free: kfree(gss_auth->target_name); kfree(gss_auth); @@ -1118,7 +1114,6 @@ gss_free(struct gss_auth *gss_auth) gss_pipe_free(gss_auth->gss_pipe[0]); gss_pipe_free(gss_auth->gss_pipe[1]); gss_mech_put(gss_auth->mech); - put_net_track(gss_auth->net, &gss_auth->ns_tracker); kfree(gss_auth->target_name); kfree(gss_auth); From patchwork Mon Mar 17 21:00:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019981 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 729282066E0; Mon, 17 Mar 2025 21:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245221; cv=none; b=KwAnqEZuGmyft6W5fDJp7glkwrtC1qbVHHiuS9Z0+QWwcNRAUpwkjI4b16AjSNoXZnxXphcFFCrJoJsZERH+AvVW1fm/JY+vHjIUZ9bzp0+kluLCsVj/eFiIW21JbLaZnFJXa0trSlQuAj1I+2jhvVn1KoHCcsryLLIKT8LF7hA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245221; c=relaxed/simple; bh=Z5/wSBNGoRjPZe6UknBCcjWslKIoPkOSczStlrLokkU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EnGgG+XhAo3PtQPMavZZQ24ZbpbuPIOhNDmJbrp0pRqtfvLhtkmYFAjm0se3sPnV5ySeIPrRQm4R0/sTDFBuPvgitWQH+CxSpc+nGG5XVPQQWJu1p+MU+WDJXUoiHlfzUAHAwNhQcUAnK+I8QOhALuW8fkSfe7lUc2+zOGvYtHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dlC0xV7g; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dlC0xV7g" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4112C4CEEF; Mon, 17 Mar 2025 21:00:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245221; bh=Z5/wSBNGoRjPZe6UknBCcjWslKIoPkOSczStlrLokkU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dlC0xV7gWnb5Piajps05kRnNTjz4kFH/UqeRyh8mxSq6O+U8JRgpM+31MOU8EESQ/ bnMSBbZbVyO7hxfs6rRY1aLbNtcS/cBb0XyDGDVx1/DP8WKCXkYqCww25Zjf6uOGon OuwpWqB4twFviRdoFaAgO8TiDWsBEBJckD0MlCO9JFjKHh+y4zUO9Acwk+JY80364X qL1laAMaHq4AkXP22RzLn9uiKMs7ZQ04USiP5Pc/pxMTNrGn037C+efmEY1Lb4Vbtl Okvc3XrBMEnFKX/Ex4d8y4lIewu510llwJI4eCIFbyLJ81U1iRd2MND6WajfKUqy5R biWmzAVjkYJMQ== From: Jeff Layton Date: Mon, 17 Mar 2025 17:00:00 -0400 Subject: [PATCH RFC 8/9] sunrpc: don't hold a struct net reference in rpc_xprt Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-8-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3896; i=jlayton@kernel.org; h=from:subject:message-id; bh=Z5/wSBNGoRjPZe6UknBCcjWslKIoPkOSczStlrLokkU=; b=owEBbQKS/ZANAwAIAQAOaEEZVoIVAcsmYgBn2I1Vj76f1dyfLM00qicCuaAy4iF0NNiiErKEW Ny/ljZX97KJAjMEAAEIAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCZ9iNVQAKCRAADmhBGVaC FZMyEACW1N5BEF57kUM5FZfXzAJBtxwviaBnfpvfg6IdomUa+OMZNyknDcvW2Cpne3A25FxSbRq JRwRzuvkGKuTntaWfOo0XE7C8CuxF4Ue9eE6qEK9tF9nal8csEUVWJPvF6HeR+NWFx9XXAIBc31 jxqtEH/EL/04oCwKshI8ICyG/wP2EqadP2J8CrxD6lXycXGEYlk2PeNkpfmEXNxg2auKP+nfu6I 4AIBbzO9hRx4CS1SlgHm+YoP77dt3c2XYoGQrM/91VcTmvbtZNWovU+0dLHpyNHkGSyaajxv2GH X58AI//LLSiz5e+PyyQrCGABcOFB+XJyUJvC+PpShcFAKK9rq/mKTq5TlYN0pnU+k8lZyz+2hrm uSxMalLCSyGqeqMP5ayTthCKaRqYB3/riEpe/uwcKbIkQt2hnEcXDVnAEAUh/jYkWyk5Tbe0Pt0 OhCEIdhhVrPx4ztil89apW1KnmCOFdA7DGKyJqqBws/o9dC6GULrnppVcUJsiInCOU+h6cg13te HvA9U0SN5LQxnbcy39zMWK7KM8lDzTDWRHAk1ox/69VoyhXkGu/Hcgrl+O3KE9HGaMzsoJ/hDca oyVNBxxUVzFNY+vycfJ54kVJrmZXhYDr3053aff/TDogLu7leIGeuC3mgq7fd/ERghS7UA5ZtTX wcUBQkaosHktBow== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 Currently each rpc_xprt holds a reference to struct net. This is problematic for at least a couple of reasons: 1/ a container with an nfs mount inside can spontaneously die and take network connectivity with it. When this happens, the netns and rpc_clnt stick around and the client continually tries to retransmit any RPCs in a net namespace that is otherwise defunct. 2/ the gssproxy rpc_clnt is torn down when the netns exits, but that can never happen due to the circular dependency. The result is that any container that runs gssproxy will leak the netns on exit. Instead of holding a reference to the netns in rpc_xprt, add a pre_exit routine that will shut down all rpc_clnt's associated with the netns, and then wait for the list to go empty. Signed-off-by: Jeff Layton --- include/linux/sunrpc/xprt.h | 1 - net/sunrpc/clnt.c | 2 ++ net/sunrpc/sunrpc_syms.c | 29 +++++++++++++++++++++++++++++ net/sunrpc/xprt.c | 3 +-- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 81b952649d35e3ad4fa8c7e77388ac2ceb44ce60..67c41917e3d83fc0b5c2240f2f1243a2b67da0ec 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h @@ -296,7 +296,6 @@ struct rpc_xprt { } stat; struct net *xprt_net; - netns_tracker ns_tracker; const char *servername; const char *address_strings[RPC_DISPLAY_MAX]; #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 0028858b12d97e7b45f4c24cfbd761ba2a734b32..80cd1ddd155db64fc5b2449ebf54714d80a2838c 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c @@ -91,6 +91,8 @@ static void rpc_unregister_client(struct rpc_clnt *clnt) spin_lock(&sn->rpc_client_lock); list_del(&clnt->cl_clients); + if (list_empty(&sn->all_clients)) + wake_up_var(&sn->all_clients); spin_unlock(&sn->rpc_client_lock); } diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c index bab6cab2940524a970422b62b3fa4212c61c4f43..d919f77522a7c6f7c477b2674f0b3a54155c91d9 100644 --- a/net/sunrpc/sunrpc_syms.c +++ b/net/sunrpc/sunrpc_syms.c @@ -77,9 +77,38 @@ static __net_exit void sunrpc_exit_net(struct net *net) WARN_ON_ONCE(!list_empty(&sn->all_clients)); } +static void shutdown_all_clients(struct sunrpc_net *sn) +{ + struct rpc_clnt *clnt; + + lockdep_assert_held(&sn->rpc_client_lock); + + list_for_each_entry(clnt, &sn->all_clients, cl_clients) + rpc_clnt_shutdown(clnt); +} + +static bool all_clients_gone(struct sunrpc_net *sn) +{ + bool empty; + + spin_lock(&sn->rpc_client_lock); + empty = list_empty(&sn->all_clients); + spin_unlock(&sn->rpc_client_lock); + return empty; +} + +static void sunrpc_pre_exit_net(struct net *net) +{ + struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); + + shutdown_all_clients(sn); + wait_var_event(&sn->all_clients, all_clients_gone(sn)); +} + static struct pernet_operations sunrpc_net_ops = { .init = sunrpc_init_net, .exit = sunrpc_exit_net, + .pre_exit = sunrpc_pre_exit_net, .id = &sunrpc_net_id, .size = sizeof(struct sunrpc_net), }; diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 09f245cda5262a572c450237419c80b183a83568..040cc9bf92cfa8f28edaee707a09a9e8d9955c41 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1849,7 +1849,6 @@ EXPORT_SYMBOL_GPL(xprt_alloc); void xprt_free(struct rpc_xprt *xprt) { - put_net_track(xprt->xprt_net, &xprt->ns_tracker); xprt_free_all_slots(xprt); xprt_free_id(xprt); rpc_sysfs_xprt_destroy(xprt); @@ -2047,7 +2046,7 @@ static void xprt_init(struct rpc_xprt *xprt, struct net *net) xprt_init_xid(xprt); - xprt->xprt_net = get_net_track(net, &xprt->ns_tracker, GFP_KERNEL); + xprt->xprt_net = net; } /** From patchwork Mon Mar 17 21:00:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 14019982 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D7B4206F23; Mon, 17 Mar 2025 21:00:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245223; cv=none; b=EhpzXlfKR0ptggqGmbed/qKE2Cw2kjPibz68Dz1D5cDZDei5ccGnoAPcXXdX989/02ff3TKzTgCm+UrZgdfeO5Yx5gGlpJRXwsEv7PghQ/RrSOBF7mwm74hagr9mjmaTz+i5DGyjgowVPHVn6TKi3hiMNvNNmFE4V3jZxK6+BVs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742245223; c=relaxed/simple; bh=jM6hQB3KxGdlYpqgDDu0LJlP7dZIsC6hRFDyQ4A1hPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KLtXACSiooIdZxDabxaVQwOhEOkhkAn+tm3jZtSdDN77Fg8p7YqSbKigvXF162Y9bHSH+BvgGiy09Uum70NqK5ZWjfMmuqRQVVwtM53u3Gq2P9nRVBWRcoxHwtdAmNTV7SOQyA8+dHCIih4OXPZcWlURh9r3Vd9hWODCImTLHt8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Mzh6aZRq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Mzh6aZRq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D932C4CEF1; Mon, 17 Mar 2025 21:00:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742245223; bh=jM6hQB3KxGdlYpqgDDu0LJlP7dZIsC6hRFDyQ4A1hPY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Mzh6aZRqfG2krE4LFAsF5dbxEUJR/6aFy43gZb/TkEhAnrPhiE/1zyVDd//CMXpYo TDj79lvKSYgNPMG+ntWnAajFOytb1DiQrLBmVMMQbjwClptCJ1wCerUMpuVAwlFfJd FRduzxhz0ddp6nV6UGvf41pTXFNerhc+owBa2yWFnnpL3eJhfwu6+tzxtNYhdqeB3K aQUXHEWFQkML+0ulD5USiomVOUlL+TZZExzyfFVKcEGgZb5Yz4FnBn5g7JJRnKo6Gl 8oeAlwjaLfE7b9wL3gMxJquV7R1JoV/QBzW7PgXD24frNOSZAU+DCHuug4R/ojrGiO mqiMsF3BVDPlQ== From: Jeff Layton Date: Mon, 17 Mar 2025 17:00:01 -0400 Subject: [PATCH RFC 9/9] sunrpc: don't upgrade passive net reference in xs_create_sock Precedence: bulk X-Mailing-List: linux-nfs@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250317-rpc-shutdown-v1-9-85ba8e20b75d@kernel.org> References: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> In-Reply-To: <20250317-rpc-shutdown-v1-0-85ba8e20b75d@kernel.org> To: Trond Myklebust , Anna Schumaker , Chuck Lever , Neil Brown , Olga Kornievskaia , Dai Ngo , Tom Talpey , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman Cc: Josef Bacik , Benjamin Coddington , linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=836; i=jlayton@kernel.org; h=from:subject:message-id; bh=jM6hQB3KxGdlYpqgDDu0LJlP7dZIsC6hRFDyQ4A1hPY=; b=kA0DAAgBAA5oQRlWghUByyZiAGfYjVWiRKkxD6qwL79Bm7MvXbKxaKqHN3zIajad3pvAqXM3c 4kCMwQAAQgAHRYhBEvA17JEcbKhhOr10wAOaEEZVoIVBQJn2I1VAAoJEAAOaEEZVoIV3loQAJMI HnR/zomdrtqt3k0IG0M7q9Bqe8M8FtP8izUB5Ny0WlY84to4WT+HXgXxubH6hWDwv6swdi0MJQA ztwnokr7fU3GNLmWGFgv7xRqezpOyThr8FgAD1F4MOcsSlOhIZC/0V3SqwfeQkHJjidtw2gC5Ks ZzdynlUOq133ZKMOKi9P5Stq8T6wf5uaLIwYoutrhOWzGSHmes1wZOi58tJMYHKa9oBQVxsA0VH ng818IoePQgBlKHzDxwD+Zzp9TO/SWND26I2/+kJB8mCt6oLXNoKPRD/65OOfPEZRQb9486I7J+ NBs/23felh7QEI85hAsSjM7C1lN4EUmTf91sRc9YaELlMa0dE/JNIolnox/6kco6FTeqLIGVkAU W7Qy2e8dE89db2fdqQRt48vMwqIcezz+fcsLC4Y/t0foS9HMNoi29HaLQMfGXdgfi8l0Ym1/xUT EOzW2WOc+m6791GGn+eDU8rIbXassJbZOYLpNJothbIQSZ+H1fEZoOeAMc3lNpaR/Qj/m3eNkY3 Kk9S8fGwTzgTrfS00vaFBnoXyyAafdelCEtmKIWGTbJ1VZfANRLIFa7No00bIlQkH8ZTWXwqyC5 mzn2923EPj+reJUqzhKS3pVeOIySpZtpyulq42I/v/GdyxLuuFMQhiz83/3n76GLvZgsmMXOlTj zJeXK X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 With the move to having sunrpc client xprts not hold active references to the net namespace, there is no need to upgrade the socket's reference in xs_create_sock. Just keep the passive reference instead. Signed-off-by: Jeff Layton --- net/sunrpc/xprtsock.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 83cc095846d356f24aed26e2f98525662a6cff1f..0c3d7552f772d6f8477a3aed8f0c513b62cdf589 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -1941,9 +1941,6 @@ static struct socket *xs_create_sock(struct rpc_xprt *xprt, goto out; } - if (protocol == IPPROTO_TCP) - sk_net_refcnt_upgrade(sock->sk); - filp = sock_alloc_file(sock, O_NONBLOCK, NULL); if (IS_ERR(filp)) return ERR_CAST(filp);