Patchwork [2/4] e2fsprogs: Tidy up mmp handling in debugfs

login
register
mail settings
Submitter Eric Sandeen
Date Nov. 10, 2011, 10:53 p.m.
Message ID <4EBC55E2.3080600@redhat.com>
Download mbox | patch
Permalink /patch/125013/
State Accepted
Headers show

Comments

Eric Sandeen - Nov. 10, 2011, 10:53 p.m.
Several small fixes:

* Gracefully fail mmp commands if fs is not open
* Show magic number in dump_mmp command
* Fix header in output for set_mmp_value -l

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---



--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Theodore Ts'o - Nov. 12, 2011, 2:12 a.m.
On Thu, Nov 10, 2011 at 04:53:22PM -0600, Eric Sandeen wrote:
> Several small fixes:
> 
> * Gracefully fail mmp commands if fs is not open
> * Show magic number in dump_mmp command
> * Fix header in output for set_mmp_value -l
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>

Applied, thanks.

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index eba3b69..1fb8f44 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -2165,11 +2165,15 @@  void do_punch(int argc, char *argv[])
 
 void do_dump_mmp(int argc, char *argv[])
 {
-	struct ext2_super_block *sb = current_fs->super;
+	struct ext2_super_block *sb;
 	struct mmp_struct *mmp_s;
 	time_t t;
 	errcode_t retval = 0;
 
+	if (check_fs_open(argv[0]))
+		return;
+
+	sb  = current_fs->super;
 	if (sb->s_mmp_block <= sb->s_first_data_block ||
 	    sb->s_mmp_block >= ext2fs_blocks_count(sb)) {
 		com_err(argv[0], EXT2_ET_MMP_BAD_BLOCK, "while dumping it.\n");
@@ -2203,6 +2207,7 @@  void do_dump_mmp(int argc, char *argv[])
 	fprintf(stdout, "time: %lld -- %s", mmp_s->mmp_time, ctime(&t));
 	fprintf(stdout, "node_name: %s\n", mmp_s->mmp_nodename);
 	fprintf(stdout, "device_name: %s\n", mmp_s->mmp_bdevname);
+	fprintf(stdout, "magic: 0x%x\n", mmp_s->mmp_magic);
 }
 
 static int source_file(const char *cmd_file, int sci_idx)
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index d461275..0041160 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -242,6 +242,9 @@  static struct field_set_info ext4_bg_fields[] = {
 	{ 0, 0, 0, 0 }
 };
 
+/* forward declaration */
+static struct field_set_info mmp_fields[];
+
 static int check_suffix(const char *field)
 {
 	int len = strlen(field);
@@ -561,6 +564,9 @@  static void print_possible_fields(struct field_set_info *fields)
 	} else if (fields == inode_fields) {
 		type = "Inode";
 		cmd = "set_inode";
+	} else if (fields == mmp_fields) {
+		type = "MMP";
+		cmd = "set_mmp_value";
 	} else {
 		type = "Block group descriptor";
 		cmd = "set_block_group";
@@ -768,6 +774,9 @@  void do_set_mmp_value(int argc, char *argv[])
 		return;
 	}
 
+	if (check_fs_open(argv[0]))
+		return;
+
 	if (current_fs->super->s_mmp_block == 0) {
 		com_err(argv[0], 0, "no MMP block allocated\n");
 		return;