[Lustre-discuss] Selective e2fsprogs installation on Ubuntu

Jim Garlick garlick at llnl.gov
Thu Jun 3 12:47:14 PDT 2010


Hi Ramiro,

Actually I just redid the patch for 1.41.10.sun2 (attached).
Haven't tested it yet but it should be OK.

It's mostly print stuff with one exception: mke2fs creates a journal if
argv[0] is mke3fs (we add mkfs.ldiskfs).  Some of the prints instruct users
to run commands, so its a bit more than cosmetic.

Jim

On Thu, Jun 03, 2010 at 11:55:52AM -0700, Ramiro Alba Queipo wrote:
> Hi Jim,
> 
> Thanks for the patch. Now I can see how enable using ldiskfsprogs
> instead of e2fsprogs, so than can be installed without overwriting the
> original binaries in e2fsprogs.
> The only thing is that your patch as it is for 1.41.5.sun1, must be
> redone for 1.41.10.sun2, but I wonder if this changes only affect to
> print stuff so that it is 'safe' to not to commit then. Or else, they
> can modify program behaviour
> 
> Cheers
> 
> On Tue, 2010-06-01 at 10:54 -0700, Jim Garlick wrote:
> > I've attached our patch to e2fsprogs which turns it into ldiskfsprogs.
> > We also have a custom spec file for it but since you're using Ubuntu I assume
> > that's of no use to you.
> > 
> > This is against 1.41.5.sun1
> > 
> > Jim
> > 
> > On Tue, Jun 01, 2010 at 10:19:05AM -0700, Andreas Dilger wrote:
> > > On 2010-06-01, at 07:25, Ramiro Alba Queipo wrote:
> > > > On Tue, 2010-06-01 at 02:15 -0600, Andreas Dilger wrote:
> > > >> On 2010-06-01, at 01:23, Ramiro Alba Queipo wrote:
> > > >>> I've just compiled the last patched e2fsprogs (1.41.10) package suitable
> > > >>> for the last lustre version (1.8.3) and I had some booting problems when
> > > >>> overriding some existing files in original packages (Ubuntu LTS 10.04),
> > > >>> so I thought it would be better to install only the needed programs from
> > > >>> patched e2fsprogs:
> > > >> 
> > > >> It is possible to build the lustre e2fsprogs as "ldiskfsprogs" via configure option.
> > > > 
> > > > Fine. But, I can not see how to do it. No references to ldiskfsprogs
> > > > when doing ./configure --help. Only seen at 'e2fsprogs.spec.in, but I do
> > > > not know how to use. Please, could you give me a minimal guideline. I've
> > > > worked enough with autoconf/automake so that I can understand it .
> > > 
> > > Hmm, possibly this is still in a patch at LLNL?  Maybe Jim (CC'd) can send you their latest patch.
> > > 
> > > Also, depending on what the problem actually is, you can build the e2fsprogs package without many of the optional components:
> > > 
> > >   --disable-libuuid	  do not build private uuid library
> > >   --disable-libblkid	  do not build private blkid library
> > >   --disable-debugfs   	  disable support of debugfs program
> > >   --disable-e2scan   	  disable support of e2scan program
> > >   --disable-imager   	  disable support of e2image program
> > >   --disable-resizer   	  disable support of e2resize program
> > >   --disable-tls           disable use of thread local support
> > >   --disable-uuidd         disable building the uuid daemon
> > > 
> > > Of course, it would also be good to figure out what was actually causing your booting problems, and fix that rather than just working around it.
> > > 
> > > >>> Clients:
> > > >>> --------
> > > >>> 
> > > >>> Only 'lfsck' (compiled with --with-lustre=_LUSTRE_SOURCE_DIR_) is useful
> > > >>> 
> > > >>> Servers:
> > > >>> --------
> > > >>> 
> > > >>> mke2fs -> called by 'mkfs.lustre'
> > > >>> e2fsck -> not called by lustre but needed to check a failed MDT/OST so
> > > >>> it can be installed as other name
> > > >>> tune2fs -> called by tunefs.lustre?/can be installed as a not existing
> > > >>> program
> > > >>> dumpe2fs -> useful but not essential?
> > > >>> 
> > > >>> Please, tell me if I am missing/misunderstanding  something?
> > > >>> 
> > > >>> Cheers
> > > >>> 
> > > >>> -- 
> > > >>> Ramiro Alba
> > > >>> 
> > > >>> Centre Tecnològic de Tranferència de Calor
> > > >>> http://**www.**cttc.upc.edu
> > > >>> 
> > > >>> 
> > > >>> Escola Tècnica Superior d'Enginyeries
> > > >>> Industrial i Aeronàutica de Terrassa
> > > >>> Colom 11, E-08222, Terrassa, Barcelona, Spain
> > > >>> Tel: (+34) 93 739 86 46
> > > >>> 
> > > >>> 
> > > >>> -- 
> > > >>> Aquest missatge ha estat analitzat per MailScanner
> > > >>> a la cerca de virus i d'altres continguts perillosos,
> > > >>> i es considera que està net.
> > > >>> 
> > > >>> _______________________________________________
> > > >>> Lustre-discuss mailing list
> > > >>> Lustre-discuss at lists.lustre.org
> > > >>> http://**lists.lustre.org/mailman/listinfo/lustre-discuss
> > > >> 
> > > >> 
> > > >> Cheers, Andreas
> > > >> --
> > > >> Andreas Dilger
> > > >> Lustre Technical Lead
> > > >> Oracle Corporation Canada Inc.
> > > >> 
> > > >> 
> > > > -- 
> > > > Ramiro Alba
> > > > 
> > > > Centre Tecnològic de Tranferència de Calor
> > > > http://**www.**cttc.upc.edu
> > > > 
> > > > 
> > > > Escola Tècnica Superior d'Enginyeries
> > > > Industrial i Aeronàutica de Terrassa
> > > > Colom 11, E-08222, Terrassa, Barcelona, Spain
> > > > Tel: (+34) 93 739 86 46
> > > > 
> > > > 
> > > > -- 
> > > > Aquest missatge ha estat analitzat per MailScanner
> > > > a la cerca de virus i d'altres continguts perillosos,
> > > > i es considera que està net.
> > > > 
> > > 
> > > 
> > > Cheers, Andreas
> > > --
> > > Andreas Dilger
> > > Lustre Technical Lead
> > > Oracle Corporation Canada Inc.
> > > 
> > 
> > -- 
> > Aquest missatge ha estat analitzat per MailScanner
> > a la cerca de virus i d'altres continguts perillosos,
> > i es considera que està net.
> > 
> -- 
> Ramiro Alba
> 
> Centre Tecnològic de Tranferència de Calor
> http://*www.*cttc.upc.edu
> 
> 
> Escola Tècnica Superior d'Enginyeries
> Industrial i Aeronàutica de Terrassa
> Colom 11, E-08222, Terrassa, Barcelona, Spain
> Tel: (+34) 93 739 86 46
> 
> 
> -- 
> Aquest missatge ha estat analitzat per MailScanner
> a la cerca de virus i d'altres continguts perillosos,
> i es considera que està net.
> 
-------------- next part --------------
Rename various things for repackaging as ldiskfsprogs.

Signed-off-by: Jim Garlick <garlick at llnl.gov>

Index: e2fsprogs+chaos4/misc/mke2fs.c
===================================================================
--- e2fsprogs+chaos4.orig/misc/mke2fs.c
+++ e2fsprogs+chaos4/misc/mke2fs.c
@@ -1212,7 +1212,8 @@ static void PRS(int argc, char *argv[])
 
 		/* If called as mkfs.ext3, create a journal inode */
 		if (!strcmp(program_name, "mkfs.ext3") ||
-		    !strcmp(program_name, "mke3fs"))
+		    !strcmp(program_name, "mke3fs") ||
+		    !strcmp(program_name, "mkfs.ldiskfs"))
 			journal_size = -1;
 	}
 
