enhacement to mdmfs
Ruben de Groot
mail25 at bzerk.org
Tue Nov 30 04:06:46 PST 2004
On Tue, Nov 30, 2004 at 12:21:35PM +0100, Michal Mertl typed:
> Hello,
>
> I've recently shot my foot with mdmfs. Of course it was a pilot error but
> the funcioanility I was looking for might be usefull.
>
> I want to mount vnode-backed md(4) on boot without formatting it (e.g. for
> a jail). Is it possible with current boot scripts?
>
> I wrote a simple patch to mdmfs so such md disk can be put in /etc/fstab.
> It adds '-K' option do mdmfs(8) to Keep contents. The line to attach such
> disk in fstab looks like this:
>
> md /jail mfs rw,-K,-F=/var/jailfile 0 0
>
> Comments welcome. If people find it usefull I'd like to have it commited. I
> can fill the PR with enhancement request.
I filed a PR about this allready in October 2003:
http://www.freebsd.org/cgi/query-pr.cgi?pr=57641
Ruben
> Patch attached.
>
> --
> Michal Mertl
>
>
>
> Index: mdmfs.8
> ===================================================================
> RCS file: /home/fcvs/cvs/src/sbin/mdmfs/mdmfs.8,v
> retrieving revision 1.20
> diff -u -3 -r1.20 mdmfs.8
> --- mdmfs.8 17 May 2004 08:35:41 -0000 1.20
> +++ mdmfs.8 30 Nov 2004 10:56:22 -0000
> @@ -36,7 +36,7 @@
> driver
> .Sh SYNOPSIS
> .Nm
> -.Op Fl DLlMNSUX
> +.Op Fl DKLlMNSUX
> .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 lNU
> +.Op Fl KlNU
> .Op Fl a Ar maxcontig
> .Op Fl b Ar block-size
> .Op Fl c Ar cylinders
> @@ -162,6 +162,12 @@
> The fragment size of the file system in bytes.
> .It Fl i Ar bytes
> Number of bytes per inode.
> +.It Fl K
> +Preserve contents of vnode-backed
> +.Pq Dv MD_VNODE
> +memory disk.
> +Must be used in conjunction with
> +.Fl F .
> .It Fl l
> Enable multilabel MAC on the new file system.
> .It Fl L
> Index: mdmfs.c
> ===================================================================
> RCS file: /home/fcvs/cvs/src/sbin/mdmfs/mdmfs.c,v
> retrieving revision 1.20
> diff -u -3 -r1.20 mdmfs.c
> --- mdmfs.c 17 May 2004 07:07:20 -0000 1.20
> +++ mdmfs.c 30 Nov 2004 10:51:56 -0000
> @@ -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, keepdata;
> char *mtpoint, *unitstr;
> char *p;
> int ch;
> @@ -119,7 +119,7 @@
> 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)
> + "a:b:Cc:Dd:e:F:f:hi:KLlMm:Nn:O:o:p:Ss:t:Uv:w:X")) != -1)
> switch (ch) {
> case 'a':
> argappend(&newfs_arg, "-a %s", optarg);
> @@ -167,6 +167,8 @@
> usage();
> loudsubs = true;
> break;
> + case 'K':
> + keepdata = true;
> case 'l':
> argappend(&newfs_arg, "-l");
> break;
> @@ -233,7 +235,6 @@
> argv += optind;
> if (argc < 2)
> usage();
> -
> /* Make compatibility assumptions. */
> if (compat) {
> mi.mi_mode = 01777;
> @@ -258,6 +259,11 @@
> mtpoint = argv[1];
> if (!have_mdtype)
> mdtype = MD_SWAP;
> +
> + /* If we want to use vnode backed file and don't newfs it */
> + if (keepdata && mdtype != MD_VNODE)
> + err(1, "Must specify -F with -K");
> +
> if (softdep)
> argappend(&newfs_arg, "-U");
>
> @@ -268,7 +274,8 @@
> do_mdconfig_attach_au(mdconfig_arg, mdtype);
> else
> do_mdconfig_attach(mdconfig_arg, mdtype);
> - do_newfs(newfs_arg);
> + if (!keepdata)
> + do_newfs(newfs_arg);
> do_mount(mount_arg, mtpoint);
> do_mtptsetup(mtpoint, &mi);
>
> @@ -665,13 +672,13 @@
> name = "mdmfs";
> if (!compat)
> fprintf(stderr,
> -"usage: %s [-DLlMNSUX] [-a maxcontig [-b block-size] [-c cylinders]\n"
> +"usage: %s [-DKLlMNSUX] [-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 [-lKNU] [-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);
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
More information about the freebsd-current
mailing list