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 <[email protected]>

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");
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to