gfs2: eliminate ssize parameter from gfs2_struct2blk
authorBob Peterson <rpeterso@redhat.com>
Fri, 13 Dec 2019 14:10:51 +0000 (08:10 -0600)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 7 Jan 2020 17:46:06 +0000 (18:46 +0100)
Every caller of function gfs2_struct2blk specified sizeof(u64).

This patch eliminates the unnecessary parameter and replaces the
size calculation with a new superblock variable that is computed
to be the maximum number of block pointers we can fit inside a
log descriptor, as is done for pointers per dinode and indirect
block.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Reviewed-by: Andrew Price <anprice@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/glops.c
fs/gfs2/incore.h
fs/gfs2/log.c
fs/gfs2/log.h
fs/gfs2/lops.c
fs/gfs2/ops_fstype.c
fs/gfs2/trans.c

index 4ede1f1..061d22e 100644 (file)
@@ -95,7 +95,7 @@ static void gfs2_ail_empty_gl(struct gfs2_glock *gl)
        /* A shortened, inline version of gfs2_trans_begin()
          * tr->alloced is not set since the transaction structure is
          * on the stack */
-       tr.tr_reserved = 1 + gfs2_struct2blk(sdp, tr.tr_revokes, sizeof(u64));
+       tr.tr_reserved = 1 + gfs2_struct2blk(sdp, tr.tr_revokes);
        tr.tr_ip = _RET_IP_;
        if (gfs2_log_reserve(sdp, tr.tr_reserved) < 0)
                return;
index 5f89c51..b5d9c11 100644 (file)
@@ -703,6 +703,7 @@ struct gfs2_sbd {
        u32 sd_fsb2bb_shift;
        u32 sd_diptrs;  /* Number of pointers in a dinode */
        u32 sd_inptrs;  /* Number of pointers in a indirect block */
+       u32 sd_ldptrs;  /* Number of pointers in a log descriptor block */
        u32 sd_jbsize;  /* Size of a journaled data block */
        u32 sd_hash_bsize;      /* sizeof(exhash block) */
        u32 sd_hash_bsize_shift;
index eb3f2e7..66189ae 100644 (file)
@@ -37,7 +37,6 @@ static void gfs2_log_shutdown(struct gfs2_sbd *sdp);
  * gfs2_struct2blk - compute stuff
  * @sdp: the filesystem
  * @nstruct: the number of structures
- * @ssize: the size of the structures
  *
  * Compute the number of log descriptor blocks needed to hold a certain number
  * of structures of a certain size.
@@ -45,18 +44,16 @@ static void gfs2_log_shutdown(struct gfs2_sbd *sdp);
  * Returns: the number of blocks needed (minimum is always 1)
  */
 
-unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct,
-                            unsigned int ssize)
+unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct)
 {
        unsigned int blks;
        unsigned int first, second;
 
        blks = 1;
-       first = (sdp->sd_sb.sb_bsize - sizeof(struct gfs2_log_descriptor)) / ssize;
+       first = sdp->sd_ldptrs;
 
        if (nstruct > first) {
-               second = (sdp->sd_sb.sb_bsize -
-                         sizeof(struct gfs2_meta_header)) / ssize;
+               second = sdp->sd_inptrs;
                blks += DIV_ROUND_UP(nstruct - first, second);
        }
 
@@ -473,8 +470,7 @@ static unsigned int calc_reserved(struct gfs2_sbd *sdp)
        }
 
        if (sdp->sd_log_commited_revoke > 0)
-               reserved += gfs2_struct2blk(sdp, sdp->sd_log_commited_revoke,
-                                         sizeof(u64));
+               reserved += gfs2_struct2blk(sdp, sdp->sd_log_commited_revoke);
        /* One for the overall header */
        if (reserved)
                reserved++;
index 2ff163a..c0a65e5 100644 (file)
@@ -60,9 +60,9 @@ static inline void gfs2_ordered_add_inode(struct gfs2_inode *ip)
                spin_unlock(&sdp->sd_ordered_lock);
        }
 }
+
 extern void gfs2_ordered_del_inode(struct gfs2_inode *ip);
-extern unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct,
-                           unsigned int ssize);
+extern unsigned int gfs2_struct2blk(struct gfs2_sbd *sdp, unsigned int nstruct);
 
 extern void gfs2_log_release(struct gfs2_sbd *sdp, unsigned int blks);
 extern int gfs2_log_reserve(struct gfs2_sbd *sdp, unsigned int blks);
index aa0359b..d943172 100644 (file)
@@ -866,7 +866,7 @@ static void revoke_lo_before_commit(struct gfs2_sbd *sdp, struct gfs2_trans *tr)
        if (!sdp->sd_log_num_revoke)
                return;
 
-       length = gfs2_struct2blk(sdp, sdp->sd_log_num_revoke, sizeof(u64));
+       length = gfs2_struct2blk(sdp, sdp->sd_log_num_revoke);
        page = gfs2_get_log_desc(sdp, GFS2_LOG_DESC_REVOKE, length, sdp->sd_log_num_revoke);
        offset = sizeof(struct gfs2_log_descriptor);
 
index e8b7b0c..b3e904b 100644 (file)
@@ -298,6 +298,8 @@ static int gfs2_read_sb(struct gfs2_sbd *sdp, int silent)
                          sizeof(struct gfs2_dinode)) / sizeof(u64);
        sdp->sd_inptrs = (sdp->sd_sb.sb_bsize -
                          sizeof(struct gfs2_meta_header)) / sizeof(u64);
+       sdp->sd_ldptrs = (sdp->sd_sb.sb_bsize -
+                         sizeof(struct gfs2_log_descriptor)) / sizeof(u64);
        sdp->sd_jbsize = sdp->sd_sb.sb_bsize - sizeof(struct gfs2_meta_header);
        sdp->sd_hash_bsize = sdp->sd_sb.sb_bsize / 2;
        sdp->sd_hash_bsize_shift = sdp->sd_sb.sb_bsize_shift - 1;
index 9d42273..4d01fe1 100644 (file)
@@ -49,8 +49,7 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
        if (blocks)
                tr->tr_reserved += 6 + blocks;
        if (revokes)
-               tr->tr_reserved += gfs2_struct2blk(sdp, revokes,
-                                                  sizeof(u64));
+               tr->tr_reserved += gfs2_struct2blk(sdp, revokes);
        INIT_LIST_HEAD(&tr->tr_databuf);
        INIT_LIST_HEAD(&tr->tr_buf);