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

NFSv4: cleanup idmapper functions to take an nfs_server argument

...instead of the nfs_client.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

+25 -26
+12 -12
fs/nfs/idmap.c
··· 241 241 return ret; 242 242 } 243 243 244 - int nfs_map_name_to_uid(struct nfs_client *clp, const char *name, size_t namelen, __u32 *uid) 244 + int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid) 245 245 { 246 246 if (nfs_map_string_to_numeric(name, namelen, uid)) 247 247 return 0; 248 248 return nfs_idmap_lookup_id(name, namelen, "uid", uid); 249 249 } 250 250 251 - int nfs_map_group_to_gid(struct nfs_client *clp, const char *name, size_t namelen, __u32 *gid) 251 + int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *gid) 252 252 { 253 253 if (nfs_map_string_to_numeric(name, namelen, gid)) 254 254 return 0; 255 255 return nfs_idmap_lookup_id(name, namelen, "gid", gid); 256 256 } 257 257 258 - int nfs_map_uid_to_name(struct nfs_client *clp, __u32 uid, char *buf, size_t buflen) 258 + int nfs_map_uid_to_name(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen) 259 259 { 260 260 int ret; 261 261 ret = nfs_idmap_lookup_name(uid, "user", buf, buflen); ··· 263 263 ret = nfs_map_numeric_to_string(uid, buf, buflen); 264 264 return ret; 265 265 } 266 - int nfs_map_gid_to_group(struct nfs_client *clp, __u32 gid, char *buf, size_t buflen) 266 + int nfs_map_gid_to_group(const struct nfs_server *server, __u32 gid, char *buf, size_t buflen) 267 267 { 268 268 int ret; 269 269 ··· 729 729 return hash; 730 730 } 731 731 732 - int nfs_map_name_to_uid(struct nfs_client *clp, const char *name, size_t namelen, __u32 *uid) 732 + int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid) 733 733 { 734 - struct idmap *idmap = clp->cl_idmap; 734 + struct idmap *idmap = server->nfs_client->cl_idmap; 735 735 736 736 if (nfs_map_string_to_numeric(name, namelen, uid)) 737 737 return 0; 738 738 return nfs_idmap_id(idmap, &idmap->idmap_user_hash, name, namelen, uid); 739 739 } 740 740 741 - int nfs_map_group_to_gid(struct nfs_client *clp, const char *name, size_t namelen, __u32 *uid) 741 + int nfs_map_group_to_gid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid) 742 742 { 743 - struct idmap *idmap = clp->cl_idmap; 743 + struct idmap *idmap = server->nfs_client->cl_idmap; 744 744 745 745 if (nfs_map_string_to_numeric(name, namelen, uid)) 746 746 return 0; 747 747 return nfs_idmap_id(idmap, &idmap->idmap_group_hash, name, namelen, uid); 748 748 } 749 749 750 - int nfs_map_uid_to_name(struct nfs_client *clp, __u32 uid, char *buf, size_t buflen) 750 + int nfs_map_uid_to_name(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen) 751 751 { 752 - struct idmap *idmap = clp->cl_idmap; 752 + struct idmap *idmap = server->nfs_client->cl_idmap; 753 753 int ret; 754 754 755 755 ret = nfs_idmap_name(idmap, &idmap->idmap_user_hash, uid, buf); ··· 757 757 ret = nfs_map_numeric_to_string(uid, buf, buflen); 758 758 return ret; 759 759 } 760 - int nfs_map_gid_to_group(struct nfs_client *clp, __u32 uid, char *buf, size_t buflen) 760 + int nfs_map_gid_to_group(const struct nfs_server *server, __u32 uid, char *buf, size_t buflen) 761 761 { 762 - struct idmap *idmap = clp->cl_idmap; 762 + struct idmap *idmap = server->nfs_client->cl_idmap; 763 763 int ret; 764 764 765 765 ret = nfs_idmap_name(idmap, &idmap->idmap_group_hash, uid, buf);
+8 -10
fs/nfs/nfs4xdr.c
··· 844 844 if (iap->ia_valid & ATTR_MODE) 845 845 len += 4; 846 846 if (iap->ia_valid & ATTR_UID) { 847 - owner_namelen = nfs_map_uid_to_name(server->nfs_client, iap->ia_uid, owner_name, IDMAP_NAMESZ); 847 + owner_namelen = nfs_map_uid_to_name(server, iap->ia_uid, owner_name, IDMAP_NAMESZ); 848 848 if (owner_namelen < 0) { 849 849 dprintk("nfs: couldn't resolve uid %d to string\n", 850 850 iap->ia_uid); ··· 856 856 len += 4 + (XDR_QUADLEN(owner_namelen) << 2); 857 857 } 858 858 if (iap->ia_valid & ATTR_GID) { 859 - owner_grouplen = nfs_map_gid_to_group(server->nfs_client, iap->ia_gid, owner_group, IDMAP_NAMESZ); 859 + owner_grouplen = nfs_map_gid_to_group(server, iap->ia_gid, owner_group, IDMAP_NAMESZ); 860 860 if (owner_grouplen < 0) { 861 861 dprintk("nfs: couldn't resolve gid %d to string\n", 862 862 iap->ia_gid); ··· 3387 3387 } 3388 3388 3389 3389 static int decode_attr_owner(struct xdr_stream *xdr, uint32_t *bitmap, 3390 - struct nfs_client *clp, uint32_t *uid, int may_sleep) 3390 + const struct nfs_server *server, uint32_t *uid, int may_sleep) 3391 3391 { 3392 3392 uint32_t len; 3393 3393 __be32 *p; ··· 3407 3407 if (!may_sleep) { 3408 3408 /* do nothing */ 3409 3409 } else if (len < XDR_MAX_NETOBJ) { 3410 - if (nfs_map_name_to_uid(clp, (char *)p, len, uid) == 0) 3410 + if (nfs_map_name_to_uid(server, (char *)p, len, uid) == 0) 3411 3411 ret = NFS_ATTR_FATTR_OWNER; 3412 3412 else 3413 3413 dprintk("%s: nfs_map_name_to_uid failed!\n", ··· 3425 3425 } 3426 3426 3427 3427 static int decode_attr_group(struct xdr_stream *xdr, uint32_t *bitmap, 3428 - struct nfs_client *clp, uint32_t *gid, int may_sleep) 3428 + const struct nfs_server *server, uint32_t *gid, int may_sleep) 3429 3429 { 3430 3430 uint32_t len; 3431 3431 __be32 *p; ··· 3445 3445 if (!may_sleep) { 3446 3446 /* do nothing */ 3447 3447 } else if (len < XDR_MAX_NETOBJ) { 3448 - if (nfs_map_group_to_gid(clp, (char *)p, len, gid) == 0) 3448 + if (nfs_map_group_to_gid(server, (char *)p, len, gid) == 0) 3449 3449 ret = NFS_ATTR_FATTR_GROUP; 3450 3450 else 3451 3451 dprintk("%s: nfs_map_group_to_gid failed!\n", ··· 3944 3944 goto xdr_error; 3945 3945 fattr->valid |= status; 3946 3946 3947 - status = decode_attr_owner(xdr, bitmap, server->nfs_client, 3948 - &fattr->uid, may_sleep); 3947 + status = decode_attr_owner(xdr, bitmap, server, &fattr->uid, may_sleep); 3949 3948 if (status < 0) 3950 3949 goto xdr_error; 3951 3950 fattr->valid |= status; 3952 3951 3953 - status = decode_attr_group(xdr, bitmap, server->nfs_client, 3954 - &fattr->gid, may_sleep); 3952 + status = decode_attr_group(xdr, bitmap, server, &fattr->gid, may_sleep); 3955 3953 if (status < 0) 3956 3954 goto xdr_error; 3957 3955 fattr->valid |= status;
+5 -4
include/linux/nfs_idmap.h
··· 65 65 66 66 /* Forward declaration to make this header independent of others */ 67 67 struct nfs_client; 68 + struct nfs_server; 68 69 69 70 #ifdef CONFIG_NFS_USE_NEW_IDMAPPER 70 71 ··· 97 96 98 97 #endif /* CONFIG_NFS_USE_NEW_IDMAPPER */ 99 98 100 - int nfs_map_name_to_uid(struct nfs_client *, const char *, size_t, __u32 *); 101 - int nfs_map_group_to_gid(struct nfs_client *, const char *, size_t, __u32 *); 102 - int nfs_map_uid_to_name(struct nfs_client *, __u32, char *, size_t); 103 - int nfs_map_gid_to_group(struct nfs_client *, __u32, char *, size_t); 99 + int nfs_map_name_to_uid(const struct nfs_server *, const char *, size_t, __u32 *); 100 + int nfs_map_group_to_gid(const struct nfs_server *, const char *, size_t, __u32 *); 101 + int nfs_map_uid_to_name(const struct nfs_server *, __u32, char *, size_t); 102 + int nfs_map_gid_to_group(const struct nfs_server *, __u32, char *, size_t); 104 103 105 104 extern unsigned int nfs_idmap_cache_timeout; 106 105 #endif /* __KERNEL__ */