summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2006-10-31 21:52:28 +0000
committerpjd <pjd@FreeBSD.org>2006-10-31 21:52:28 +0000
commitad87251c1a1185717a0f74277ecd4a6def65e583 (patch)
treeb48f4736ca193851013f4dcfe8f64cc8cedffd00 /sbin
parent036e929548382eba04c176d581bb24928a5d4155 (diff)
downloadFreeBSD-src-ad87251c1a1185717a0f74277ecd4a6def65e583.zip
FreeBSD-src-ad87251c1a1185717a0f74277ecd4a6def65e583.tar.gz
Add -J flag to both newfs(8) and tunefs(8) which allows to enable gjournal
support. I left -j flag for UFS journal implementation which we may gain at some point. Sponsored by: home.pl
Diffstat (limited to 'sbin')
-rw-r--r--sbin/newfs/mkfs.c2
-rw-r--r--sbin/newfs/newfs.84
-rw-r--r--sbin/newfs/newfs.c6
-rw-r--r--sbin/newfs/newfs.h1
-rw-r--r--sbin/tunefs/tunefs.83
-rw-r--r--sbin/tunefs/tunefs.c49
6 files changed, 56 insertions, 9 deletions
diff --git a/sbin/newfs/mkfs.c b/sbin/newfs/mkfs.c
index 916b34c..fe862b5 100644
--- a/sbin/newfs/mkfs.c
+++ b/sbin/newfs/mkfs.c
@@ -135,6 +135,8 @@ mkfs(struct partition *pp, char *fsys)
sblock.fs_flags |= FS_DOSOFTDEP;
if (Lflag)
strlcpy(sblock.fs_volname, volumelabel, MAXVOLLEN);
+ if (Jflag)
+ sblock.fs_flags |= FS_GJOURNAL;
if (lflag)
sblock.fs_flags |= FS_MULTILABEL;
/*
diff --git a/sbin/newfs/newfs.8 b/sbin/newfs/newfs.8
index f907642..8be6d35 100644
--- a/sbin/newfs/newfs.8
+++ b/sbin/newfs/newfs.8
@@ -36,7 +36,7 @@
.Nd construct a new UFS1/UFS2 file system
.Sh SYNOPSIS
.Nm
-.Op Fl NUln
+.Op Fl JNUln
.Op Fl L Ar volname
.Op Fl O Ar filesystem-type
.Op Fl S Ar sector-size
@@ -77,6 +77,8 @@ has numerous options to allow the defaults to be selectively overridden.
.Pp
The following options define the general layout policies:
.Bl -tag -width indent
+.It Fl J
+Enable journaling on the new file system via gjournal.
.It Fl L Ar volname
Add a volume label to the new file system.
.It Fl N
diff --git a/sbin/newfs/newfs.c b/sbin/newfs/newfs.c
index 289d055..85fb34b 100644
--- a/sbin/newfs/newfs.c
+++ b/sbin/newfs/newfs.c
@@ -117,6 +117,7 @@ int Oflag = 2; /* file system format (1 => UFS1, 2 => UFS2) */
int Rflag; /* regression test */
int Uflag; /* enable soft updates for file system */
int Eflag = 0; /* exit in middle of newfs for testing */
+int Jflag; /* enable gjournal for file system */
int lflag; /* enable multilabel for file system */
int nflag; /* do not create .snap directory */
quad_t fssize; /* file system size */
@@ -156,11 +157,14 @@ main(int argc, char *argv[])
off_t mediasize;
while ((ch = getopt(argc, argv,
- "EL:NO:RS:T:Ua:b:c:d:e:f:g:h:i:lm:no:s:")) != -1)
+ "EJL:NO:RS:T:Ua:b:c:d:e:f:g:h:i:lm:no:s:")) != -1)
switch (ch) {
case 'E':
Eflag++;
break;
+ case 'J':
+ Jflag = 1;
+ break;
case 'L':
volumelabel = optarg;
i = -1;
diff --git a/sbin/newfs/newfs.h b/sbin/newfs/newfs.h
index dae9fd8..55f920f 100644
--- a/sbin/newfs/newfs.h
+++ b/sbin/newfs/newfs.h
@@ -49,6 +49,7 @@ extern int Oflag; /* build UFS1 format file system */
extern int Rflag; /* regression test */
extern int Uflag; /* enable soft updates for file system */
extern int Eflag; /* exit as if error, for testing */
+extern int Jflag; /* enable gjournal for file system */
extern int lflag; /* enable multilabel MAC for file system */
extern int nflag; /* do not create .snap directory */
extern quad_t fssize; /* file system size */
diff --git a/sbin/tunefs/tunefs.8 b/sbin/tunefs/tunefs.8
index ac8641c..e82b42b 100644
--- a/sbin/tunefs/tunefs.8
+++ b/sbin/tunefs/tunefs.8
@@ -40,6 +40,7 @@
.Op Fl a Cm enable | disable
.Op Fl e Ar maxbpg
.Op Fl f Ar avgfilesize
+.Op Fl J Cm enable | disable
.Op Fl L Ar volname
.Op Fl l Cm enable | disable
.Op Fl m Ar minfree
@@ -87,6 +88,8 @@ For file systems with exclusively large files,
this parameter should be set higher.
.It Fl f Ar avgfilesize
Specify the expected average file size.
+.It Fl J Cm enable | disable
+Turn on/off GJournal flag.
.It Fl L Ar volname
Add/modify an optional file system volume label.
.It Fl l Cm enable | disable
diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c
index e8ab8d3..2b263bb 100644
--- a/sbin/tunefs/tunefs.c
+++ b/sbin/tunefs/tunefs.c
@@ -76,11 +76,11 @@ void printfs(void);
int
main(int argc, char *argv[])
{
- char *avalue, *Lvalue, *lvalue, *nvalue;
+ char *avalue, *Jvalue, *Lvalue, *lvalue, *nvalue;
const char *special, *on;
const char *name;
int active;
- int Aflag, aflag, eflag, evalue, fflag, fvalue, Lflag, lflag;
+ int Aflag, aflag, eflag, evalue, fflag, fvalue, Jflag, Lflag, lflag;
int mflag, mvalue, nflag, oflag, ovalue, pflag, sflag, svalue;
int ch, found_arg, i;
const char *chg[2];
@@ -89,13 +89,13 @@ main(int argc, char *argv[])
if (argc < 3)
usage();
- Aflag = aflag = eflag = fflag = Lflag = lflag = mflag = 0;
+ Aflag = aflag = eflag = fflag = Jflag = Lflag = lflag = mflag = 0;
nflag = oflag = pflag = sflag = 0;
- avalue = Lvalue = lvalue = nvalue = NULL;
+ avalue = Jvalue = Lvalue = lvalue = nvalue = NULL;
evalue = fvalue = mvalue = ovalue = svalue = 0;
active = 0;
found_arg = 0; /* At least one arg is required. */
- while ((ch = getopt(argc, argv, "Aa:e:f:L:l:m:n:o:ps:")) != -1)
+ while ((ch = getopt(argc, argv, "Aa:e:f:J:L:l:m:n:o:ps:")) != -1)
switch (ch) {
case 'A':
@@ -135,6 +135,19 @@ main(int argc, char *argv[])
fflag = 1;
break;
+ case 'J':
+ found_arg = 1;
+ name = "gjournaled file system";
+ Jvalue = optarg;
+ if (strcmp(Jvalue, "enable") &&
+ strcmp(Jvalue, "disable")) {
+ errx(10, "bad %s (options are %s)",
+ name, "`enable' or `disable'");
+ }
+ Jflag = 1;
+ break;
+
+
case 'L':
found_arg = 1;
name = "volume label";
@@ -282,6 +295,26 @@ main(int argc, char *argv[])
sblock.fs_avgfilesize = fvalue;
}
}
+ if (Jflag) {
+ name = "gjournal";
+ if (strcmp(Jvalue, "enable") == 0) {
+ if (sblock.fs_flags & FS_GJOURNAL) {
+ warnx("%s remains unchanged as enabled", name);
+ } else {
+ sblock.fs_flags |= FS_GJOURNAL;
+ warnx("%s set", name);
+ }
+ } else if (strcmp(Jvalue, "disable") == 0) {
+ if ((~sblock.fs_flags & FS_GJOURNAL) ==
+ FS_GJOURNAL) {
+ warnx("%s remains unchanged as disabled",
+ name);
+ } else {
+ sblock.fs_flags &= ~FS_GJOURNAL;
+ warnx("%s cleared", name);
+ }
+ }
+ }
if (lflag) {
name = "multilabel";
if (strcmp(lvalue, "enable") == 0) {
@@ -389,8 +422,8 @@ usage(void)
{
fprintf(stderr, "%s\n%s\n%s\n%s\n",
"usage: tunefs [-A] [-a enable | disable] [-e maxbpg] [-f avgfilesize]",
-" [-L volname] [-l enable | disable] [-m minfree]",
-" [-n enable | disable] [-o space | time] [-p]",
+" [-J enable | disable ] [-L volname] [-l enable | disable]",
+" [-m minfree] [-n enable | disable] [-o space | time] [-p]",
" [-s avgfpdir] special | filesystem");
exit(2);
}
@@ -404,6 +437,8 @@ printfs(void)
(sblock.fs_flags & FS_MULTILABEL)? "enabled" : "disabled");
warnx("soft updates: (-n) %s",
(sblock.fs_flags & FS_DOSOFTDEP)? "enabled" : "disabled");
+ warnx("gjournal: (-J) %s",
+ (sblock.fs_flags & FS_GJOURNAL)? "enabled" : "disabled");
warnx("maximum blocks per file in a cylinder group: (-e) %d",
sblock.fs_maxbpg);
warnx("average file size: (-f) %d",
OpenPOWER on IntegriCloud