]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/gfs2/inode.c
Merge git://git.kvack.org/~bcrl/aio-next
[karo-tx-linux.git] / fs / gfs2 / inode.c
index 6e2917433170501f6b988649b6ce1c2f233700c2..9054002ebe70dceb3b1483be3fbd54ea15f2e06a 100644 (file)
@@ -1040,11 +1040,7 @@ static int gfs2_unlink_ok(struct gfs2_inode *dip, const struct qstr *name,
        if (error)
                return error;
 
-       error = gfs2_dir_check(&dip->i_inode, name, ip);
-       if (error)
-               return error;
-
-       return 0;
+       return gfs2_dir_check(&dip->i_inode, name, ip);
 }
 
 /**
@@ -1614,26 +1610,18 @@ int gfs2_permission(struct inode *inode, int mask)
 {
        struct gfs2_inode *ip;
        struct gfs2_holder i_gh;
-       struct gfs2_sbd *sdp = GFS2_SB(inode);
        int error;
        int unlock = 0;
-       int frozen_root = 0;
 
 
        ip = GFS2_I(inode);
        if (gfs2_glock_is_locked_by_me(ip->i_gl) == NULL) {
-               if (unlikely(gfs2_glock_is_held_excl(sdp->sd_freeze_gl) &&
-                            inode == sdp->sd_root_dir->d_inode &&
-                            atomic_inc_not_zero(&sdp->sd_frozen_root)))
-                       frozen_root = 1;
-               else {
-                       if (mask & MAY_NOT_BLOCK)
-                               return -ECHILD;
-                       error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
-                       if (error)
-                               return error;
-                       unlock = 1;
-               }
+               if (mask & MAY_NOT_BLOCK)
+                       return -ECHILD;
+               error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
+               if (error)
+                       return error;
+               unlock = 1;
        }
 
        if ((mask & MAY_WRITE) && IS_IMMUTABLE(inode))
@@ -1642,8 +1630,6 @@ int gfs2_permission(struct inode *inode, int mask)
                error = generic_permission(inode, mask);
        if (unlock)
                gfs2_glock_dq_uninit(&i_gh);
-       else if (frozen_root && atomic_dec_and_test(&sdp->sd_frozen_root))
-               wake_up(&sdp->sd_frozen_root_wait);
 
        return error;
 }
@@ -1816,29 +1802,19 @@ static int gfs2_getattr(struct vfsmount *mnt, struct dentry *dentry,
        struct inode *inode = dentry->d_inode;
        struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_holder gh;
-       struct gfs2_sbd *sdp = GFS2_SB(inode);
        int error;
        int unlock = 0;
-       int frozen_root = 0;
 
        if (gfs2_glock_is_locked_by_me(ip->i_gl) == NULL) {
-               if (unlikely(gfs2_glock_is_held_excl(sdp->sd_freeze_gl) &&
-                            inode == sdp->sd_root_dir->d_inode &&
-                            atomic_inc_not_zero(&sdp->sd_frozen_root)))
-                       frozen_root = 1;
-               else {
-                       error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &gh);
-                       if (error)
-                               return error;
-                       unlock = 1;
-               }
+               error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &gh);
+               if (error)
+                       return error;
+               unlock = 1;
        }
 
        generic_fillattr(inode, stat);
        if (unlock)
                gfs2_glock_dq_uninit(&gh);
-       else if (frozen_root && atomic_dec_and_test(&sdp->sd_frozen_root))
-               wake_up(&sdp->sd_frozen_root_wait);
 
        return 0;
 }