diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2014-04-23 22:13:10 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2014-04-23 22:13:10 +0000 |
commit | 73ba58db385b6de3c983581af2bee8643062b56e (patch) | |
tree | 0a0711bd1767f5e123431f92d08450fe0d4e8ed5 /sys/fs/nfsclient | |
parent | 29b32a99884596b554c0d71ac194dd7f77fca7f0 (diff) | |
download | FreeBSD-src-73ba58db385b6de3c983581af2bee8643062b56e.zip FreeBSD-src-73ba58db385b6de3c983581af2bee8643062b56e.tar.gz |
Modify the NFSv4 client's Pathconf RPC (actually a Getattr Op.)
so that it only does the RPC for names that are answered by the RPC.
Doing the RPC for other names is harmless, but unnecessary.
MFC after: 2 weeks
Diffstat (limited to 'sys/fs/nfsclient')
-rw-r--r-- | sys/fs/nfsclient/nfs_clvnops.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 43774dd..2d13b06 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3429,12 +3429,15 @@ nfs_pathconf(struct vop_pathconf_args *ap) struct thread *td = curthread; int attrflag, error; - if (NFS_ISV4(vp) || (NFS_ISV3(vp) && (ap->a_name == _PC_LINK_MAX || + if ((NFS_ISV34(vp) && (ap->a_name == _PC_LINK_MAX || ap->a_name == _PC_NAME_MAX || ap->a_name == _PC_CHOWN_RESTRICTED || - ap->a_name == _PC_NO_TRUNC))) { + ap->a_name == _PC_NO_TRUNC)) || + (NFS_ISV4(vp) && ap->a_name == _PC_ACL_NFS4)) { /* * Since only the above 4 a_names are returned by the NFSv3 * Pathconf RPC, there is no point in doing it for others. + * For NFSv4, the Pathconf RPC (actually a Getattr Op.) can + * be used for _PC_NFS4_ACL as well. */ error = nfsrpc_pathconf(vp, &pc, td->td_ucred, td, &nfsva, &attrflag, NULL); |