NFSACL: Replace PROC() macro with open code
authorChuck Lever <chuck.lever@oracle.com>
Thu, 1 Oct 2020 22:59:07 +0000 (18:59 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 2 Oct 2020 13:37:41 +0000 (09:37 -0400)
Clean up: Follow-up on ten-year-old commit b9081d90f5b9 ("NFS: kill
off complicated macro 'PROC'") by performing the same conversion in
the NFSACL code. To reduce the chance of error, I copied the original
C preprocessor output and then made some minor edits.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs2acl.c
fs/nfsd/nfs3acl.c
include/uapi/linux/nfsacl.h

index cbab1d2..8d20e0d 100644 (file)
@@ -347,36 +347,62 @@ static void nfsaclsvc_release_access(struct svc_rqst *rqstp)
        fh_put(&resp->fh);
 }
 
-#define nfsaclsvc_decode_voidargs      NULL
-#define nfsaclsvc_release_void         NULL
-#define nfsd3_fhandleargs      nfsd_fhandle
-#define nfsd3_attrstatres      nfsd_attrstat
-#define nfsd3_voidres          nfsd3_voidargs
 struct nfsd3_voidargs { int dummy; };
 
-#define PROC(name, argt, rest, relt, cache, respsize)                  \
-{                                                                      \
-       .pc_func        = nfsacld_proc_##name,                          \
-       .pc_decode      = nfsaclsvc_decode_##argt##args,                \
-       .pc_encode      = nfsaclsvc_encode_##rest##res,                 \
-       .pc_release     = nfsaclsvc_release_##relt,     \
-       .pc_argsize     = sizeof(struct nfsd3_##argt##args),            \
-       .pc_ressize     = sizeof(struct nfsd3_##rest##res),             \
-       .pc_cachetype   = cache,                                        \
-       .pc_xdrressize  = respsize,                                     \
-}
-
 #define ST 1           /* status*/
 #define AT 21          /* attributes */
 #define pAT (1+AT)     /* post attributes - conditional */
 #define ACL (1+NFS_ACL_MAX_ENTRIES*3)  /* Access Control List */
 
-static const struct svc_procedure nfsd_acl_procedures2[] = {
-  PROC(null,   void,           void,           void,     RC_NOCACHE, ST),
-  PROC(getacl, getacl,         getacl,         getacl,   RC_NOCACHE, ST+1+2*(1+ACL)),
-  PROC(setacl, setacl,         attrstat,       attrstat, RC_NOCACHE, ST+AT),
-  PROC(getattr, fhandle,       attrstat,       attrstat, RC_NOCACHE, ST+AT),
-  PROC(access, access,         access,         access,   RC_NOCACHE, ST+AT+1),
+static const struct svc_procedure nfsd_acl_procedures2[5] = {
+       [ACLPROC2_NULL] = {
+               .pc_func = nfsacld_proc_null,
+               .pc_encode = nfsaclsvc_encode_voidres,
+               .pc_argsize = sizeof(struct nfsd3_voidargs),
+               .pc_ressize = sizeof(struct nfsd3_voidargs),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST,
+       },
+       [ACLPROC2_GETACL] = {
+               .pc_func = nfsacld_proc_getacl,
+               .pc_decode = nfsaclsvc_decode_getaclargs,
+               .pc_encode = nfsaclsvc_encode_getaclres,
+               .pc_release = nfsaclsvc_release_getacl,
+               .pc_argsize = sizeof(struct nfsd3_getaclargs),
+               .pc_ressize = sizeof(struct nfsd3_getaclres),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+1+2*(1+ACL),
+       },
+       [ACLPROC2_SETACL] = {
+               .pc_func = nfsacld_proc_setacl,
+               .pc_decode = nfsaclsvc_decode_setaclargs,
+               .pc_encode = nfsaclsvc_encode_attrstatres,
+               .pc_release = nfsaclsvc_release_attrstat,
+               .pc_argsize = sizeof(struct nfsd3_setaclargs),
+               .pc_ressize = sizeof(struct nfsd_attrstat),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+AT,
+       },
+       [ACLPROC2_GETATTR] = {
+               .pc_func = nfsacld_proc_getattr,
+               .pc_decode = nfsaclsvc_decode_fhandleargs,
+               .pc_encode = nfsaclsvc_encode_attrstatres,
+               .pc_release = nfsaclsvc_release_attrstat,
+               .pc_argsize = sizeof(struct nfsd_fhandle),
+               .pc_ressize = sizeof(struct nfsd_attrstat),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+AT,
+       },
+       [ACLPROC2_ACCESS] = {
+               .pc_func = nfsacld_proc_access,
+               .pc_decode = nfsaclsvc_decode_accessargs,
+               .pc_encode = nfsaclsvc_encode_accessres,
+               .pc_release = nfsaclsvc_release_access,
+               .pc_argsize = sizeof(struct nfsd3_accessargs),
+               .pc_ressize = sizeof(struct nfsd3_accessres),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+AT+1,
+       },
 };
 
 static unsigned int nfsd_acl_count2[ARRAY_SIZE(nfsd_acl_procedures2)];
index 13bca4a..292acb2 100644 (file)
@@ -235,33 +235,42 @@ static void nfs3svc_release_getacl(struct svc_rqst *rqstp)
        posix_acl_release(resp->acl_default);
 }
 
-#define nfs3svc_decode_voidargs                NULL
-#define nfs3svc_release_void           NULL
-#define nfsd3_setaclres                        nfsd3_attrstat
-#define nfsd3_voidres                  nfsd3_voidargs
 struct nfsd3_voidargs { int dummy; };
 
-#define PROC(name, argt, rest, relt, cache, respsize)                  \
-{                                                                      \
-       .pc_func        = nfsd3_proc_##name,                            \
-       .pc_decode      = nfs3svc_decode_##argt##args,                  \
-       .pc_encode      = nfs3svc_encode_##rest##res,                   \
-       .pc_release     = nfs3svc_release_##relt,                       \
-       .pc_argsize     = sizeof(struct nfsd3_##argt##args),            \
-       .pc_ressize     = sizeof(struct nfsd3_##rest##res),             \
-       .pc_cachetype   = cache,                                        \
-       .pc_xdrressize  = respsize,                                     \
-}
-
 #define ST 1           /* status*/
 #define AT 21          /* attributes */
 #define pAT (1+AT)     /* post attributes - conditional */
 #define ACL (1+NFS_ACL_MAX_ENTRIES*3)  /* Access Control List */
 
-static const struct svc_procedure nfsd_acl_procedures3[] = {
-  PROC(null,   void,           void,           void,     RC_NOCACHE, ST),
-  PROC(getacl, getacl,         getacl,         getacl,   RC_NOCACHE, ST+1+2*(1+ACL)),
-  PROC(setacl, setacl,         setacl,         fhandle,  RC_NOCACHE, ST+pAT),
+static const struct svc_procedure nfsd_acl_procedures3[3] = {
+       [ACLPROC3_NULL] = {
+               .pc_func = nfsd3_proc_null,
+               .pc_encode = nfs3svc_encode_voidres,
+               .pc_argsize = sizeof(struct nfsd3_voidargs),
+               .pc_ressize = sizeof(struct nfsd3_voidargs),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST,
+       },
+       [ACLPROC3_GETACL] = {
+               .pc_func = nfsd3_proc_getacl,
+               .pc_decode = nfs3svc_decode_getaclargs,
+               .pc_encode = nfs3svc_encode_getaclres,
+               .pc_release = nfs3svc_release_getacl,
+               .pc_argsize = sizeof(struct nfsd3_getaclargs),
+               .pc_ressize = sizeof(struct nfsd3_getaclres),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+1+2*(1+ACL),
+       },
+       [ACLPROC3_SETACL] = {
+               .pc_func = nfsd3_proc_setacl,
+               .pc_decode = nfs3svc_decode_setaclargs,
+               .pc_encode = nfs3svc_encode_setaclres,
+               .pc_release = nfs3svc_release_fhandle,
+               .pc_argsize = sizeof(struct nfsd3_setaclargs),
+               .pc_ressize = sizeof(struct nfsd3_attrstat),
+               .pc_cachetype = RC_NOCACHE,
+               .pc_xdrressize = ST+pAT,
+       },
 };
 
 static unsigned int nfsd_acl_count3[ARRAY_SIZE(nfsd_acl_procedures3)];
index ca9a850..2c2ad20 100644 (file)
@@ -9,11 +9,13 @@
 
 #define NFS_ACL_PROGRAM        100227
 
+#define ACLPROC2_NULL          0
 #define ACLPROC2_GETACL                1
 #define ACLPROC2_SETACL                2
 #define ACLPROC2_GETATTR       3
 #define ACLPROC2_ACCESS                4
 
+#define ACLPROC3_NULL          0
 #define ACLPROC3_GETACL                1
 #define ACLPROC3_SETACL                2