Index: e2fsprogs+chaos4/misc/tune2fs.c
===================================================================
--- e2fsprogs+chaos4.orig/misc/tune2fs.c
+++ e2fsprogs+chaos4/misc/tune2fs.c
@@ -59,7 +59,7 @@ extern int optind;
 #include "../version.h"
 #include "nls-enable.h"
 
-const char *program_name = "tune2fs";
+const char *program_name = "tune.ldiskfs";
 char *device_name;
 char *new_label, *new_last_mounted, *new_UUID;
 char *io_options;
@@ -95,7 +95,7 @@ struct blk_move {
 };
 
 
-static const char *please_fsck = N_("Please run e2fsck on the filesystem.\n");
+static const char *please_fsck = N_("Please run fsck.ldiskfs on the filesystem.\n");
 
 #ifdef CONFIG_BUILD_FINDFS
 void do_findfs(int argc, char **argv);
@@ -391,7 +391,7 @@ static int update_feature_set(ext2_filsy
 		if (sb->s_feature_incompat &
 		    EXT3_FEATURE_INCOMPAT_RECOVER) {
 			fputs(_("The needs_recovery flag is set.  "
-				"Please run e2fsck before clearing\n"
+				"Please run fsck.ldiskfs before clearing\n"
 				"the has_journal flag.\n"), stderr);
 			return 1;
 		}
@@ -620,7 +620,7 @@ err:
 static void parse_e2label_options(int argc, char ** argv)
 {
 	if ((argc < 2) || (argc > 3)) {
-		fputs(_("Usage: e2label device [newlabel]\n"), stderr);
+		fputs(_("Usage: label.ldiskfs device [newlabel]\n"), stderr);
 		exit(1);
 	}
 	io_options = strchr(argv[1], '?');
@@ -628,7 +628,7 @@ static void parse_e2label_options(int ar
 		*io_options++ = 0;
 	device_name = blkid_get_devname(NULL, argv[1], NULL);
 	if (!device_name) {
-		com_err("e2label", 0, _("Unable to resolve '%s'"),
+		com_err("label.ldiskfs", 0, _("Unable to resolve '%s'"),
 			argv[1]);
 		exit(1);
 	}
@@ -680,7 +680,7 @@ static void parse_tune2fs_options(int ar
 
 	open_flag = 0;
 
-	printf("tune2fs %s (%s)\n", E2FSPROGS_VERSION, E2FSPROGS_DATE);
+	printf("tune.ldiskfs %s (%s)\n", E2FSPROGS_VERSION, E2FSPROGS_DATE);
 	while ((c = getopt(argc, argv, "c:e:fg:i:jlm:o:p:r:s:u:C:E:I:J:L:M:O:T:U:")) != EOF)
 		switch (c) {
 		case 'c':
@@ -932,7 +932,7 @@ static void parse_tune2fs_options(int ar
 		*io_options++ = 0;
 	device_name = blkid_get_devname(NULL, argv[optind], NULL);
 	if (!device_name) {
-		com_err("tune2fs", 0, _("Unable to resolve '%s'"),
+		com_err("tune.ldiskfs", 0, _("Unable to resolve '%s'"),
 			argv[optind]);
 		exit(1);
 	}
@@ -1629,7 +1629,7 @@ static int tune2fs_setup_tdb(const char 
 	set_undo_io_backing_manager(*io_ptr);
 	*io_ptr = undo_io_manager;
 	set_undo_io_backup_file(tdb_file);
-	printf(_("To undo the tune2fs operation please run "
+	printf(_("To undo the tune.ldiskfs operation please run "
 		 "the command\n    e2undo %s %s\n\n"),
 		 tdb_file, name);
 	free(tdb_file);
@@ -1656,10 +1656,12 @@ int main(int argc, char **argv)
 	add_error_table(&et_ext2_error_table);
 
 #ifdef CONFIG_BUILD_FINDFS
-	if (strcmp(get_progname(argv[0]), "findfs") == 0)
+	if (strcmp(get_progname(argv[0]), "findfs") == 0
+	 || strcmp(get_progname(argv[0]), "findfs.ldiskfs") == 0)
 		do_findfs(argc, argv);
 #endif
-	if (strcmp(get_progname(argv[0]), "e2label") == 0)
+	if (strcmp(get_progname(argv[0]), "e2label") == 0
+	 || strcmp(get_progname(argv[0]), "label.ldiskfs") == 0)
 		parse_e2label_options(argc, argv);
 	else
 		parse_tune2fs_options(argc, argv);
@@ -1684,8 +1686,8 @@ retry_open:
 			device_name);
 		if (retval == EXT2_ET_MMP_FSCK_ON)
 			fprintf(stderr,
-				_("If you are sure e2fsck is not running then "
-				  "use 'tune2fs -f -E clear_mmp {device}'\n"));
+				_("If you are sure fsck.ldiskfs is not running then "
+				  "use 'tune.ldiskfs -f -E clear_mmp {device}'\n"));
 		else if (retval == EXT2_ET_MMP_MAGIC_INVALID)
 			fprintf(stderr,
 				_("Magic for mmp is wrong. Try to fix it by "
Index: e2fsprogs+chaos4/e2fsck/unix.c
===================================================================
--- e2fsprogs+chaos4.orig/e2fsck/unix.c
+++ e2fsprogs+chaos4/e2fsck/unix.c
@@ -230,7 +230,7 @@ static void check_mount(e2fsck_t ctx)
 	if (!ctx->interactive)
 		fatal_error(ctx, _("Cannot continue, aborting.\n\n"));
 	printf(_("\n\n\007\007\007\007WARNING!!!  "
-	       "Running e2fsck on a mounted filesystem may cause\n"
+	       "Running fsck.ldiskfs on a mounted filesystem may cause\n"
 	       "SEVERE filesystem damage.\007\007\007\n\n"));
 	cont = ask_yn(_("Do you really want to continue"), -1);
 	if (!cont) {
@@ -703,7 +703,7 @@ static void parse_extended_opts(e2fsck_t
 static void syntax_err_report(const char *filename, long err, int line_num)
 {
 	fprintf(stderr,
-		_("Syntax error in e2fsck config file (%s, line #%d)\n\t%s\n"),
+		_("Syntax error in fsck.ldiskfs config file (%s, line #%d)\n\t%s\n"),
 		filename, line_num, error_message(err));
 	exit(FSCK_ERROR);
 }
@@ -821,7 +821,7 @@ static errcode_t PRS(int argc, char *arg
 				ctx->options |= E2F_OPT_TIME;
 #else
 			fprintf(stderr, _("The -t option is not "
-				"supported on this version of e2fsck.\n"));
+				"supported on this version of fsck.ldiskfs.\n"));
 #endif
 			break;
 		case 'c':
@@ -1074,9 +1074,9 @@ check_error:
 		dump_mmp_msg(fs->mmp_buf, NULL);
 	} else if (retval == EXT2_ET_MMP_FSCK_ON) {
 		dump_mmp_msg(fs->mmp_buf,
-			     _("If you are sure that e2fsck "
+			     _("If you are sure that fsck.ldiskfs "
 			       "is not running on any node then use "
-			       "'tune2fs -f -E clear_mmp {device}'\n"));
+			       "'tune.ldiskfs -f -E clear_mmp {device}'\n"));
 	} else if (retval == EXT2_ET_MMP_MAGIC_INVALID) {
 		if (fix_problem(ctx, PR_0_MMP_INVALID_MAGIC, &pctx))
 			ext2fs_mmp_clear(fs);
@@ -1125,7 +1125,7 @@ int main (int argc, char *argv[])
 
 	retval = PRS(argc, argv, &ctx);
 	if (retval) {
-		com_err("e2fsck", retval,
+		com_err("fsck.ldiskfs", retval,
 			_("while trying to initialize program"));
 		exit(FSCK_ERROR);
 	}
@@ -1133,7 +1133,7 @@ int main (int argc, char *argv[])
 
 	init_resource_track(&ctx->global_rtrack, NULL);
 	if (!(ctx->options & E2F_OPT_PREEN) || show_version_only)
-		fprintf(stderr, "e2fsck %s (%s)\n", my_ver_string,
+		fprintf(stderr, "fsck.ldiskfs %s (%s)\n", my_ver_string,
 			 my_ver_date);
 
 	if (show_version_only) {
@@ -1226,7 +1226,7 @@ failure:
 			ctx->filesystem_name);
 		if (retval == EXT2_ET_REV_TOO_HIGH) {
 			printf(_("The filesystem revision is apparently "
-			       "too high for this version of e2fsck.\n"
+			       "too high for this version of fsck.ldiskfs.\n"
 			       "(Or the filesystem superblock "
 			       "is corrupt)\n\n"));
 			fix_problem(ctx, PR_0_SB_CORRUPT, &pctx);
@@ -1308,7 +1308,7 @@ failure:
 			_("while trying to open %s"),
 			ctx->filesystem_name);
 	get_newer:
-		fatal_error(ctx, _("Get a newer version of e2fsck!"));
+		fatal_error(ctx, _("Get a newer version of fsck.ldiskfs!"));
 	}
 
 	/*
@@ -1429,7 +1429,7 @@ print_unsupp_features:
 #ifndef ENABLE_HTREE
 	if (sb->s_feature_compat & EXT2_FEATURE_COMPAT_DIR_INDEX) {
 		com_err(ctx->program_name, 0,
-			_("E2fsck not compiled with HTREE support,\n\t"
+			_("Fsck.ldiskfs not compiled with HTREE support,\n\t"
 			  "but filesystem %s has HTREE directories.\n"),
 			ctx->device_name);
 		goto get_newer;
@@ -1590,7 +1590,7 @@ no_journal:
 		goto restart;
 	}
 	if (run_result & E2F_FLAG_CANCEL) {
-		printf(_("%s: e2fsck canceled.\n"), ctx->device_name ?
+		printf(_("%s: fsck.ldiskfs canceled.\n"), ctx->device_name ?
 		       ctx->device_name : ctx->filesystem_name);
 		exit_value |= FSCK_CANCELED;
 	}


More information about the lustre-discuss mailing list