summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2014-02-12 08:17:00 -0500
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-02-19 21:21:06 -0500
commit9a7fe9e8900baad5f6643000ea48b91aee895165 (patch)
tree2e83b086f8824df9d4ebe4d8bcd502a1c4aba1da
parent27999f253010bd64fd63dc80c99f8e926e2b110d (diff)
downloadop-kernel-dev-9a7fe9e8900baad5f6643000ea48b91aee895165.zip
op-kernel-dev-9a7fe9e8900baad5f6643000ea48b91aee895165.tar.gz
NFSv4.1: Minor optimisation in get_layout_by_fh_locked()
If the filehandles match, but the igrab() fails, or the layout is freed before we can get it, then just return NULL. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
-rw-r--r--fs/nfs/callback_proc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index 570c8a1..41db525 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -127,13 +127,13 @@ static struct pnfs_layout_hdr * get_layout_by_fh_locked(struct nfs_client *clp,
continue;
ino = igrab(lo->plh_inode);
if (!ino)
- continue;
+ break;
spin_lock(&ino->i_lock);
/* Is this layout in the process of being freed? */
if (NFS_I(ino)->layout != lo) {
spin_unlock(&ino->i_lock);
iput(ino);
- continue;
+ break;
}
pnfs_get_layout_hdr(lo);
spin_unlock(&ino->i_lock);
OpenPOWER on IntegriCloud