Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Mar 2005 22:33:37 -0500
From:      Bob Johnson <bob89@bobj.org>
To:        freebsd-questions@freebsd.org
Cc:        "Michael R. Wayne" <wayne@staff.msen.com>
Subject:   Re: Are quotas possbile on md filesystems?
Message-ID:  <200503042233.38378.bob89@bobj.org>
In-Reply-To: <4228E798.7040701@eng.ufl.edu>
References:  <200503032153.j23LrJTA026477@manor.msen.com> <20050304174809.GD70473@manor.msen.com> <4228E798.7040701@eng.ufl.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 04 March 2005 05:56 pm, Bob Johnson wrote:
> Michael R. Wayne wrote:
> >On Thu, 03 Mar 2005 16:53:19 -0500, Michael R. Wayne <wayne@staff.msen.com> 
wrote:
> >>Is it possible to use quotas on file-backed md filesystems
> >>on 5.3?  I was guessing that a line in fstab like:
> >
> >OK, I see the error in my ways.  My goal is to use file-based
> >filesystems that are preserved acoss boots.  vnconfig says to
> >use mdconfig, the handbook suggests that the method I used is
> >correct.  But everything is cleared on reboot, which is not
> >what I was looking for.
>
> It appears that it always formats a new filesystem because that's what
> mount_mfs did, and mdmfs is a replacement for mount_mfs.  I agree
> with you that that should not be the default behavior for a file-backed
> (vnode) disk, so I wrote a little patch to fix that:
>
[patch omitted]

>
> >So, what IS the correct way to create and use file-based file
> >systems?
>

The patch I provided defaulted to NOT formatting the 
filesystem when used with the -F option.  This is the 
opposite of the normal behavior, creating the risk of 
a /etc/fstab that assumes that the filesystem will not 
be formatted being used with a new release that will format 
it by default, thus destroying the filesystem.  That 
would be very very bad.

So here is a new patch that modifies mdmfs / mount_mfs 
to behave as it does now, except that it will not format 
the filesystem before mounting if you supply the -A 
(mount "as-is") option.  Thus, to use /etc/fstab to mount 
a file-backed filesystem without reformatting the filesystem, 
put something like this in /etc/fstab

/dev/md3  /mnt  mfs  rw,-A,-F /home/bob/mdfile,noauto  0  0

So, here is a patch to add this to the original mdmfs, 
as well as a patch to the man page.

=========
--- mdmfs.c     2005/03/05 01:45:00     1.1
+++ mdmfs.c     2005/03/05 03:09:17
@@ -32,6 +32,7 @@

 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/sbin/mdmfs/mdmfs.c,v 1.20 2004/05/17 07:07:20 ru Exp 
$"
);
+/*$Id: mdmfs.c,v 1.5 2005/03/05 03:09:10 bobj Exp bobj $*/

 #include <sys/param.h>
 #include <sys/mdioctl.h>
@@ -89,7 +90,7 @@
            *mount_arg;
        enum md_types mdtype;           /* The type of our memory disk. */
        bool have_mdtype;
-       bool detach, softdep, autounit;
+       bool detach, softdep, autounit, want_newfs;
        char *mtpoint, *unitstr;
        char *p;
        int ch;
@@ -100,6 +101,7 @@
        detach = true;
        softdep = true;
        autounit = false;
+       want_newfs=true;
        have_mdtype = false;
        mdname = MD_NAME;
        mdnamelen = strlen(mdname);
@@ -119,8 +121,11 @@
                compat = true;

        while ((ch = getopt(argc, argv,
-           "a:b:Cc:Dd:e:F:f:hi:LlMm:Nn:O:o:p:Ss:t:Uv:w:X")) != -1)
+           "Aa:b:Cc:Dd:e:F:f:hi:LlMm:Nn:O:o:p:Ss:Uv:w:X")) != -1)
                switch (ch) {
+               case 'A':
+                       want_newfs=false;
+                       break;
                case 'a':
                        argappend(&newfs_arg, "-a %s", optarg);
                        break;
@@ -268,7 +273,8 @@
                do_mdconfig_attach_au(mdconfig_arg, mdtype);
        else
                do_mdconfig_attach(mdconfig_arg, mdtype);
-       do_newfs(newfs_arg);
+       if (want_newfs)
+               do_newfs(newfs_arg);
        do_mount(mount_arg, mtpoint);
        do_mtptsetup(mtpoint, &mi);

@@ -665,13 +671,13 @@
                name = "mdmfs";
        if (!compat)
                fprintf(stderr,
-"usage: %s [-DLlMNSUX] [-a maxcontig [-b block-size] [-c cylinders]\n"
+"usage: %s [-ADLlMNSUX] [-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 [-lNU] [-a maxcontig] [-b block-size] [-c cylinders]\n"
+"usage: %s -C [-AlNU] [-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);
=================
--- mdmfs.8     2005/03/05 01:46:09     1.1
+++ mdmfs.8     2005/03/05 03:08:38
@@ -24,6 +24,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/sbin/mdmfs/mdmfs.8,v 1.20 2004/05/17 08:35:41 ru Exp $
+.\" $Id: mdmfs.8,v 1.3 2005/03/05 03:08:21 bobj Exp bobj $
 .\"
 .Dd February 26, 2004
 .Dt MDMFS 8
@@ -36,7 +37,7 @@
 driver
 .Sh SYNOPSIS
 .Nm
-.Op Fl DLlMNSUX
+.Op Fl ADLlMNSUX
 .Op Fl a Ar maxcontig
 .Op Fl b Ar block-size
 .Op Fl c Ar cylinders
@@ -57,7 +58,7 @@
 .Ar mount-point
 .Nm
 .Fl C
-.Op Fl lNU
+.Op Fl AlNUu
 .Op Fl a Ar maxcontig
 .Op Fl b Ar block-size
 .Op Fl c Ar cylinders
@@ -122,6 +123,12 @@
 .Xr mount_mfs 8
 for the same thing.
 .Bl -tag -width indent
+.It Fl A
+Mount filesystem as-is. Do not use newfs to format the
+filesystem before mounting.  This option only makes sense
+when used with the
+.Fl F
+option.
 .It Fl a Ar maxcontig
 Specify the maximum number of contiguous blocks that will be laid
 out before forcing a rotational delay
@@ -342,7 +349,11 @@
 .Xr getprogname 3 ) .
 In this mode, only the options which would be accepted by
 .Xr mount_mfs 8
-are valid.
+are valid (with the addition of
+.Fl A
+which will be needed in
+.Pa /etc/fstab
+for some uses).
 Furthermore, the following behavior, as done by
 .Xr mount_mfs 8 ,
 is duplicated:
============

Hope that's useful.

- Bob



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200503042233.38378.bob89>