aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandan Babu R <chandan.babu@oracle.com>2023-11-06 18:40:38 +0530
committerCarlos Maiolino <cem@kernel.org>2023-11-21 14:09:36 +0100
commiteba3f43eb8e4a220918af5e19c2ac76df70df154 (patch)
tree62a39cfea1c7d19e76ba79ff34f15718b8758448
parentfb4697dd62002338bc5b1d87cab9b9244e5d81bc (diff)
downloadxfsprogs-dev-eba3f43eb8e4a220918af5e19c2ac76df70df154.tar.gz
metadump: Add initialization and release functions
Move metadump initialization and release functionality into corresponding functions. There are no functional changes made in this commit. Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandan.babu@oracle.com> Signed-off-by: Carlos Maiolino <cem@kernel.org>
-rw-r--r--db/metadump.c88
1 files changed, 52 insertions, 36 deletions
diff --git a/db/metadump.c b/db/metadump.c
index da91000c7a..8d921500d8 100644
--- a/db/metadump.c
+++ b/db/metadump.c
@@ -2666,6 +2666,54 @@ done:
}
static int
+init_metadump(void)
+{
+ metadump.metablock = (xfs_metablock_t *)calloc(BBSIZE + 1, BBSIZE);
+ if (metadump.metablock == NULL) {
+ print_warning("memory allocation failure");
+ return -1;
+ }
+ metadump.metablock->mb_blocklog = BBSHIFT;
+ metadump.metablock->mb_magic = cpu_to_be32(XFS_MD_MAGIC);
+
+ /* Set flags about state of metadump */
+ metadump.metablock->mb_info = XFS_METADUMP_INFO_FLAGS;
+ if (metadump.obfuscate)
+ metadump.metablock->mb_info |= XFS_METADUMP_OBFUSCATED;
+ if (!metadump.zero_stale_data)
+ metadump.metablock->mb_info |= XFS_METADUMP_FULLBLOCKS;
+ if (metadump.dirty_log)
+ metadump.metablock->mb_info |= XFS_METADUMP_DIRTYLOG;
+
+ metadump.block_index = (__be64 *)((char *)metadump.metablock +
+ sizeof(xfs_metablock_t));
+ metadump.block_buffer = (char *)(metadump.metablock) + BBSIZE;
+ metadump.num_indices = (BBSIZE - sizeof(xfs_metablock_t)) / sizeof(__be64);
+
+ /*
+ * A metadump block can hold at most num_indices of BBSIZE sectors;
+ * do not try to dump a filesystem with a sector size which does not
+ * fit within num_indices (i.e. within a single metablock).
+ */
+ if (mp->m_sb.sb_sectsize > metadump.num_indices * BBSIZE) {
+ print_warning("Cannot dump filesystem with sector size %u",
+ mp->m_sb.sb_sectsize);
+ free(metadump.metablock);
+ return -1;
+ }
+
+ metadump.cur_index = 0;
+
+ return 0;
+}
+
+static void
+release_metadump(void)
+{
+ free(metadump.metablock);
+}
+
+static int
metadump_f(
int argc,
char **argv)
@@ -2757,48 +2805,16 @@ metadump_f(
pop_cur();
}
- metadump.metablock = (xfs_metablock_t *)calloc(BBSIZE + 1, BBSIZE);
- if (metadump.metablock == NULL) {
- print_warning("memory allocation failure");
- return -1;
- }
- metadump.metablock->mb_blocklog = BBSHIFT;
- metadump.metablock->mb_magic = cpu_to_be32(XFS_MD_MAGIC);
-
- /* Set flags about state of metadump */
- metadump.metablock->mb_info = XFS_METADUMP_INFO_FLAGS;
- if (metadump.obfuscate)
- metadump.metablock->mb_info |= XFS_METADUMP_OBFUSCATED;
- if (!metadump.zero_stale_data)
- metadump.metablock->mb_info |= XFS_METADUMP_FULLBLOCKS;
- if (metadump.dirty_log)
- metadump.metablock->mb_info |= XFS_METADUMP_DIRTYLOG;
-
- metadump.block_index = (__be64 *)((char *)metadump.metablock +
- sizeof(xfs_metablock_t));
- metadump.block_buffer = (char *)metadump.metablock + BBSIZE;
- metadump.num_indices = (BBSIZE - sizeof(xfs_metablock_t)) /
- sizeof(__be64);
-
- /*
- * A metadump block can hold at most num_indices of BBSIZE sectors;
- * do not try to dump a filesystem with a sector size which does not
- * fit within num_indices (i.e. within a single metablock).
- */
- if (mp->m_sb.sb_sectsize > metadump.num_indices * BBSIZE) {
- print_warning("Cannot dump filesystem with sector size %u",
- mp->m_sb.sb_sectsize);
- free(metadump.metablock);
+ ret = init_metadump();
+ if (ret)
return 0;
- }
start_iocur_sp = iocur_sp;
if (strcmp(argv[optind], "-") == 0) {
if (isatty(fileno(stdout))) {
print_warning("cannot write to a terminal");
- free(metadump.metablock);
- return 0;
+ goto out;
}
/*
* Redirect stdout to stderr for the duration of the
@@ -2875,7 +2891,7 @@ metadump_f(
while (iocur_sp > start_iocur_sp)
pop_cur();
out:
- free(metadump.metablock);
+ release_metadump();
return 0;
}