Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <dai.ngo@oracle.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

authored by

Dai Ngo and committed by
Chuck Lever
02591f9f ec59659b

+22 -3
+4
fs/Kconfig
··· 333 333 depends on NFSD || NFS_FS || LOCKD 334 334 default y 335 335 336 + config NFS_V4_2_SSC_HELPER 337 + tristate 338 + default y if NFS_V4=y || NFS_FS=y 339 + 336 340 source "net/sunrpc/Kconfig" 337 341 source "fs/ceph/Kconfig" 338 342 source "fs/cifs/Kconfig"
+4
fs/nfs/nfs4file.c
··· 420 420 */ 421 421 void nfs42_ssc_register_ops(void) 422 422 { 423 + #ifdef CONFIG_NFSD_V4 423 424 nfs42_ssc_register(&nfs4_ssc_clnt_ops_tbl); 425 + #endif 424 426 } 425 427 426 428 /** ··· 433 431 */ 434 432 void nfs42_ssc_unregister_ops(void) 435 433 { 434 + #ifdef CONFIG_NFSD_V4 436 435 nfs42_ssc_unregister(&nfs4_ssc_clnt_ops_tbl); 436 + #endif 437 437 } 438 438 #endif /* CONFIG_NFS_V4_2 */ 439 439
+12
fs/nfs/super.c
··· 86 86 }; 87 87 EXPORT_SYMBOL_GPL(nfs_sops); 88 88 89 + #ifdef CONFIG_NFS_V4_2 89 90 static const struct nfs_ssc_client_ops nfs_ssc_clnt_ops_tbl = { 90 91 .sco_sb_deactive = nfs_sb_deactive, 91 92 }; 93 + #endif 92 94 93 95 #if IS_ENABLED(CONFIG_NFS_V4) 94 96 static int __init register_nfs4_fs(void) ··· 113 111 } 114 112 #endif 115 113 114 + #ifdef CONFIG_NFS_V4_2 116 115 static void nfs_ssc_register_ops(void) 117 116 { 117 + #ifdef CONFIG_NFSD_V4 118 118 nfs_ssc_register(&nfs_ssc_clnt_ops_tbl); 119 + #endif 119 120 } 120 121 121 122 static void nfs_ssc_unregister_ops(void) 122 123 { 124 + #ifdef CONFIG_NFSD_V4 123 125 nfs_ssc_unregister(&nfs_ssc_clnt_ops_tbl); 126 + #endif 124 127 } 128 + #endif /* CONFIG_NFS_V4_2 */ 125 129 126 130 static struct shrinker acl_shrinker = { 127 131 .count_objects = nfs_access_cache_count, ··· 156 148 ret = register_shrinker(&acl_shrinker); 157 149 if (ret < 0) 158 150 goto error_3; 151 + #ifdef CONFIG_NFS_V4_2 159 152 nfs_ssc_register_ops(); 153 + #endif 160 154 return 0; 161 155 error_3: 162 156 nfs_unregister_sysctl(); ··· 178 168 unregister_shrinker(&acl_shrinker); 179 169 nfs_unregister_sysctl(); 180 170 unregister_nfs4_fs(); 171 + #ifdef CONFIG_NFS_V4_2 181 172 nfs_ssc_unregister_ops(); 173 + #endif 182 174 unregister_filesystem(&nfs_fs_type); 183 175 } 184 176
+1 -1
fs/nfs_common/Makefile
··· 7 7 nfs_acl-objs := nfsacl.o 8 8 9 9 obj-$(CONFIG_GRACE_PERIOD) += grace.o 10 - obj-$(CONFIG_GRACE_PERIOD) += nfs_ssc.o 10 + obj-$(CONFIG_NFS_V4_2_SSC_HELPER) += nfs_ssc.o
-2
fs/nfs_common/nfs_ssc.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 2 /* 3 - * fs/nfs_common/nfs_ssc_comm.c 4 - * 5 3 * Helper for knfsd's SSC to access ops in NFS client modules 6 4 * 7 5 * Author: Dai Ngo <dai.ngo@oracle.com>
+1
fs/nfsd/Kconfig
··· 76 76 select CRYPTO_MD5 77 77 select CRYPTO_SHA256 78 78 select GRACE_PERIOD 79 + select NFS_V4_2_SSC_HELPER if NFS_V4_2 79 80 help 80 81 This option enables support in your system's NFS server for 81 82 version 4 of the NFS protocol (RFC 3530).