aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/gfs2/inode.c22
1 files changed, 6 insertions, 16 deletions
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c
index 5522fa74729..5bc9542c7fc 100644
--- a/fs/gfs2/inode.c
+++ b/fs/gfs2/inode.c
@@ -297,19 +297,13 @@ static int inode_create(struct gfs2_glock *i_gl, const struct gfs2_inum *inum,
if (!ip)
return -ENOMEM;
memset(ip, 0, sizeof(struct gfs2_inode));
-
ip->i_num = *inum;
-
atomic_set(&ip->i_count, 1);
-
ip->i_vn = i_gl->gl_vn - 1;
-
ip->i_gl = i_gl;
ip->i_sbd = sdp;
-
spin_lock_init(&ip->i_spin);
init_rwsem(&ip->i_rw_mutex);
-
ip->i_greedy = gfs2_tune_get(sdp, gt_greedy_default);
if (need_lock) {
@@ -318,27 +312,23 @@ static int inode_create(struct gfs2_glock *i_gl, const struct gfs2_inum *inum,
&ip->i_iopen_gh);
if (error)
goto fail;
- }
- spin_lock(&io_gl->gl_spin);
- gfs2_glock_hold(i_gl);
- io_gl->gl_object = i_gl;
- spin_unlock(&io_gl->gl_spin);
+ spin_lock(&io_gl->gl_spin);
+ gfs2_glock_hold(i_gl);
+ io_gl->gl_object = i_gl;
+ spin_unlock(&io_gl->gl_spin);
+ }
gfs2_glock_hold(i_gl);
i_gl->gl_object = ip;
-
atomic_inc(&sdp->sd_inode_count);
-
*ipp = ip;
-
return 0;
- fail:
+fail:
gfs2_meta_cache_flush(ip);
kmem_cache_free(gfs2_inode_cachep, ip);
*ipp = NULL;
-
return error;
}