[Cluster-devel] [PATCH 1/2] gfs2_edit savemeta: Split out the rgrp saving code
Andrew Price
anprice at redhat.com
Wed Jan 18 16:25:42 UTC 2017
Factor out the rgrp saving code into its own function to make it easier
to work with.
Signed-off-by: Andrew Price <anprice at redhat.com>
---
gfs2/edit/savemeta.c | 38 +++++++++++++++++++++-----------------
1 file changed, 21 insertions(+), 17 deletions(-)
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index f6b7ff0..da24645 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -770,6 +770,26 @@ static void save_allocated(struct rgrp_tree *rgd, struct metafd *mfd)
free(ibuf);
}
+static void save_rgrp(struct metafd *mfd, struct rgrp_tree *rgd, int withcontents)
+{
+ uint64_t addr = rgd->ri.ri_addr;
+ uint32_t i;
+
+ if (gfs2_rgrp_read(&sbd, rgd))
+ return;
+ log_debug("RG at %"PRIu64" (0x%"PRIx64") is %u long\n",
+ addr, addr, rgd->ri.ri_length);
+ /* Save the rg and bitmaps */
+ for (i = 0; i < rgd->ri.ri_length; i++) {
+ warm_fuzzy_stuff(rgd->ri.ri_addr + i, FALSE);
+ save_bh(mfd, rgd->bits[i].bi_bh, 0, NULL);
+ }
+ /* Save the other metadata: inodes, etc. if mode is not 'savergs' */
+ if (withcontents)
+ save_allocated(rgd, mfd);
+ gfs2_rgrp_relse(rgd);
+}
+
static int save_header(struct metafd *mfd, uint64_t fsbytes)
{
struct savemeta_header smh = {
@@ -878,25 +898,9 @@ void savemeta(char *out_fn, int saveoption, int gziplevel)
/* Walk through the resource groups saving everything within */
for (n = osi_first(&sbd.rgtree); n; n = osi_next(n)) {
struct rgrp_tree *rgd;
- unsigned i;
rgd = (struct rgrp_tree *)n;
- if (gfs2_rgrp_read(&sbd, rgd))
- continue;
- log_debug("RG at %lld (0x%llx) is %u long\n",
- (unsigned long long)rgd->ri.ri_addr,
- (unsigned long long)rgd->ri.ri_addr,
- rgd->ri.ri_length);
- /* Save off the rg and bitmaps */
- for (i = 0; i < rgd->ri.ri_length; i++) {
- warm_fuzzy_stuff(rgd->ri.ri_addr + i, FALSE);
- save_bh(&mfd, rgd->bits[i].bi_bh, 0, NULL);
- }
- /* Save off the other metadata: inodes, etc. if mode is not 'savergs' */
- if (saveoption != 2) {
- save_allocated(rgd, &mfd);
- }
- gfs2_rgrp_relse(rgd);
+ save_rgrp(&mfd, rgd, (saveoption != 2));
}
/* Clean up */
/* There may be a gap between end of file system and end of device */
--
2.9.3
More information about the Cluster-devel
mailing list