From 863f34aa0ec76cbfba9b2b5e58894e04c8f9514b Mon Sep 17 00:00:00 2001 From: lean Date: Wed, 13 Apr 2022 16:38:51 +0800 Subject: [PATCH] kernel : 5.10: backport NFSv4_2 SSC helper commit --- ...SSC-helper-should-use-its-own-config.patch | 152 ++++++++++++++++++ ...ve-ifdef-CONFIG_NFSD-from-client-SSC.patch | 92 +++++++++++ 2 files changed, 244 insertions(+) create mode 100644 target/linux/generic/backport-5.10/350-v5.12-NFSv4_2-SSC-helper-should-use-its-own-config.patch create mode 100644 target/linux/generic/backport-5.10/351-v5.13-NFSv4_2-Remove-ifdef-CONFIG_NFSD-from-client-SSC.patch diff --git a/target/linux/generic/backport-5.10/350-v5.12-NFSv4_2-SSC-helper-should-use-its-own-config.patch b/target/linux/generic/backport-5.10/350-v5.12-NFSv4_2-SSC-helper-should-use-its-own-config.patch new file mode 100644 index 000000000..4639fdbc3 --- /dev/null +++ b/target/linux/generic/backport-5.10/350-v5.12-NFSv4_2-SSC-helper-should-use-its-own-config.patch @@ -0,0 +1,152 @@ +From 02591f9febd5f69bb4c266a4abf899c4cf21964f Mon Sep 17 00:00:00 2001 +From: Dai Ngo +Date: Thu, 28 Jan 2021 01:42:26 -0500 +Subject: [PATCH] NFSv4_2: SSC helper should use its own config. + +Currently NFSv4_2 SSC helper, nfs_ssc, incorrectly uses GRACE_PERIOD +as its config. Fix by adding new config NFS_V4_2_SSC_HELPER which +depends on NFS_V4_2 and is automatically selected when NFSD_V4 is +enabled. Also removed the file name from a comment in nfs_ssc.c. + +Signed-off-by: Dai Ngo +Signed-off-by: Chuck Lever +--- + fs/Kconfig | 4 ++++ + fs/nfs/nfs4file.c | 4 ++++ + fs/nfs/super.c | 12 ++++++++++++ + fs/nfs_common/Makefile | 2 +- + fs/nfs_common/nfs_ssc.c | 2 -- + fs/nfsd/Kconfig | 1 + + 6 files changed, 22 insertions(+), 3 deletions(-) + +diff --git a/fs/Kconfig b/fs/Kconfig +index aa4c122823018b..a55bda4233bbea 100644 +--- a/fs/Kconfig ++++ b/fs/Kconfig +@@ -333,6 +333,10 @@ config NFS_COMMON + depends on NFSD || NFS_FS || LOCKD + default y + ++config NFS_V4_2_SSC_HELPER ++ tristate ++ default y if NFS_V4=y || NFS_FS=y ++ + source "net/sunrpc/Kconfig" + source "fs/ceph/Kconfig" + source "fs/cifs/Kconfig" +diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c +index 57b3821d975a35..441a2fa073c8f2 100644 +--- a/fs/nfs/nfs4file.c ++++ b/fs/nfs/nfs4file.c +@@ -420,7 +420,9 @@ static const struct nfs4_ssc_client_ops nfs4_ssc_clnt_ops_tbl = { + */ + void nfs42_ssc_register_ops(void) + { ++#ifdef CONFIG_NFSD_V4 + nfs42_ssc_register(&nfs4_ssc_clnt_ops_tbl); ++#endif + } + + /** +@@ -431,7 +433,9 @@ void nfs42_ssc_register_ops(void) + */ + void nfs42_ssc_unregister_ops(void) + { ++#ifdef CONFIG_NFSD_V4 + nfs42_ssc_unregister(&nfs4_ssc_clnt_ops_tbl); ++#endif + } + #endif /* CONFIG_NFS_V4_2 */ + +diff --git a/fs/nfs/super.c b/fs/nfs/super.c +index 4034102010f055..c7a924580eec9c 100644 +--- a/fs/nfs/super.c ++++ b/fs/nfs/super.c +@@ -86,9 +86,11 @@ const struct super_operations nfs_sops = { + }; + EXPORT_SYMBOL_GPL(nfs_sops); + ++#ifdef CONFIG_NFS_V4_2 + static const struct nfs_ssc_client_ops nfs_ssc_clnt_ops_tbl = { + .sco_sb_deactive = nfs_sb_deactive, + }; ++#endif + + #if IS_ENABLED(CONFIG_NFS_V4) + static int __init register_nfs4_fs(void) +@@ -111,15 +113,21 @@ static void unregister_nfs4_fs(void) + } + #endif + ++#ifdef CONFIG_NFS_V4_2 + static void nfs_ssc_register_ops(void) + { ++#ifdef CONFIG_NFSD_V4 + nfs_ssc_register(&nfs_ssc_clnt_ops_tbl); ++#endif + } + + static void nfs_ssc_unregister_ops(void) + { ++#ifdef CONFIG_NFSD_V4 + nfs_ssc_unregister(&nfs_ssc_clnt_ops_tbl); ++#endif + } ++#endif /* CONFIG_NFS_V4_2 */ + + static struct shrinker acl_shrinker = { + .count_objects = nfs_access_cache_count, +@@ -148,7 +156,9 @@ int __init register_nfs_fs(void) + ret = register_shrinker(&acl_shrinker); + if (ret < 0) + goto error_3; ++#ifdef CONFIG_NFS_V4_2 + nfs_ssc_register_ops(); ++#endif + return 0; + error_3: + nfs_unregister_sysctl(); +@@ -168,7 +178,9 @@ void __exit unregister_nfs_fs(void) + unregister_shrinker(&acl_shrinker); + nfs_unregister_sysctl(); + unregister_nfs4_fs(); ++#ifdef CONFIG_NFS_V4_2 + nfs_ssc_unregister_ops(); ++#endif + unregister_filesystem(&nfs_fs_type); + } + +diff --git a/fs/nfs_common/Makefile b/fs/nfs_common/Makefile +index fa82f5aaa6d95b..119c75ab9fd08e 100644 +--- a/fs/nfs_common/Makefile ++++ b/fs/nfs_common/Makefile +@@ -7,4 +7,4 @@ obj-$(CONFIG_NFS_ACL_SUPPORT) += nfs_acl.o + nfs_acl-objs := nfsacl.o + + obj-$(CONFIG_GRACE_PERIOD) += grace.o +-obj-$(CONFIG_GRACE_PERIOD) += nfs_ssc.o ++obj-$(CONFIG_NFS_V4_2_SSC_HELPER) += nfs_ssc.o +diff --git a/fs/nfs_common/nfs_ssc.c b/fs/nfs_common/nfs_ssc.c +index f43bbb3739134b..7c1509e968c817 100644 +--- a/fs/nfs_common/nfs_ssc.c ++++ b/fs/nfs_common/nfs_ssc.c +@@ -1,7 +1,5 @@ + // SPDX-License-Identifier: GPL-2.0-only + /* +- * fs/nfs_common/nfs_ssc_comm.c +- * + * Helper for knfsd's SSC to access ops in NFS client modules + * + * Author: Dai Ngo +diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig +index dbbc583d627306..821e5913faee49 100644 +--- a/fs/nfsd/Kconfig ++++ b/fs/nfsd/Kconfig +@@ -77,6 +77,7 @@ config NFSD_V4 + select CRYPTO_MD5 + select CRYPTO_SHA256 + select GRACE_PERIOD ++ select NFS_V4_2_SSC_HELPER if NFS_V4_2 + help + This option enables support in your system's NFS server for + version 4 of the NFS protocol (RFC 3530). diff --git a/target/linux/generic/backport-5.10/351-v5.13-NFSv4_2-Remove-ifdef-CONFIG_NFSD-from-client-SSC.patch b/target/linux/generic/backport-5.10/351-v5.13-NFSv4_2-Remove-ifdef-CONFIG_NFSD-from-client-SSC.patch new file mode 100644 index 000000000..9762d165d --- /dev/null +++ b/target/linux/generic/backport-5.10/351-v5.13-NFSv4_2-Remove-ifdef-CONFIG_NFSD-from-client-SSC.patch @@ -0,0 +1,92 @@ +From d9092b4bb2109502eb8972021a3f74febc931a63 Mon Sep 17 00:00:00 2001 +From: Dai Ngo +Date: Thu, 22 Apr 2021 03:37:49 -0400 +Subject: [PATCH] NFSv4.2: Remove ifdef CONFIG_NFSD from NFSv4.2 client SSC + code. + +The client SSC code should not depend on any of the CONFIG_NFSD config. +This patch removes all CONFIG_NFSD from NFSv4.2 client SSC code and +simplifies the config of CONFIG_NFS_V4_2_SSC_HELPER, NFSD_V4_2_INTER_SSC. + +Signed-off-by: Dai Ngo +Signed-off-by: Trond Myklebust +--- + fs/Kconfig | 4 ++-- + fs/nfs/nfs4file.c | 4 ---- + fs/nfs/super.c | 4 ---- + fs/nfsd/Kconfig | 2 +- + 4 files changed, 3 insertions(+), 11 deletions(-) + +diff --git a/fs/Kconfig b/fs/Kconfig +index a55bda4233bbea..afa585e62332bf 100644 +--- a/fs/Kconfig ++++ b/fs/Kconfig +@@ -334,8 +334,8 @@ config NFS_COMMON + default y + + config NFS_V4_2_SSC_HELPER +- tristate +- default y if NFS_V4=y || NFS_FS=y ++ bool ++ default y if NFS_V4_2 + + source "net/sunrpc/Kconfig" + source "fs/ceph/Kconfig" +diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c +index 441a2fa073c8f2..57b3821d975a35 100644 +--- a/fs/nfs/nfs4file.c ++++ b/fs/nfs/nfs4file.c +@@ -420,9 +420,7 @@ static const struct nfs4_ssc_client_ops nfs4_ssc_clnt_ops_tbl = { + */ + void nfs42_ssc_register_ops(void) + { +-#ifdef CONFIG_NFSD_V4 + nfs42_ssc_register(&nfs4_ssc_clnt_ops_tbl); +-#endif + } + + /** +@@ -433,9 +431,7 @@ void nfs42_ssc_register_ops(void) + */ + void nfs42_ssc_unregister_ops(void) + { +-#ifdef CONFIG_NFSD_V4 + nfs42_ssc_unregister(&nfs4_ssc_clnt_ops_tbl); +-#endif + } + #endif /* CONFIG_NFS_V4_2 */ + +diff --git a/fs/nfs/super.c b/fs/nfs/super.c +index 13a650750f04a8..5bfcc25571879a 100644 +--- a/fs/nfs/super.c ++++ b/fs/nfs/super.c +@@ -116,16 +116,12 @@ static void unregister_nfs4_fs(void) + #ifdef CONFIG_NFS_V4_2 + static void nfs_ssc_register_ops(void) + { +-#ifdef CONFIG_NFSD_V4 + nfs_ssc_register(&nfs_ssc_clnt_ops_tbl); +-#endif + } + + static void nfs_ssc_unregister_ops(void) + { +-#ifdef CONFIG_NFSD_V4 + nfs_ssc_unregister(&nfs_ssc_clnt_ops_tbl); +-#endif + } + #endif /* CONFIG_NFS_V4_2 */ + +diff --git a/fs/nfsd/Kconfig b/fs/nfsd/Kconfig +index d6cff5fbe705b4..c5346196c46f7e 100644 +--- a/fs/nfsd/Kconfig ++++ b/fs/nfsd/Kconfig +@@ -138,7 +138,7 @@ config NFSD_FLEXFILELAYOUT + + config NFSD_V4_2_INTER_SSC + bool "NFSv4.2 inter server to server COPY" +- depends on NFSD_V4 && NFS_V4_1 && NFS_V4_2 ++ depends on NFSD_V4 && NFS_V4_2 + help + This option enables support for NFSv4.2 inter server to + server copy where the destination server calls the NFSv4.2