bin/57641: [patch] missing option in mdmfs (mount_mfs)
Ruben de Groot
rdg at bzerk.org
Mon Oct 6 01:50:25 PDT 2003
>Number: 57641
>Category: bin
>Synopsis: [patch] missing option in mdmfs (mount_mfs)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Mon Oct 06 01:50:22 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Ruben de Groot
>Release: FreeBSD 5.1-CURRENT i386
>Organization:
>Environment:
System: FreeBSD ei.bzerk.org 5.1-CURRENT FreeBSD 5.1-CURRENT #1: Thu Oct 2 09:35:43 CEST 2003 root at ei.bzerk.org:/usr/build/usr/obj/usr/build/current/usr/src/sys/SMP-EI i386
>Description:
Currently, mdmfs will allways do a newfs before mounting a mfs.
When using filesystem image files (MD_VNODE), an option to skip
the newfs part, preserving the existing filesystem would be
desirable.
>How-To-Repeat:
root at caliban:/root> tail -1 /etc/fstab
/dev/md1 /jails/jail1 mfs rw,-F/jails/vnodes/jail1fs,async 0 0
root at caliban:/root> mount /jails/jail1
root at caliban:/root> touch /jails/jail1/IMPORTANT_DATA
root at caliban:/root> umount /jails/jail1
root at caliban:/root> mount /jails/jail1
root at caliban:/root> ls /jails/jail1
root at caliban:/root>
>Fix:
Add a -P option to mdmfs (and mount_mfs) that will skip the
do_newfs() part. Adding P to the fstab line above like this:
/dev/md1 /jails/jail1 mfs rw,-PF/jails/vnodes/jail1fs,async 0 0
will preserve data between mounts. The following patch adds the
-P option (patch for HEAD) :
diff -u sbin/mdmfs.orig/mdmfs.8 sbin/mdmfs/mdmfs.8
--- sbin/mdmfs.orig/mdmfs.8 Wed Aug 6 04:41:52 2003
+++ sbin/mdmfs/mdmfs.8 Mon Oct 6 08:48:27 2003
@@ -36,7 +36,7 @@
driver
.Sh SYNOPSIS
.Nm
-.Op Fl DLMNSUX
+.Op Fl DLMNPSUX
.Op Fl a Ar maxcontig
.Op Fl b Ar block-size
.Op Fl c Ar cylinders
@@ -57,7 +57,7 @@
.Ar mount-point
.Nm
.Fl C
-.Op Fl NU
+.Op Fl NPU
.Op Fl a Ar maxcontig
.Op Fl b Ar block-size
.Op Fl c Ar cylinders
@@ -195,6 +195,11 @@
See
.Xr mount 8
for more information.
+.It Fl P
+Preserve existing filesystem. Do not run newfs. This only makes sense if
+.Fl F
+is specified
+.Pq Dv MD_VNODE .
.It Fl p Ar permissions
Set the file (directory) permissions of the mount point
.Ar mount-point
diff -u sbin/mdmfs.orig/mdmfs.c sbin/mdmfs/mdmfs.c
--- sbin/mdmfs.orig/mdmfs.c Fri Oct 3 13:50:18 2003
+++ sbin/mdmfs/mdmfs.c Sat Oct 4 13:41:14 2003
@@ -89,7 +89,7 @@
*mount_arg;
enum md_types mdtype; /* The type of our memory disk. */
bool have_mdtype;
- bool detach, softdep, autounit;
+ bool detach, softdep, autounit, no_newfs;
char *mtpoint, *unitstr;
char ch, *p;
void *set;
@@ -99,6 +99,7 @@
detach = true;
softdep = true;
autounit = false;
+ no_newfs = false;
have_mdtype = false;
mdname = MD_NAME;
mdnamelen = strlen(mdname);
@@ -118,7 +119,7 @@
compat = true;
while ((ch = getopt(argc, argv,
- "a:b:Cc:Dd:e:F:f:hi:LMm:Nn:O:o:p:Ss:t:Uv:w:X")) != -1)
+ "a:b:Cc:Dd:e:F:f:hi:LMm:Nn:O:o:Pp:Ss:t:Uv:w:X")) != -1)
switch (ch) {
case 'a':
argappend(&newfs_arg, "-a %s", optarg);
@@ -189,6 +190,9 @@
case 'o':
argappend(&mount_arg, "-o %s", optarg);
break;
+ case 'P':
+ no_newfs = true;
+ break;
case 'p':
if (compat)
usage();
@@ -264,7 +268,8 @@
do_mdconfig_attach_au(mdconfig_arg, mdtype);
else
do_mdconfig_attach(mdconfig_arg, mdtype);
- do_newfs(newfs_arg);
+ if (!no_newfs || (mdtype != MD_VNODE))
+ do_newfs(newfs_arg);
do_mount(mount_arg, mtpoint);
do_mtptsetup(mtpoint, &mi);
@@ -661,13 +666,13 @@
name = "mdmfs";
if (!compat)
fprintf(stderr,
-"usage: %s [-DLMNSUX] [-a maxcontig [-b block-size] [-c cylinders]\n"
+"usage: %s [-DLMNPSUX] [-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", name);
fprintf(stderr,
-"usage: %s -C [-NU] [-a maxcontig] [-b block-size] [-c cylinders]\n"
+"usage: %s -C [-NPU] [-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);
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list