NFSv4.1: Minor optimisation in get_layout_by_fh_locked()
authorTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 12 Feb 2014 13:17:00 +0000 (08:17 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 20 Feb 2014 02:21:06 +0000 (21:21 -0500)
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>
fs/nfs/callback_proc.c

index 570c8a1..41db525 100644 (file)
@@ -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);