From 630dfee283616d9e312e7770b651adffc4778ef2 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 2 Oct 2012 15:41:05 -0700 Subject: [PATCH] --- yaml --- r: 333210 b: refs/heads/master c: 251ec410c495cb93c7ae2cb4beda29205d9bd35f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfs/pnfs.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index b5af5c520f68..5aee3c5fdca0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ae2bb03236fc978bdf673c19d39832500793b83c +refs/heads/master: 251ec410c495cb93c7ae2cb4beda29205d9bd35f diff --git a/trunk/fs/nfs/pnfs.c b/trunk/fs/nfs/pnfs.c index d737557747b9..fe9968a62cad 100644 --- a/trunk/fs/nfs/pnfs.c +++ b/trunk/fs/nfs/pnfs.c @@ -907,18 +907,19 @@ pnfs_find_alloc_layout(struct inode *ino, dprintk("%s Begin ino=%p layout=%p\n", __func__, ino, nfsi->layout); - if (nfsi->layout) { - pnfs_get_layout_hdr(nfsi->layout); - return nfsi->layout; - } + if (nfsi->layout != NULL) + goto out_existing; spin_unlock(&ino->i_lock); new = alloc_init_layout_hdr(ino, ctx, gfp_flags); spin_lock(&ino->i_lock); - if (likely(nfsi->layout == NULL)) /* Won the race? */ + if (likely(nfsi->layout == NULL)) { /* Won the race? */ nfsi->layout = new; - else - pnfs_free_layout_hdr(new); + return new; + } + pnfs_free_layout_hdr(new); +out_existing: + pnfs_get_layout_hdr(nfsi->layout); return nfsi->layout; }