[Cluster-devel] [PATCH 06/20] libgfs2: Remove gfs2_meta_header_out_bh()

Andrew Price anprice at redhat.com
Mon Mar 5 18:25:35 UTC 2018


The bmodified() calls have to be preserved until the brelse() calls can
be replaced with explicit writes and frees, where required.

Signed-off-by: Andrew Price <anprice at redhat.com>
---
 gfs2/convert/gfs2_convert.c | 12 ++++++++----
 gfs2/fsck/rgrepair.c        |  3 ++-
 gfs2/libgfs2/fs_geometry.c  |  3 ++-
 gfs2/libgfs2/fs_ops.c       | 21 ++++++++++++++-------
 gfs2/libgfs2/gfs1.c         |  7 ++++---
 gfs2/libgfs2/libgfs2.h      |  2 --
 gfs2/libgfs2/ondisk.c       | 11 ++---------
 gfs2/libgfs2/structures.c   |  3 ++-
 gfs2/mkfs/main_jadd.c       |  8 +++-----
 9 files changed, 37 insertions(+), 33 deletions(-)

diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
index 4b18c770..765c6d50 100644
--- a/gfs2/convert/gfs2_convert.c
+++ b/gfs2/convert/gfs2_convert.c
@@ -312,7 +312,8 @@ static void fix_metatree(struct gfs2_sbd *sbp, struct gfs2_inode *ip,
 			bh = bread(sbp, block);
 			if (new)
 				memset(bh->b_data, 0, sbp->bsize);
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
+			bmodified(bh);
 		}
 
 		hdrsize = blk->height ? sizeof(struct gfs2_meta_header) :
@@ -469,8 +470,10 @@ static uint64_t fix_jdatatree(struct gfs2_sbd *sbp, struct gfs2_inode *ip,
 			bh = bread(sbp, block);
 			if (new)
 				memset(bh->b_data, 0, sbp->bsize);
-			if (h < (blk->height - 1))
-				gfs2_meta_header_out_bh(&mh, bh);
+			if (h < (blk->height - 1)) {
+				gfs2_meta_header_out(&mh, bh->b_data);
+				bmodified(bh);
+			}
 		}
 
 		if (amount > sbp->bsize - ptramt)
@@ -1875,9 +1878,10 @@ static int journ_space_to_rg(struct gfs2_sbd *sdp)
 		convert_bitmaps(sdp, rgd);
 		for (x = 0; x < rgd->ri.ri_length; x++) {
 			if (x)
-				gfs2_meta_header_out_bh(&mh, rgd->bits[x].bi_bh);
+				gfs2_meta_header_out(&mh, rgd->bits[x].bi_bh->b_data);
 			else
 				gfs2_rgrp_out_bh(&rgd->rg, rgd->bits[x].bi_bh);
+			bmodified(rgd->bits[x].bi_bh);
 		}
 	} /* for each journal */
 	return error;
diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c
index f15266e0..d9a33705 100644
--- a/gfs2/fsck/rgrepair.c
+++ b/gfs2/fsck/rgrepair.c
@@ -898,7 +898,8 @@ static int rewrite_rg_block(struct gfs2_sbd *sdp, struct rgrp_tree *rg,
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_RB;
 			mh.mh_format = GFS2_FORMAT_RB;
-			gfs2_meta_header_out_bh(&mh, rg->bits[x].bi_bh);
+			gfs2_meta_header_out(&mh, rg->bits[x].bi_bh->b_data);
+			bmodified(rg->bits[x].bi_bh);
 		} else {
 			if (sdp->gfs1)
 				memset(&rg->rg, 0, sizeof(struct gfs_rgrp));
diff --git a/gfs2/libgfs2/fs_geometry.c b/gfs2/libgfs2/fs_geometry.c
index 59b5ef7b..07d6c647 100644
--- a/gfs2/libgfs2/fs_geometry.c
+++ b/gfs2/libgfs2/fs_geometry.c
@@ -89,9 +89,10 @@ int build_rgrps(struct gfs2_sbd *sdp, int do_write)
 			for (x = 0; x < bitblocks; x++) {
 				rl->bits[x].bi_bh = bget(sdp, rl->start + x);
 				if (x)
-					gfs2_meta_header_out_bh(&mh, rl->bits[x].bi_bh);
+					gfs2_meta_header_out(&mh, rl->bits[x].bi_bh->b_data);
 				else
 					gfs2_rgrp_out_bh(&rl->rg, rl->bits[x].bi_bh);
+				bmodified(rl->bits[x].bi_bh);
 			}
 		}
 
diff --git a/gfs2/libgfs2/fs_ops.c b/gfs2/libgfs2/fs_ops.c
index a22e0447..288c40c7 100644
--- a/gfs2/libgfs2/fs_ops.c
+++ b/gfs2/libgfs2/fs_ops.c
@@ -255,12 +255,13 @@ void unstuff_dinode(struct gfs2_inode *ip)
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_JD;
 			mh.mh_format = GFS2_FORMAT_JD;
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
 
 			buffer_copy_tail(sdp, bh,
 					 sizeof(struct gfs2_meta_header),
 					 ip->i_bh, sizeof(struct gfs2_dinode));
 
