public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* gfs2-utils: master - Allow gfs2_edit printsavedmeta to print destination size and type
@ 2009-08-31 17:32 Bob Peterson
  0 siblings, 0 replies; only message in thread
From: Bob Peterson @ 2009-08-31 17:32 UTC (permalink / raw)
  To: cluster-cvs-relay

Gitweb:        http://git.fedorahosted.org/git/gfs2-utils.git?p=gfs2-utils.git;a=commitdiff;h=e136aa01f94c151503988298fe185fb9024e0a90
Commit:        e136aa01f94c151503988298fe185fb9024e0a90
Parent:        37933701519ee6efd4259214bc717e978e135510
Author:        Bob Peterson <bob@ganesha.peterson>
AuthorDate:    Mon Aug 31 10:08:31 2009 -0500
Committer:     Bob Peterson <rpeterso@redhat.com>
CommitterDate: Mon Aug 31 12:30:15 2009 -0500

Allow gfs2_edit printsavedmeta to print destination size and type

When doing gfs2_edit printsavedmeta, the code will now print
whether the metadata is gfs2 or gfs at the top of the output.
At the end of the output, it will print the device size
required to restore it.

rhbz#503529
---
 gfs2/edit/savemeta.c |   35 +++++++++++++++++++++++++++++++----
 1 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index fd7a29f..36e5941 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -713,10 +713,27 @@ void savemeta(char *out_fn, int saveoption)
 	exit(0);
 }
 
+/**
+ * anthropomorphize - make a uint64_t number more human
+ */
+static const char *anthropomorphize(unsigned long long inhuman_value)
+{
+	const char *symbols = " KMGTPE";
+	int i;
+	unsigned long long val = inhuman_value;
+	static char out_val[32];
+
+	memset(out_val, 0, sizeof(out_val));
+	for (i = 0; i < 6 && val > 1024; i++)
+		val /= 1024;
+	sprintf(out_val, "%llu%c", val, symbols[i]);
+	return out_val;
+}
+
 static int restore_data(int fd, int in_fd, int printblocksonly)
 {
 	size_t rs;
-	uint64_t buf64, writes = 0;
+	uint64_t buf64, writes = 0, highest_valid_block = 0;
 	uint16_t buf16;
 	int first = 1, pos;
 	char rdbuf[256];
@@ -796,9 +813,9 @@ static int restore_data(int fd, int in_fd, int printblocksonly)
 				    sbd1->sb_header.mh_format ==
 				    GFS_FORMAT_SB &&
 				    sbd1->sb_multihost_format ==
-				    GFS_FORMAT_MULTI)
-					;
-				else if (check_sb(&sbd.sd_sb)) {
+				    GFS_FORMAT_MULTI) {
+					gfs1 = TRUE;
+				} else if (check_sb(&sbd.sd_sb)) {
 					fprintf(stderr,"Error: Invalid superblock data.\n");
 					return -1;
 				}
@@ -811,6 +828,9 @@ static int restore_data(int fd, int in_fd, int printblocksonly)
 					       "%u bytes in the destination" \
 					       " file system.\n\n",
 					       last_fs_block, sbd.bsize);
+				} else {
+					printf("This is %s metadata\n", gfs1 ?
+					       "gfs (not gfs2)" : "gfs2");
 				}
 				first = 0;
 			}
@@ -818,6 +838,8 @@ static int restore_data(int fd, int in_fd, int printblocksonly)
 				print_gfs2("%d (l=0x%x): ", blks_saved,
 					   savedata->siglen);
 				block = savedata->blk;
+				if (block > highest_valid_block)
+					highest_valid_block = block;
 				display_block_type(savedata->buf, TRUE);
 			} else {
 				warm_fuzzy_stuff(savedata->blk, FALSE, FALSE);
@@ -859,6 +881,11 @@ static int restore_data(int fd, int in_fd, int printblocksonly)
 	}
 	if (!printblocksonly)
 		warm_fuzzy_stuff(savedata->blk, TRUE, FALSE);
+	else
+		printf("File system size: %lld (0x%llx) blocks, aka %sB\n",
+		       (unsigned long long)highest_valid_block,
+		       (unsigned long long)highest_valid_block,
+		       anthropomorphize(highest_valid_block * sbd.bsize));
 	return 0;
 }
 


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-08-31 17:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-31 17:32 gfs2-utils: master - Allow gfs2_edit printsavedmeta to print destination size and type Bob Peterson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).