newfs: Add an option to disable soft updates

A previous commit turned soft updates on by default for UFS2 without
providing a way to turn them off.  This corrects that by adding a new -u
flag which forces soft updates (and soft updates journaling) off.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Sponsored by:	NetApp, Inc.
Fixes:		61dece6d27 ("Enable soft updates by default for UFS2 filesystems.")
Reviewed by:	mckusick
Differential Revision:	https://reviews.freebsd.org/D54576
This commit is contained in:
Dag-Erling Smørgrav 2026-01-11 03:34:00 +01:00
parent 01c0005dce
commit 68562f8145
2 changed files with 24 additions and 9 deletions

View file

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd January 23, 2025
.Dd January 7, 2026
.Dt NEWFS 8
.Os
.Sh NAME
@ -33,7 +33,7 @@
.Nd construct a new UFS1/UFS2 file system
.Sh SYNOPSIS
.Nm
.Op Fl EJNUjlnt
.Op Fl EJNUjlntu
.Op Fl L Ar volname
.Op Fl O Ar filesystem-type
.Op Fl S Ar sector-size
@ -98,10 +98,20 @@ The default format is UFS2.
For backward compatibility.
.It Fl U
Enable soft updates on the new file system.
Soft updates are enabled by default for UFS2 format file systems.
Use
.Xr tunefs 8
to disable soft updates if they are not wanted.
If neither
.Fl U
nor
.Fl u
is specified, soft updates are enabled by default for UFS2 format file
systems and disabled otherwise.
.It Fl u
Do not enable soft updates on the new file system.
If neither
.Fl U
nor
.Fl u
is specified, soft updates are enabled by default for UFS2 format file
systems and disabled otherwise.
.It Fl a Ar maxcontig
Specify the maximum number of contiguous blocks that will be
laid out before forcing a rotational delay.
@ -166,6 +176,8 @@ 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 implies
.Fl U .
This flag is implemented by running the
.Xr tunefs 8
utility found in the user's

View file

@ -76,7 +76,7 @@ int Lflag; /* add a volume label */
int Nflag; /* run without writing file system */
int Oflag = 2; /* file system format (1 => UFS1, 2 => UFS2) */
int Rflag; /* regression test */
int Uflag; /* enable soft updates for file system */
int Uflag = -1; /* 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 */
@ -179,6 +179,9 @@ main(int argc, char *argv[])
case 'U':
Uflag = 1;
break;
case 'u':
Uflag = 0;
break;
case 'X':
Xflag++;
break;
@ -386,8 +389,8 @@ main(int argc, char *argv[])
opt = FS_OPTSPACE;
}
/* Use soft updates by default for UFS2 and above */
if (Oflag > 1)
Uflag = 1;
if (Uflag < 0)
Uflag = Oflag > 1;
realsectorsize = sectorsize;
if (sectorsize != DEV_BSIZE) { /* XXX */
int secperblk = sectorsize / DEV_BSIZE;