+			bmodified(bh);
 			brelse(bh);
 		} else {
 			bh = bget(sdp, block);
@@ -410,10 +411,11 @@ void build_height(struct gfs2_inode *ip, int height)
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_IN;
 			mh.mh_format = GFS2_FORMAT_IN;
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
 			buffer_copy_tail(sdp, bh,
 					 sizeof(struct gfs2_meta_header),
 					 ip->i_bh, sizeof(struct gfs2_dinode));
+			bmodified(bh);
 			brelse(bh);
 		}
 
@@ -521,7 +523,8 @@ void block_map(struct gfs2_inode *ip, uint64_t lblock, int *new,
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_IN;
 			mh.mh_format = GFS2_FORMAT_IN;
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
+			bmodified(bh);
 		} else {
 			if (*dblock == ip->i_di.di_num.no_addr)
 				bh = ip->i_bh;
@@ -712,7 +715,8 @@ int __gfs2_writei(struct gfs2_inode *ip, void *buf,
 				mh.mh_magic = GFS2_MAGIC;
 				mh.mh_type = GFS2_METATYPE_JD;
 				mh.mh_format = GFS2_FORMAT_JD;
-				gfs2_meta_header_out_bh(&mh, bh);
+				gfs2_meta_header_out(&mh, bh->b_data);
+				bmodified(bh);
 			}
 		} else {
 			if (dblock == ip->i_di.di_num.no_addr)
@@ -938,7 +942,8 @@ void dir_split_leaf(struct gfs2_inode *dip, uint32_t start, uint64_t leaf_no,
 		mh.mh_magic = GFS2_MAGIC;
 		mh.mh_type = GFS2_METATYPE_LF;
 		mh.mh_format = GFS2_FORMAT_LF;
-		gfs2_meta_header_out_bh(&mh, nbh);
+		gfs2_meta_header_out(&mh, nbh->b_data);
+		bmodified(nbh);
 		buffer_clear_tail(dip->i_sbd, nbh,
 				  sizeof(struct gfs2_meta_header));
 	}
@@ -1218,7 +1223,8 @@ restart:
 				mh.mh_magic = GFS2_MAGIC;
 				mh.mh_type = GFS2_METATYPE_LF;
 				mh.mh_format = GFS2_FORMAT_LF;
-				gfs2_meta_header_out_bh(&mh, nbh);
+				gfs2_meta_header_out(&mh, nbh->b_data);
+				bmodified(nbh);
 
 				leaf->lf_next = cpu_to_be64(bn);
 
@@ -1272,7 +1278,8 @@ static void dir_make_exhash(struct gfs2_inode *dip)
 		mh.mh_magic = GFS2_MAGIC;
 		mh.mh_type = GFS2_METATYPE_LF;
 		mh.mh_format = GFS2_FORMAT_LF;
-		gfs2_meta_header_out_bh(&mh, bh);
+		gfs2_meta_header_out(&mh, bh->b_data);
+		bmodified(bh);
 	}
 
 	leaf = (struct gfs2_leaf *)bh->b_data;
