Kris Kennaway <[EMAIL PROTECTED]> writes:
> 1) For some reason, my mdmfs line in /etc/fstab always does a chmod
> 777 /tmp at mount-time
>
> /dev/md0 /tmp mfs rw,-s=65536 0 0
As previously threatened, I implemented bug-to-bug compatibility with
mount_mfs(). The patch is attached below. Please try it and see if
it fixes this problem. Here's an excerpt from the manual page that
roughly describes what I did:
COMPATIBILITY
mdmfs, while designed to be fully compatible with mount_mfs(8), can be
useful by itself. Since mount_mfs(8) has some silly defaults, a ``full
compatibility'' mode is provided for the case where bug-to-bug compati-
bility is desired.
Full compatibility is enabled with the -C flag, or by starting mdmfs with
mount_ at the beginning of its name (as returned by getprogname(3)). In
this mode, only the options which would be accepted by mount_mfs(8) are
valid. Furthermore, the following behavior, as done by mount_mfs(8), is
duplicated:
o The file mode of mount-point is set to 01777 as if -p 1777 was
given on the command line.
If you have a link from /sbin/mount_mfs to /sbin/mdmfs, you don't need
to worry about all that stuff. Just apply the patch below, build it,
copy it to /sbin, and umount/mount /tmp; it should DTRT. Please let
me know how it works out.
Thanks.
Index: mdmfs.8
===================================================================
RCS file: /ref/cvsf/src/sbin/mdmfs/mdmfs.8,v
retrieving revision 1.6
diff -u -r1.6 mdmfs.8
--- mdmfs.8 2001/07/30 09:13:21 1.6
+++ mdmfs.8 2001/08/05 00:17:02
@@ -25,7 +25,7 @@
.\"
.\" $FreeBSD: src/sbin/mdmfs/mdmfs.8,v 1.6 2001/07/30 09:13:21 dd Exp $
.\"
-.Dd May 26, 2001
+.Dd August 5, 2001
.Dt MDMFS 8
.Os
.Sh NAME
@@ -35,7 +35,7 @@
driver
.Sh SYNOPSIS
.Nm
-.Op Fl DLMNSX
+.Op Fl DLMNSUX
.Op Fl a Ar maxcontig
.Op Fl b Ar block-size
.Op Fl c Ar cylinders
@@ -53,6 +53,24 @@
.Op Fl w Ar user : Ns Ar group
.Ar md-device
.Ar mount-point
+.Nm
+.Fl C
+.Op Fl NU
+.Op Fl a Ar maxcontig
+.Op Fl b Ar block-size
+.Op Fl c Ar cylinders
+.Op Fl d Ar rotdelay
+.Op Fl e Ar maxbpg
+.Op Fl F Ar file
+.Op Fl f Ar frag-size
+.Op Fl i Ar bytes
+.Op Fl m Ar percent-free
+.Op Fl n Ar rotational-positions
+.Op Fl O Ar optimization
+.Op Fl o Ar mount-options
+.Op Fl s Ar size
+.Ar md-device
+.Ar mount-point
.Sh DESCRIPTION
The
.Nm
@@ -110,6 +128,13 @@
option).
.It Fl b Ar block-size
The block size of the filesystem, in bytes.
+.It Fl C
+Enable full compatibility mode with
+.Xr mount_mfs 8 .
+See the
+.\" XXX link to another section?
+.Em COMPATIBILITY
+section for more information.
.It Fl c Ar cylinders
The number of cylinders per cylinder group in the filesystem.
.It Fl D
@@ -192,6 +217,13 @@
.Xr malloc 9
backed disks
.Pq Dv MD_MALLOC .
+.It Fl U
+Enable soft-updates on the filesystem.
+This is the default, even in compatibility mode, and is accepted only
+for compatibility.
+It is only really useful to negate the
+.Fl S
+flag, should such a need occur.
.It Fl w Ar user : Ns Ar group
Set the owner and group to
.Ar user
@@ -257,8 +289,46 @@
.Cm async :
.Pp
.Dl "mdmfs -M -S -o async -s 16m md1 /tmp"
+.Sh COMPATIBILITY
+.Nm ,
+while designed to be fully compatible with
+.Xr mount_mfs 8 ,
+can be useful by itself.
+Since
+.Xr mount_mfs 8
+has some silly defaults, a
+.Dq full compatibility
+mode is provided for the case where bug-to-bug compatibility is desired.
+.Pp
+Full compatibility is enabled with the
+.Fl C
+flag,
+or by starting
+.Nm
+with
+.Li mount_
+at the beginning of its name
+(as returned by
+.Xr getprogname 3 ) .
+In this mode, only the options which would be accepted by
+.Xr mount_mfs 8
+are valid.
+Furthermore, the following behavior, as done by
+.Xr mount_mfs 8 ,
+is duplicated:
+.Bl -bullet -offset indent -compat
+.It
+The file mode of
+.Ar mount-point
+is set to
+.Li 01777
+as if
+.Fl p Ar 1777
+was given on the command line.
+.El
.Sh SEE ALSO
.Xr md 4 ,
+.Xr fstab 5 ,
.Xr disklabel 8 ,
.Xr mdconfig 8 ,
.Xr mount 8 ,
Index: mdmfs.c
===================================================================
RCS file: /ref/cvsf/src/sbin/mdmfs/mdmfs.c,v
retrieving revision 1.5
diff -u -r1.5 mdmfs.c
--- mdmfs.c 2001/07/30 09:11:17 1.5
+++ mdmfs.c 2001/08/05 00:18:38
@@ -65,6 +65,7 @@
bool mi_have_mode;
};
+static bool compat; /* Full compatibility with mount_mfs? */
static bool debug; /* Emit debugging information? */
static bool loudsubs; /* Suppress output from helper programs? */
static bool norun; /* Actually run the helper programs? */
@@ -115,8 +116,12 @@
newfs_arg = strdup("");
mount_arg = strdup("");
+ /* If we were started as mount_*, imply -C. */
+ if (strncmp(getprogname(), "mount_", 6) == 0)
+ compat = true;
+
while ((ch = getopt(ac, av,
- "a:b:c:Dd:e:F:f:hi:LMm:Nn:O:o:p:Ss:t:w:X")) != -1)
+ "a:b:Cc:Dd:e:F:f:hi:LMm:Nn:O:o:p:Ss:t:Uw:X")) != -1)
switch (ch) {
case 'a':
argappend(&newfs_arg, "-a %s", optarg);
@@ -124,10 +129,17 @@
case 'b':
argappend(&newfs_arg, "-b %s", optarg);
break;
+ case 'C':
+ if (compat)
+ usage();
+ compat = true;
+ break;
case 'c':
argappend(&newfs_arg, "-c %s", optarg);
break;
case 'D':
+ if (compat)
+ usage();
detach = false;
break;
case 'd':
@@ -153,6 +165,8 @@
argappend(&newfs_arg, "-i %s", optarg);
break;
case 'L':
+ if (compat)
+ usage();
loudsubs = true;
break;
case 'M':
@@ -165,6 +179,8 @@
argappend(&newfs_arg, "-m %s", optarg);
break;
case 'N':
+ if (compat)
+ usage();
norun = true;
break;
case 'n':
@@ -177,6 +193,8 @@
argappend(&mount_arg, "-o %s", optarg);
break;
case 'p':
+ if (compat)
+ usage();
if (*optarg >= '0' && *optarg <= '7')
mi.mi_mode = strtol(optarg, NULL, 8);
if ((mi.mi_mode & ~07777) != 0)
@@ -184,15 +202,24 @@
mi.mi_have_mode = true;
break;
case 'S':
+ if (compat)
+ usage();
softdep = false;
break;
case 's':
argappend(&mdconfig_arg, "-s %s", optarg);
break;
+ case 'U':
+ softdep = true;
+ break;
case 'w':
+ if (compat)
+ usage();
extract_ugid(optarg, &mi);
break;
case 'X':
+ if (compat)
+ usage();
debug = true;
break;
default:
@@ -203,6 +230,12 @@
if (ac < 2)
usage();
+ /* Make compatibility assumptions. */
+ if (compat) {
+ mi.mi_mode = 01777;
+ mi.mi_have_mode = true;
+ }
+
/* Derive 'unit' (global). */
unitstr = av[0];
if (strncmp(unitstr, "/dev/", 5) == 0)
@@ -634,12 +667,23 @@
static void
usage(void)
{
+ const char *name;
- fprintf(stderr,
-"usage: %s [-DLMNSX] [-a maxcontig] [-b block-size] [-c cylinders]\n"
+ if (compat)
+ name = getprogname();
+ else
+ name = "mdmfs";
+ if (!compat)
+ fprintf(stderr,
+"Usage: %s [-DLMNSUX] [-a maxcontig [-b block-size] [-c cylinders]\n"
"\t[-d rotdelay] [-e maxbpg] [-F file] [-f frag-size] [-i bytes]\n"
"\t[-m percent-free] [-n rotational-positions] [-O optimization]\n"
"\t[-o mount-options] [-p permissions] [-s size] [-w user:group]\n"
-"\tmd-device mount-point\n", getprogname());
+"\tmd-device mount-point\n", name);
+ fprintf(stderr,
+"Usage: %s -C [-NU] [-a maxcontig] [-b block-size] [-c cylinders]\n"
+"\t[-d rotdelay] [-e maxbpg] [-F file] [-f frag-size] [-i bytes]\n"
+"\t[-m percent-free] [-n rotational-positions] [-O optimization]\n"
+"\t[-o mount-options] [-s size] md-device mount-point\n", name);
exit(1);
}
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message