diff options
author | rmacklem <rmacklem@FreeBSD.org> | 2014-05-07 22:27:03 +0000 |
---|---|---|
committer | rmacklem <rmacklem@FreeBSD.org> | 2014-05-07 22:27:03 +0000 |
commit | bd43d1e404c494711f7b33898a593b3a9e78f828 (patch) | |
tree | be79ec1a33b2bbcb9dc7bd27d8465387cc2a20b5 | |
parent | d41ec318f9450a569a2d83b56c63243d8f513c51 (diff) | |
download | FreeBSD-src-bd43d1e404c494711f7b33898a593b3a9e78f828.zip FreeBSD-src-bd43d1e404c494711f7b33898a593b3a9e78f828.tar.gz |
MFC: r264842
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.
-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 fa1433f..83b48b4 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -3430,12 +3430,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); |