gfs2: Split gfs2_rsqa_delete into gfs2_rs_delete and gfs2_qa_put
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 6 Mar 2020 16:32:35 +0000 (10:32 -0600)
committerBob Peterson <rpeterso@redhat.com>
Fri, 27 Mar 2020 19:08:04 +0000 (14:08 -0500)
Keeping reservations and quotas separate helps reviewing the code.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Bob Peterson <rpeterso@redhat.com>
fs/gfs2/bmap.c
fs/gfs2/file.c
fs/gfs2/inode.c
fs/gfs2/rgrp.c
fs/gfs2/rgrp.h
fs/gfs2/super.c

index d510a453dfa8844525f762371f5ba94f20137842..936a8ec6b48e464bddba050b8691c95df390e196 100644 (file)
@@ -2194,7 +2194,8 @@ int gfs2_setattr_size(struct inode *inode, u64 newsize)
 
        ret = do_shrink(inode, newsize);
 out:
-       gfs2_rsqa_delete(ip, NULL);
+       gfs2_rs_delete(ip, NULL);
+       gfs2_qa_put(ip);
        return ret;
 }
 
index f18876cdfb0f5f98559f23121bfc1790ce737421..99a75e779ac0f944d4f9563e8b1654f26f5852da 100644 (file)
@@ -701,8 +701,10 @@ static int gfs2_release(struct inode *inode, struct file *file)
        kfree(file->private_data);
        file->private_data = NULL;
 
-       if (file->f_mode & FMODE_WRITE)
-               gfs2_rsqa_delete(ip, &inode->i_writecount);
+       if (file->f_mode & FMODE_WRITE) {
+               gfs2_rs_delete(ip, &inode->i_writecount);
+               gfs2_qa_put(ip);
+       }
        return 0;
 }
 
index d1a24753c55f3e269148e480e83adbf2a3f64b63..980a6feb0e22db8745ff51c5560fa269ecea8992 100644 (file)
@@ -781,7 +781,8 @@ fail_free_inode:
                glock_clear_object(ip->i_gl, ip);
                gfs2_glock_put(ip->i_gl);
        }
-       gfs2_rsqa_delete(ip, NULL);
+       gfs2_rs_delete(ip, NULL);
+       gfs2_qa_put(ip);
 fail_free_acls:
        posix_acl_release(default_acl);
        posix_acl_release(acl);
index 04e3e13a230c1118adccbe1cfbc60a352ae564e4..692dc11d0f139f145cfc9104b67581508578379c 100644 (file)
@@ -662,18 +662,17 @@ void gfs2_rs_deltree(struct gfs2_blkreserv *rs)
 }
 
 /**
- * gfs2_rsqa_delete - delete a multi-block reservation and quota allocation
+ * gfs2_rs_delete - delete a multi-block reservation
  * @ip: The inode for this reservation
  * @wcount: The inode's write count, or NULL
  *
  */
-void gfs2_rsqa_delete(struct gfs2_inode *ip, atomic_t *wcount)
+void gfs2_rs_delete(struct gfs2_inode *ip, atomic_t *wcount)
 {
        down_write(&ip->i_rw_mutex);
        if ((wcount == NULL) || (atomic_read(wcount) <= 1))
                gfs2_rs_deltree(&ip->i_res);
        up_write(&ip->i_rw_mutex);
-       gfs2_qa_put(ip);
 }
 
 /**
index 92cebb785996b1badae2c4075f8e6842599357be..a1d7e14fc55b9c2098c00348d5bc7bed652992b7 100644 (file)
@@ -45,7 +45,7 @@ extern int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *n,
                             bool dinode, u64 *generation);
 
 extern void gfs2_rs_deltree(struct gfs2_blkreserv *rs);
-extern void gfs2_rsqa_delete(struct gfs2_inode *ip, atomic_t *wcount);
+extern void gfs2_rs_delete(struct gfs2_inode *ip, atomic_t *wcount);
 extern void __gfs2_free_blocks(struct gfs2_inode *ip, struct gfs2_rgrpd *rgd,
                               u64 bstart, u32 blen, int meta);
 extern void gfs2_free_meta(struct gfs2_inode *ip, struct gfs2_rgrpd *rgd,
index 68d934fa0f9fb6a43b2704cf9c6a02a19970ca83..37fc41632aa21a5156de24962ddc136f2feda792 100644 (file)
@@ -1403,7 +1403,8 @@ out:
        truncate_inode_pages_final(&inode->i_data);
        if (ip->i_qadata)
                gfs2_assert_warn(sdp, ip->i_qadata->qa_ref == 0);
-       gfs2_rsqa_delete(ip, NULL);
+       gfs2_rs_delete(ip, NULL);
+       gfs2_qa_put(ip);
        gfs2_ordered_del_inode(ip);
        clear_inode(inode);
        gfs2_dir_hash_inval(ip);