#13 mkfs.gfs2: Add a root_inherit_jdata extended option
Merged a year ago by andyp. Opened a year ago by andyp.
andyp/gfs2-utils root_inherit_jdata  into  main

file modified
+27
@@ -128,6 +128,7 @@ 

  	const char *uuid;

  	struct mkfs_dev dev;

  	unsigned discard:1;

+ 	unsigned root_inherit_jd:1;

  

  	unsigned got_bsize:1;

  	unsigned got_qcsize:1;
@@ -312,6 +313,25 @@ 

  	return 0;

  }

  

+ static int parse_root_inherit_jd(struct mkfs_opts *opts, const char *str)

+ {

+ 	unsigned long n = 0;

+ 

+ 	if (str == NULL) { /* -o root_inherit_jdata */

+ 		opts->root_inherit_jd = 1;

+ 		return 0;

+ 	}

+ 	/* -o root_inherit_jdata=N */

+ 	if (parse_ulong(opts, "root_inherit_jdata", str, &n) != 0)

+ 		return -1;

+ 	if (n > 1) {

+ 		fprintf(stderr, _("Invalid root_inherit_jdata argument '%s'. Must be 0 or 1\n"), str);

+ 		return -1;

+ 	}

+ 	opts->root_inherit_jd = (unsigned)n;

+ 	return 0;

+ }

+ 

  static int opt_parse_extended(char *str, struct mkfs_opts *opts)

  {

  	char *opt;
@@ -341,6 +361,9 @@ 

  		} else if (strcmp("format", key) == 0) {

  			if (parse_format(opts, val) != 0)

  				return -1;

+ 		} else if (strcmp("root_inherit_jdata", key) == 0) {

+ 			if (parse_root_inherit_jd(opts, val) != 0)

+ 				return -1;

  		} else if (strcmp("help", key) == 0) {

  			print_ext_opts();

  			return 1;
@@ -1364,6 +1387,10 @@ 

  		printf("%s", _("Done\n"));

  

  	lgfs2_build_root(&sbd);

+ 	if (opts.root_inherit_jd) {

+ 		sbd.md.rooti->i_flags |= GFS2_DIF_INHERIT_JDATA;

+ 		lgfs2_dinode_out(sbd.md.rooti, sbd.md.rooti->i_bh->b_data);

+ 	}

  	if (opts.debug) {

  		printf("\nRoot directory:\n");

  		dinode_print(sbd.md.rooti->i_bh->b_data);

file modified
+16
@@ -198,3 +198,19 @@ 

  AT_CHECK([$GFS_MKFS -p lock_nolock -U 1b4e28ba-2fa1-11d2-883f-b9a761bde3f $GFS_TGT], 255, [ignore], [ignore])

  GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -U 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb $GFS_TGT])

  AT_CLEANUP

+ 

+ AT_SETUP([Root jdata inheritance])

+ AT_KEYWORDS(mkfs.gfs2 mkfs)

+ GFS_TGT_REGEN

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata= $GFS_TGT], 255, [ignore], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata=42 $GFS_TGT], 255, [ignore], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata=X $GFS_TGT], 255, [ignore], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata $GFS_TGT], 0, [ignore], [ignore])

+ AT_CHECK([gfs2_edit -x -p root field di_flags $GFS_TGT | tr -d '\n'], 0, [80000001], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata=1 $GFS_TGT], 0, [ignore], [ignore])

+ AT_CHECK([gfs2_edit -x -p root field di_flags $GFS_TGT | tr -d '\n'], 0, [80000001], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock -o root_inherit_jdata=0 $GFS_TGT], 0, [ignore], [ignore])

+ AT_CHECK([gfs2_edit -x -p root field di_flags $GFS_TGT | tr -d '\n'], 0, [1], [ignore])

+ AT_CHECK([$GFS_MKFS -p lock_nolock $GFS_TGT], 0, [ignore], [ignore])

+ AT_CHECK([gfs2_edit -x -p root field di_flags $GFS_TGT | tr -d '\n'], 0, [1], [ignore])

+ AT_CLEANUP

Add an extended option to allow the GFS2_DIF_INHERIT_JDATA flag to be
set on the root dinode at mkfs time.

This option is only to be used for testing so it is not documented.

Pull-Request has been merged by andyp

a year ago
Metadata