diff --git a/gfs2/libgfs2/gfs1.c b/gfs2/libgfs2/gfs1.c
index 2c84f78a..5596ec90 100644
--- a/gfs2/libgfs2/gfs1.c
+++ b/gfs2/libgfs2/gfs1.c
@@ -125,7 +125,8 @@ void gfs1_block_map(struct gfs2_inode *ip, uint64_t lblock, int *new,
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_IN;
 			mh.mh_format = GFS2_FORMAT_IN;
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
+			bmodified(bh);
 		} else {
 			if (*dblock == ip->i_di.di_num.no_addr)
 				bh = ip->i_bh;
@@ -221,7 +222,7 @@ int gfs1_writei(struct gfs2_inode *ip, char *buf, uint64_t offset,
 			mh.mh_magic = GFS2_MAGIC;
 			mh.mh_type = GFS2_METATYPE_JD;
 			mh.mh_format = GFS2_FORMAT_JD;
-			gfs2_meta_header_out_bh(&mh, bh);
+			gfs2_meta_header_out(&mh, bh->b_data);
 		}
 
 		memcpy(bh->b_data + offset, buf + copied, amount);
@@ -377,7 +378,7 @@ void gfs_rgrp_out(struct gfs_rgrp *rgrp, struct gfs2_buffer_head *rbh)
 {
 	struct gfs_rgrp *str = (struct gfs_rgrp *)rbh->b_data;
 
-	gfs2_meta_header_out_bh(&rgrp->rg_header, rbh);
+	gfs2_meta_header_out(&rgrp->rg_header, rbh->b_data);
 	str->rg_flags = cpu_to_be32(rgrp->rg_flags);
 	str->rg_free = cpu_to_be32(rgrp->rg_free);
 	str->rg_useddi = cpu_to_be32(rgrp->rg_useddi);
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index 5767c43a..0f434d25 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -724,8 +724,6 @@ extern void gfs2_inum_out(const struct gfs2_inum *no, char *buf);
 extern void gfs2_meta_header_in(struct gfs2_meta_header *mh,
 				struct gfs2_buffer_head *bh);
 extern void gfs2_meta_header_out(const struct gfs2_meta_header *mh, char *buf);
-extern void gfs2_meta_header_out_bh(const struct gfs2_meta_header *mh,
-                                    struct gfs2_buffer_head *bh);
 extern void gfs2_sb_in(struct gfs2_sb *sb, struct gfs2_buffer_head *bh);
 extern void gfs2_sb_out(const struct gfs2_sb *sb, char *buf);
 extern void gfs2_rindex_in(struct gfs2_rindex *ri, char *buf);
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 9de568c0..7fb8f000 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -85,13 +85,6 @@ void gfs2_meta_header_out(const struct gfs2_meta_header *mh, char *buf)
 	str->__pad1 = 0;
 }
 
-void gfs2_meta_header_out_bh(const struct gfs2_meta_header *mh,
-                             struct gfs2_buffer_head *bh)
-{
-	gfs2_meta_header_out(mh, bh->iov.iov_base);
-	bmodified(bh);
-}
-
 void gfs2_meta_header_print(const struct gfs2_meta_header *mh)
 {
 	pv(mh, mh_magic, "0x%08X", NULL);
@@ -496,7 +489,7 @@ void gfs2_leaf_out(struct gfs2_leaf *lf, struct gfs2_buffer_head *bh)
 {
 	struct gfs2_leaf *str = (struct gfs2_leaf *)bh->b_data;
 
-	gfs2_meta_header_out_bh(&lf->lf_header, bh);
+	gfs2_meta_header_out(&lf->lf_header, bh->b_data);
 	CPOUT_16(lf, str, lf_depth);
 	CPOUT_16(lf, str, lf_entries);
 	CPOUT_32(lf, str, lf_dirent_format);
@@ -670,7 +663,7 @@ void gfs2_log_descriptor_out(struct gfs2_log_descriptor *ld,
 {
 	struct gfs2_log_descriptor *str = (struct gfs2_log_descriptor *)bh->b_data;
 
-	gfs2_meta_header_out_bh(&ld->ld_header, bh);
+	gfs2_meta_header_out(&ld->ld_header, bh->b_data);
 	CPOUT_32(ld, str, ld_type);
 	CPOUT_32(ld, str, ld_length);
 	CPOUT_32(ld, str, ld_data1);
diff --git a/gfs2/libgfs2/structures.c b/gfs2/libgfs2/structures.c
index 2d30018a..aaa76994 100644
--- a/gfs2/libgfs2/structures.c
+++ b/gfs2/libgfs2/structures.c
@@ -412,7 +412,8 @@ int build_quota_change(struct gfs2_inode *per_node, unsigned int j)
 			return -1;
 
 		memset(bh->b_data, 0, sdp->bsize);
-		gfs2_meta_header_out_bh(&mh, bh);
+		gfs2_meta_header_out(&mh, bh->b_data);
+		bmodified(bh);
 		brelse(bh);
 	}
 
diff --git a/gfs2/mkfs/main_jadd.c b/gfs2/mkfs/main_jadd.c
index 543070da..efe91e30 100644
--- a/gfs2/mkfs/main_jadd.c
+++ b/gfs2/mkfs/main_jadd.c
@@ -345,9 +345,7 @@ static void add_qc(struct gfs2_sbd *sdp, struct jadd_opts *opts)
 			sdp->qcsize << (20 - sdp->sd_sb.sb_bsize_shift);
 		unsigned int x;
 		struct gfs2_meta_header mh;
-		struct gfs2_buffer_head dummy_bh;
 
-		dummy_bh.b_data = buf;
 		set_flags(fd, JA_FL_CLEAR, FS_JOURNAL_DATA_FL);
 		memset(buf, 0, sdp->bsize);
 
@@ -359,12 +357,12 @@ static void add_qc(struct gfs2_sbd *sdp, struct jadd_opts *opts)
 		}
 
 		lseek(fd, 0, SEEK_SET);
-		
+
 		memset(&mh, 0, sizeof(struct gfs2_meta_header));
 		mh.mh_magic = GFS2_MAGIC;
 		mh.mh_type = GFS2_METATYPE_QC;
 		mh.mh_format = GFS2_FORMAT_QC;
-		gfs2_meta_header_out_bh(&mh, &dummy_bh);
+		gfs2_meta_header_out(&mh, buf);
 
 		for (x=0; x<blocks; x++) {
 			if (write(fd, buf, sdp->bsize) != sdp->bsize) {
@@ -381,7 +379,7 @@ static void add_qc(struct gfs2_sbd *sdp, struct jadd_opts *opts)
 	}
 
 	close(fd);
-	
+
 	sprintf(new_name, "quota_change%u", opts->journals);
 	error = rename2system(opts, opts->per_node, new_name);
 	if (error < 0 && errno != EEXIST){
-- 
2.14.3




More information about the Cluster-devel mailing list