Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Feb 2011 06:00:27 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r218726 - head/sbin/newfs
Message-ID:  <201102160600.p1G60RAl057803@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mckusick
Date: Wed Feb 16 06:00:27 2011
New Revision: 218726
URL: http://svn.freebsd.org/changeset/base/218726

Log:
  Add the -j option to enable soft updates journaling when creating
  a new file system.
  
  Reviewed by: Kostik Belousov <kostikbel@gmail.com>

Modified:
  head/sbin/newfs/newfs.8
  head/sbin/newfs/newfs.c

Modified: head/sbin/newfs/newfs.8
==============================================================================
--- head/sbin/newfs/newfs.8	Tue Feb 15 22:28:15 2011	(r218725)
+++ head/sbin/newfs/newfs.8	Wed Feb 16 06:00:27 2011	(r218726)
@@ -36,7 +36,7 @@
 .Nd construct a new UFS1/UFS2 file system
 .Sh SYNOPSIS
 .Nm
-.Op Fl EJNUlnt
+.Op Fl EJNUjlnt
 .Op Fl L Ar volname
 .Op Fl O Ar filesystem-type
 .Op Fl S Ar sector-size
@@ -157,6 +157,12 @@ If fewer inodes are desired, a larger nu
 to create more inodes a smaller number should be given.
 One inode is required for each distinct file, so this value effectively
 specifies the average file size on the file system.
+.It Fl j
+Enable soft updates journaling on the new file system.
+This flag is implemented by running the
+.Xr tunefs 8
+utility found in the user's
+.Dv $PATH .
 .It Fl l
 Enable multilabel MAC on the new file system.
 .It Fl m Ar free-space

Modified: head/sbin/newfs/newfs.c
==============================================================================
--- head/sbin/newfs/newfs.c	Tue Feb 15 22:28:15 2011	(r218725)
+++ head/sbin/newfs/newfs.c	Wed Feb 16 06:00:27 2011	(r218726)
@@ -87,6 +87,7 @@ int	Nflag;			/* run without writing file
 int	Oflag = 2;		/* file system format (1 => UFS1, 2 => UFS2) */
 int	Rflag;			/* regression test */
 int	Uflag;			/* enable soft updates for file system */
+int	jflag;			/* enable soft updates journaling for filesys */
 int	Xflag = 0;		/* exit in middle of newfs for testing */
 int	Jflag;			/* enable gjournal for file system */
 int	lflag;			/* enable multilabel for file system */
@@ -140,7 +141,7 @@ main(int argc, char *argv[])
 	part_name = 'c';
 	reserved = 0;
 	while ((ch = getopt(argc, argv,
-	    "EJL:NO:RS:T:UXa:b:c:d:e:f:g:h:i:lm:no:p:r:s:t")) != -1)
+	    "EJL:NO:RS:T:UXa:b:c:d:e:f:g:h:i:jlm:no:p:r:s:t")) != -1)
 		switch (ch) {
 		case 'E':
 			Eflag = 1;
@@ -180,6 +181,9 @@ main(int argc, char *argv[])
 		case 'T':
 			disktype = optarg;
 			break;
+		case 'j':
+			jflag = 1;
+			/* fall through to enable soft updates */
 		case 'U':
 			Uflag = 1;
 			break;
@@ -397,7 +401,11 @@ main(int argc, char *argv[])
 			rewritelabel(special, lp);
 	}
 	ufs_disk_close(&disk);
-	exit(0);
+	if (!jflag)
+		exit(0);
+	if (execlp("tunefs", "newfs", "-j", "enable", special, NULL) < 0)
+		err(1, "Cannot enable soft updates journaling, tunefs");
+	/* NOT REACHED */
 }
 
 void
@@ -492,6 +500,7 @@ usage()
 	fprintf(stderr, "\t-g average file size\n");
 	fprintf(stderr, "\t-h average files per directory\n");
 	fprintf(stderr, "\t-i number of bytes per inode\n");
+	fprintf(stderr, "\t-j enable soft updates journaling\n");
 	fprintf(stderr, "\t-l enable multilabel MAC\n");
 	fprintf(stderr, "\t-n do not create .snap directory\n");
 	fprintf(stderr, "\t-m minimum free space %%\n");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102160600.p1G60RAl057803>