diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-03-12 12:25:28 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-03-14 13:42:49 -0400 |
commit | 98a8e3239427051f5d44f2025b398bdcc3918f37 (patch) | |
tree | aa3e6ba69dbf8575c2c6e10c013aa23d7d638af0 /fs/nfs/nfs4proc.c | |
parent | 5c691044ecbca04dd558fca4c754121689fe1b34 (diff) |
SUNRPC: Add a helper rpcauth_lookup_generic_cred()
The NFSv4 protocol allows clients to negotiate security protocols on the
fly in the case where an administrator on the server changes the export
settings and/or in the case where we may have a filesystem migration event.
Instead of having the NFS client code cache credentials that are tied to a
particular AUTH method it is therefore preferable to have a generic credential
that can be converted into whatever AUTH is in use by the RPC client when
the read/write/sillyrename/... is put on the wire.
We do this by means of the new "generic" credential, which basically just
caches the minimal information that is needed to look up an RPCSEC_GSS,
AUTH_SYS, or AUTH_NULL credential.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index bbb0d58ee6ac..f38d0573be18 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -1408,7 +1408,7 @@ nfs4_atomic_open(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
1408 | BUG_ON(nd->intent.open.flags & O_CREAT); | 1408 | BUG_ON(nd->intent.open.flags & O_CREAT); |
1409 | } | 1409 | } |
1410 | 1410 | ||
1411 | cred = rpcauth_lookupcred(NFS_CLIENT(dir)->cl_auth, 0); | 1411 | cred = rpc_lookup_cred(); |
1412 | if (IS_ERR(cred)) | 1412 | if (IS_ERR(cred)) |
1413 | return (struct dentry *)cred; | 1413 | return (struct dentry *)cred; |
1414 | parent = dentry->d_parent; | 1414 | parent = dentry->d_parent; |
@@ -1443,7 +1443,7 @@ nfs4_open_revalidate(struct inode *dir, struct dentry *dentry, int openflags, st | |||
1443 | struct rpc_cred *cred; | 1443 | struct rpc_cred *cred; |
1444 | struct nfs4_state *state; | 1444 | struct nfs4_state *state; |
1445 | 1445 | ||
1446 | cred = rpcauth_lookupcred(NFS_CLIENT(dir)->cl_auth, 0); | 1446 | cred = rpc_lookup_cred(); |
1447 | if (IS_ERR(cred)) | 1447 | if (IS_ERR(cred)) |
1448 | return PTR_ERR(cred); | 1448 | return PTR_ERR(cred); |
1449 | state = nfs4_do_open(dir, &path, openflags, NULL, cred); | 1449 | state = nfs4_do_open(dir, &path, openflags, NULL, cred); |
@@ -1660,7 +1660,7 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr, | |||
1660 | 1660 | ||
1661 | nfs_fattr_init(fattr); | 1661 | nfs_fattr_init(fattr); |
1662 | 1662 | ||
1663 | cred = rpcauth_lookupcred(NFS_CLIENT(inode)->cl_auth, 0); | 1663 | cred = rpc_lookup_cred(); |
1664 | if (IS_ERR(cred)) | 1664 | if (IS_ERR(cred)) |
1665 | return PTR_ERR(cred); | 1665 | return PTR_ERR(cred); |
1666 | 1666 | ||
@@ -1896,7 +1896,7 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, | |||
1896 | struct rpc_cred *cred; | 1896 | struct rpc_cred *cred; |
1897 | int status = 0; | 1897 | int status = 0; |
1898 | 1898 | ||
1899 | cred = rpcauth_lookupcred(NFS_CLIENT(dir)->cl_auth, 0); | 1899 | cred = rpc_lookup_cred(); |
1900 | if (IS_ERR(cred)) { | 1900 | if (IS_ERR(cred)) { |
1901 | status = PTR_ERR(cred); | 1901 | status = PTR_ERR(cred); |
1902 | goto out; | 1902 | goto out; |