diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-07-05 13:05:13 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-07-05 13:17:13 -0400 |
commit | 4e0641a7ad98fca5646a6be17605bc80f6c4ebde (patch) | |
tree | 5951d35bb1b2ed5a0452334221689258b5e3165f /fs/nfs/dir.c | |
parent | bce3481c91801665e17f8daf59ede946129f3d3f (diff) | |
download | blackbird-op-linux-4e0641a7ad98fca5646a6be17605bc80f6c4ebde.tar.gz blackbird-op-linux-4e0641a7ad98fca5646a6be17605bc80f6c4ebde.zip |
NFS: Optimise away an excessive GETATTR call when a file is symlinked
In the case when compiling via a symlink tree, we want to ensure that the
close-to-open GETATTR call is applied only to the final file, and not to
the symlink.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r-- | fs/nfs/dir.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 3ddda6f7ecc2..e7ffb4deb3e5 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -690,7 +690,9 @@ int nfs_lookup_verify_inode(struct inode *inode, struct nameidata *nd) goto out_force; /* This is an open(2) */ if (nfs_lookup_check_intent(nd, LOOKUP_OPEN) != 0 && - !(server->flags & NFS_MOUNT_NOCTO)) + !(server->flags & NFS_MOUNT_NOCTO) && + (S_ISREG(inode->i_mode) || + S_ISDIR(inode->i_mode))) goto out_force; } return nfs_revalidate_inode(server, inode); |