]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'gfs2/for-next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Feb 2016 00:07:30 +0000 (11:07 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Feb 2016 00:07:30 +0000 (11:07 +1100)
1  2 
fs/gfs2/inode.c

diff --combined fs/gfs2/inode.c
index 352f958769e15b150575c54b09d82b51d34f258e,95a914524a39757585eeeec9357aa57cfeb0c5d7..5fdb319fc2426925edb0ebdb35b7d19adacf705c
@@@ -592,7 -592,7 +592,7 @@@ static int gfs2_create_inode(struct ino
        struct inode *inode = NULL;
        struct gfs2_inode *dip = GFS2_I(dir), *ip;
        struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
-       struct gfs2_glock *io_gl;
+       struct gfs2_glock *io_gl = NULL;
        int error, free_vfs_inode = 1;
        u32 aflags = 0;
        unsigned blocks = 1;
        if (error)
                goto fail_gunlock2;
  
+       BUG_ON(test_and_set_bit(GLF_INODE_CREATING, &io_gl->gl_flags));
        error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh);
        if (error)
                goto fail_gunlock2;
        }
        gfs2_glock_dq_uninit(ghs);
        gfs2_glock_dq_uninit(ghs + 1);
+       clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
        return error;
  
  fail_gunlock3:
        gfs2_glock_dq_uninit(&ip->i_iopen_gh);
        gfs2_glock_put(io_gl);
  fail_gunlock2:
+       if (io_gl)
+               clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);
        gfs2_glock_dq_uninit(ghs + 1);
  fail_free_inode:
        if (ip->i_gl)
@@@ -2067,7 -2072,7 +2072,7 @@@ static int gfs2_fiemap(struct inode *in
        if (ret)
                return ret;
  
 -      mutex_lock(&inode->i_mutex);
 +      inode_lock(inode);
  
        ret = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, 0, &gh);
        if (ret)
  
        gfs2_glock_dq_uninit(&gh);
  out:
 -      mutex_unlock(&inode->i_mutex);
 +      inode_unlock(inode);
        return ret;
  }