gfs2: Get rid of gfs2_alloc_blocks generation parameter
authorAndreas Gruenbacher <agruenba@redhat.com>
Fri, 20 Oct 2023 22:40:07 +0000 (00:40 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Mon, 6 Nov 2023 00:51:25 +0000 (01:51 +0100)
Get rid of the generation parameter of gfs2_alloc_blocks(): we only ever
set the generation of the current inode while creating it, so do so
directly.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/bmap.c
fs/gfs2/dir.c
fs/gfs2/inode.c
fs/gfs2/rgrp.c
fs/gfs2/rgrp.h
fs/gfs2/xattr.c

index 240f73e402d028528fa6b350743d59987fff558c..875516bcad56fa4298f022f80e66748ff2e7926b 100644 (file)
@@ -106,7 +106,7 @@ static int __gfs2_unstuff_inode(struct gfs2_inode *ip, struct page *page)
                   and write it out to disk */
 
                unsigned int n = 1;
-               error = gfs2_alloc_blocks(ip, &block, &n, 0, NULL);
+               error = gfs2_alloc_blocks(ip, &block, &n, 0);
                if (error)
                        goto out_brelse;
                if (isdir) {
@@ -707,7 +707,7 @@ static int __gfs2_iomap_alloc(struct inode *inode, struct iomap *iomap,
        i = mp->mp_aheight;
        do {
                n = blks - alloced;
-               ret = gfs2_alloc_blocks(ip, &bn, &n, 0, NULL);
+               ret = gfs2_alloc_blocks(ip, &bn, &n, 0);
                if (ret)
                        goto out;
                alloced += n;
index 1a2afa88f8bea8eb1661792eab5f3d17889516c2..3a2a10d6d43d13d8d5741031ae3e6d1f94080372 100644 (file)
@@ -868,7 +868,7 @@ static struct gfs2_leaf *new_leaf(struct inode *inode, struct buffer_head **pbh,
        struct gfs2_dirent *dent;
        struct timespec64 tv = current_time(inode);
 
-       error = gfs2_alloc_blocks(ip, &bn, &n, 0, NULL);
+       error = gfs2_alloc_blocks(ip, &bn, &n, 0);
        if (error)
                return NULL;
        bh = gfs2_meta_new(ip->i_gl, bn);
index ee5b07d296f7485738670bf0a1d6971753c86ea6..54b449cd6201b8c9304e253829f291c46108f176 100644 (file)
@@ -417,7 +417,7 @@ static int alloc_dinode(struct gfs2_inode *ip, u32 flags, unsigned *dblocks)
        if (error)
                goto out_ipreserv;
 
-       error = gfs2_alloc_blocks(ip, &ip->i_no_addr, dblocks, 1, &ip->i_generation);
+       error = gfs2_alloc_blocks(ip, &ip->i_no_addr, dblocks, 1);
        if (error)
                goto out_trans_end;
 
index 9308190895c8903b6412f0360b6c0060116a3077..c2060203b98af857d510bc6618e2046bf00dc192 100644 (file)
@@ -2411,13 +2411,12 @@ static void gfs2_set_alloc_start(struct gfs2_rbm *rbm,
  * @bn: Used to return the starting block number
  * @nblocks: requested number of blocks/extent length (value/result)
  * @dinode: 1 if we're allocating a dinode block, else 0
- * @generation: the generation number of the inode
  *
  * Returns: 0 or error
  */
 
 int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks,
-                     bool dinode, u64 *generation)
+                     bool dinode)
 {
        struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
        struct buffer_head *dibh;
@@ -2477,10 +2476,13 @@ int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks,
        rbm.rgd->rd_free -= *nblocks;
        spin_unlock(&rbm.rgd->rd_rsspin);
        if (dinode) {
+               u64 generation;
+
                rbm.rgd->rd_dinodes++;
-               *generation = rbm.rgd->rd_igeneration++;
-               if (*generation == 0)
-                       *generation = rbm.rgd->rd_igeneration++;
+               generation = rbm.rgd->rd_igeneration++;
+               if (generation == 0)
+                       generation = rbm.rgd->rd_igeneration++;
+               ip->i_generation = generation;
        }
 
        gfs2_trans_add_meta(rbm.rgd->rd_gl, rbm.rgd->rd_bits[0].bi_bh);
index 00b30cf893af238ac4be1b970b234c8b27773e03..507c914f039b01198c9b154f6c81097932ecfe0b 100644 (file)
@@ -42,7 +42,7 @@ extern int gfs2_inplace_reserve(struct gfs2_inode *ip,
 extern void gfs2_inplace_release(struct gfs2_inode *ip);
 
 extern int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *n,
-                            bool dinode, u64 *generation);
+                            bool dinode);
 
 extern void gfs2_rs_deltree(struct gfs2_blkreserv *rs);
 extern void gfs2_rs_delete(struct gfs2_inode *ip);
index 4fea70c0fe3d17f1059e216888ecd470452cac68..2117011c8c5778c9ad84b311ce1c491eddf12548 100644 (file)
@@ -639,7 +639,7 @@ static int ea_alloc_blk(struct gfs2_inode *ip, struct buffer_head **bhp)
        u64 block;
        int error;
 
-       error = gfs2_alloc_blocks(ip, &block, &n, 0, NULL);
+       error = gfs2_alloc_blocks(ip, &block, &n, 0);
        if (error)
                return error;
        gfs2_trans_remove_revoke(sdp, block, 1);
@@ -701,7 +701,7 @@ static int ea_write(struct gfs2_inode *ip, struct gfs2_ea_header *ea,
                        int mh_size = sizeof(struct gfs2_meta_header);
                        unsigned int n = 1;
 
-                       error = gfs2_alloc_blocks(ip, &block, &n, 0, NULL);
+                       error = gfs2_alloc_blocks(ip, &block, &n, 0);
                        if (error)
                                return error;
                        gfs2_trans_remove_revoke(sdp, block, 1);
@@ -1002,7 +1002,7 @@ static int ea_set_block(struct gfs2_inode *ip, struct gfs2_ea_request *er,
        } else {
                u64 blk;
                unsigned int n = 1;
-               error = gfs2_alloc_blocks(ip, &blk, &n, 0, NULL);
+               error = gfs2_alloc_blocks(ip, &blk, &n, 0);
                if (error)
                        return error;
                gfs2_trans_remove_revoke(sdp, blk, 1);