This is an automated email from the git hooks/post-receive script.
andyp pushed a commit to branch master
in repository gfs2-utils.
commit 1b7291363c0042dae48caf532a9a4c8daafbb152
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Fri May 1 23:41:32 2020 +0100
libgfs2: Don't use bh's in gfs_rgrp_in/out
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/edit/extended.c | 14 ++++++++------
gfs2/edit/hexedit.c | 4 ++--
gfs2/edit/savemeta.c | 2 +-
gfs2/fsck/fs_recovery.c | 3 +--
gfs2/fsck/initialize.c | 15 ++++++++-------
gfs2/fsck/metawalk.c | 2 +-
gfs2/fsck/pass5.c | 2 +-
gfs2/fsck/rgrepair.c | 2 +-
gfs2/libgfs2/fs_ops.c | 6 +++---
gfs2/libgfs2/gfs1.c | 19 ++++++-------------
gfs2/libgfs2/libgfs2.h | 6 +++---
gfs2/libgfs2/ondisk.c | 4 ++--
gfs2/libgfs2/rgrp.c | 2 +-
13 files changed, 38 insertions(+), 43 deletions(-)
diff --git a/gfs2/edit/extended.c b/gfs2/edit/extended.c
index f38fc7b..0e5ecda 100644
--- a/gfs2/edit/extended.c
+++ b/gfs2/edit/extended.c
@@ -554,19 +554,21 @@ static int parse_rindex(struct gfs2_inode *dip, int print_rindex)
if(print_rindex)
gfs2_rindex_print(&ri);
else {
- struct gfs2_buffer_head *tmp_bh;
+ char buf[sizeof(struct gfs2_rgrp)] = {0};
+ ssize_t ret;
- tmp_bh = bread(&sbd, ri.ri_addr);
- if (sbd.gfs1) {
+ ret = pread(sbd.device_fd, buf, sizeof(buf), ri.ri_addr * sbd.bsize);
+ if (ret != sizeof(buf)) {
+ perror("Failed to read resource group");
+ } else if (sbd.gfs1) {
struct gfs_rgrp rg1;
- gfs_rgrp_in(&rg1, tmp_bh);
+ gfs_rgrp_in(&rg1, buf);
gfs_rgrp_print(&rg1);
} else {
struct gfs2_rgrp rg;
- gfs2_rgrp_in(&rg, tmp_bh->b_data);
+ gfs2_rgrp_in(&rg, buf);
gfs2_rgrp_print(&rg);
}
- brelse(tmp_bh);
}
last_entry_onscreen[dmode] = print_entry_ndx;
}
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
index 655afc5..ff357fc 100644
--- a/gfs2/edit/hexedit.c
+++ b/gfs2/edit/hexedit.c
@@ -850,7 +850,7 @@ static void set_rgrp_flags(int rgnum, uint32_t new_flags, int modify,
int full)
rgblk = get_rg_addr(rgnum);
rbh = bread(&sbd, rgblk);
if (sbd.gfs1)
- gfs_rgrp_in(&rg.rg1, rbh);
+ gfs_rgrp_in(&rg.rg1, rbh->b_data);
else
gfs2_rgrp_in(&rg.rg2, rbh->b_data);
if (modify) {
@@ -859,7 +859,7 @@ static void set_rgrp_flags(int rgnum, uint32_t new_flags, int modify,
int full)
(unsigned long long)rgblk, rg.rg2.rg_flags, new_flags);
rg.rg2.rg_flags = new_flags;
if (sbd.gfs1)
- gfs_rgrp_out(&rg.rg1, rbh);
+ gfs_rgrp_out(&rg.rg1, rbh->b_data);
else
gfs2_rgrp_out(&rg.rg2, rbh->b_data);
bmodified(rbh);
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 63cb91a..846b615 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -914,7 +914,7 @@ static int rgrp_read(struct gfs2_sbd *sdp, struct rgrp_tree *rgd)
rgd->bits[x].bi_bh = bhs[x];
if (sdp->gfs1)
- gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_in(&rgd->rg, rgd->bits[0].bi_bh->b_data);
free(bhs);
diff --git a/gfs2/fsck/fs_recovery.c b/gfs2/fsck/fs_recovery.c
index 84cd4cc..0e029db 100644
--- a/gfs2/fsck/fs_recovery.c
+++ b/gfs2/fsck/fs_recovery.c
@@ -111,8 +111,7 @@ static void refresh_rgrp(struct gfs2_sbd *sdp, struct rgrp_tree *rgd,
bmodified(rgd->bits[i].bi_bh);
if (i == 0) { /* this is the rgrp itself */
if (sdp->gfs1)
- gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg,
- rgd->bits[0].bi_bh);
+ gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_in(&rgd->rg, rgd->bits[0].bi_bh->b_data);
}
diff --git a/gfs2/fsck/initialize.c b/gfs2/fsck/initialize.c
index ed6954d..374117b 100644
--- a/gfs2/fsck/initialize.c
+++ b/gfs2/fsck/initialize.c
@@ -324,7 +324,7 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct
rgrp_tree *rgd,
will be reported. */
if (rg_reclaimed && *fixit) {
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
@@ -346,7 +346,7 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct
rgrp_tree *rgd,
if (query( _("Fix the rgrp free blocks count? (y/n)"))) {
rgd->rg.rg_free = rg_free;
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
@@ -368,7 +368,8 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct
rgrp_tree *rgd,
gfs1rg->rg_freemeta, rg_unlinked);
if (query( _("Fix the rgrp free meta blocks count? (y/n)"))) {
gfs1rg->rg_freemeta = rg_unlinked;
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
+ bmodified(rgd->bits[0].bi_bh);
*this_rg_fixed = 1;
log_err( _("The rgrp was fixed.\n"));
} else
@@ -384,8 +385,8 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct
rgrp_tree *rgd,
gfs1rg->rg_useddi, rg_useddi);
if (query( _("Fix the rgrp used dinode block count? (y/n)"))) {
gfs1rg->rg_useddi = rg_useddi;
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg,
- rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
+ bmodified(rgd->bits[0].bi_bh);
*this_rg_fixed = 1;
log_err( _("The rgrp was fixed.\n"));
} else
@@ -401,8 +402,8 @@ static void check_rgrp_integrity(struct gfs2_sbd *sdp, struct
rgrp_tree *rgd,
gfs1rg->rg_usedmeta, rg_usedmeta);
if (query( _("Fix the rgrp used meta blocks count? (y/n)"))) {
gfs1rg->rg_usedmeta = rg_usedmeta;
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg,
- rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
+ bmodified(rgd->bits[0].bi_bh);
*this_rg_fixed = 1;
log_err( _("The rgrp was fixed.\n"));
} else
diff --git a/gfs2/fsck/metawalk.c b/gfs2/fsck/metawalk.c
index d8bc211..8729d48 100644
--- a/gfs2/fsck/metawalk.c
+++ b/gfs2/fsck/metawalk.c
@@ -155,7 +155,7 @@ int check_n_fix_bitmap(struct gfs2_sbd *sdp, struct rgrp_tree *rgd,
}
if (rewrite_rgrp) {
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
diff --git a/gfs2/fsck/pass5.c b/gfs2/fsck/pass5.c
index d284ab5..8e3f37c 100644
--- a/gfs2/fsck/pass5.c
+++ b/gfs2/fsck/pass5.c
@@ -201,7 +201,7 @@ static void update_rgrp(struct gfs2_sbd *sdp, struct rgrp_tree *rgp,
log_warn( _("Resource group counts updated\n"));
/* write out the rgrp */
if (sdp->gfs1)
- gfs_rgrp_out(gfs1rg, rgp->bits[0].bi_bh);
+ gfs_rgrp_out(gfs1rg, rgp->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgp->rg, rgp->bits[0].bi_bh->b_data);
} else
diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c
index ac44efd..97d3a90 100644
--- a/gfs2/fsck/rgrepair.c
+++ b/gfs2/fsck/rgrepair.c
@@ -909,7 +909,7 @@ static int rewrite_rg_block(struct gfs2_sbd *sdp, struct rgrp_tree
*rg,
rg->rg.rg_header.mh_format = GFS2_FORMAT_RG;
rg->rg.rg_free = rg->ri.ri_data;
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rg->rg, rg->bits[x].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rg->rg, rg->bits[x].bi_bh->b_data);
else
gfs2_rgrp_out(&rg->rg, rg->bits[x].bi_bh->b_data);
}
diff --git a/gfs2/libgfs2/fs_ops.c b/gfs2/libgfs2/fs_ops.c
index 0acd59b..b2ea003 100644
--- a/gfs2/libgfs2/fs_ops.c
+++ b/gfs2/libgfs2/fs_ops.c
@@ -156,7 +156,7 @@ static int blk_alloc_in_rg(struct gfs2_sbd *sdp, unsigned state,
struct rgrp_tre
rgd->rg.rg_free--;
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
@@ -1928,7 +1928,7 @@ void gfs2_free_block(struct gfs2_sbd *sdp, uint64_t block)
gfs2_set_bitmap(rgd, block, GFS2_BLKST_FREE);
rgd->rg.rg_free++; /* adjust the free count */
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
@@ -1998,7 +1998,7 @@ int gfs2_freedi(struct gfs2_sbd *sdp, uint64_t diblock)
rgd->rg.rg_free++;
rgd->rg.rg_dinodes--;
if (sdp->gfs1)
- gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_out((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else
gfs2_rgrp_out(&rgd->rg, rgd->bits[0].bi_bh->b_data);
bmodified(rgd->bits[0].bi_bh);
diff --git a/gfs2/libgfs2/gfs1.c b/gfs2/libgfs2/gfs1.c
index b91cce5..16c183b 100644
--- a/gfs2/libgfs2/gfs1.c
+++ b/gfs2/libgfs2/gfs1.c
@@ -351,14 +351,11 @@ void gfs_jindex_in(struct gfs_jindex *jindex, char *jbuf)
memcpy(jindex->ji_reserved, str->ji_reserved, 64);
}
-/* ------------------------------------------------------------------------ */
-/* gfs_rgrp_in - Read in a resource group header */
-/* ------------------------------------------------------------------------ */
-void gfs_rgrp_in(struct gfs_rgrp *rgrp, struct gfs2_buffer_head *rbh)
+void gfs_rgrp_in(struct gfs_rgrp *rgrp, const char *buf)
{
- struct gfs_rgrp *str = (struct gfs_rgrp *)rbh->b_data;
+ struct gfs_rgrp *str = (struct gfs_rgrp *)buf;
- gfs2_meta_header_in(&rgrp->rg_header, rbh->b_data);
+ gfs2_meta_header_in(&rgrp->rg_header, buf);
rgrp->rg_flags = be32_to_cpu(str->rg_flags);
rgrp->rg_free = be32_to_cpu(str->rg_free);
rgrp->rg_useddi = be32_to_cpu(str->rg_useddi);
@@ -370,14 +367,11 @@ void gfs_rgrp_in(struct gfs_rgrp *rgrp, struct gfs2_buffer_head
*rbh)
memcpy(rgrp->rg_reserved, str->rg_reserved, 64);
}
-/* ------------------------------------------------------------------------ */
-/* gfs_rgrp_out */
-/* ------------------------------------------------------------------------ */
-void gfs_rgrp_out(struct gfs_rgrp *rgrp, struct gfs2_buffer_head *rbh)
+void gfs_rgrp_out(const struct gfs_rgrp *rgrp, char *buf)
{
- struct gfs_rgrp *str = (struct gfs_rgrp *)rbh->b_data;
+ struct gfs_rgrp *str = (struct gfs_rgrp *)buf;
- gfs2_meta_header_out(&rgrp->rg_header, rbh->b_data);
+ gfs2_meta_header_out(&rgrp->rg_header, buf);
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);
@@ -387,5 +381,4 @@ void gfs_rgrp_out(struct gfs_rgrp *rgrp, struct gfs2_buffer_head
*rbh)
str->rg_freemeta = cpu_to_be32(rgrp->rg_freemeta);
memcpy(str->rg_reserved, rgrp->rg_reserved, 64);
- bmodified(rbh);
}
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index fc0afed..0f2ddf4 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -643,8 +643,8 @@ extern struct gfs2_inode *lgfs2_gfs_inode_get(struct gfs2_sbd *sdp,
extern struct gfs2_inode *lgfs2_gfs_inode_read(struct gfs2_sbd *sdp,
uint64_t di_addr);
extern void gfs_jindex_in(struct gfs_jindex *jindex, char *buf);
-extern void gfs_rgrp_in(struct gfs_rgrp *rg, struct gfs2_buffer_head *bh);
-extern void gfs_rgrp_out(struct gfs_rgrp *rg, struct gfs2_buffer_head *bh);
+extern void gfs_rgrp_in(struct gfs_rgrp *rg, const char *buf);
+extern void gfs_rgrp_out(const struct gfs_rgrp *rg, char *buf);
/* misc.c */
extern int compute_heightsize(unsigned bsize, uint64_t *heightsize,
@@ -723,7 +723,7 @@ extern void print_it(const char *label, const char *fmt, const char
*fmt2, ...)
extern void gfs2_inum_in(struct gfs2_inum *no, char *buf);
extern void gfs2_inum_out(const struct gfs2_inum *no, char *buf);
-extern void gfs2_meta_header_in(struct gfs2_meta_header *mh, char *buf);
+extern void gfs2_meta_header_in(struct gfs2_meta_header *mh, const char *buf);
extern void gfs2_meta_header_out(const struct gfs2_meta_header *mh, char *buf);
extern void gfs2_sb_in(struct gfs2_sb *sb, char *buf);
extern void gfs2_sb_out(const struct gfs2_sb *sb, char *buf);
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 648a914..b7b47de 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -64,9 +64,9 @@ void gfs2_inum_print(const struct gfs2_inum *no)
pv(no, no_addr, "%llu", "0x%llx");
}
-void gfs2_meta_header_in(struct gfs2_meta_header *mh, char *buf)
+void gfs2_meta_header_in(struct gfs2_meta_header *mh, const char *buf)
{
- struct gfs2_meta_header *str = (struct gfs2_meta_header *)buf;
+ const struct gfs2_meta_header *str = (struct gfs2_meta_header *)buf;
CPIN_32(mh, str, mh_magic);
CPIN_32(mh, str, mh_type);
diff --git a/gfs2/libgfs2/rgrp.c b/gfs2/libgfs2/rgrp.c
index bd69301..164b341 100644
--- a/gfs2/libgfs2/rgrp.c
+++ b/gfs2/libgfs2/rgrp.c
@@ -232,7 +232,7 @@ uint64_t gfs2_rgrp_read(struct gfs2_sbd *sdp, struct rgrp_tree *rgd)
}
}
if (sdp->gfs1)
- gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh);
+ gfs_rgrp_in((struct gfs_rgrp *)&rgd->rg, rgd->bits[0].bi_bh->b_data);
else {
if (lgfs2_rgrp_crc_check(rgd->bits[0].bi_bh->b_data)) {
free(bhs);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.