[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
mtab: libdiskfs / ext2fs support changes
From: |
David Walter |
Subject: |
mtab: libdiskfs / ext2fs support changes |
Date: |
Mon, 09 Sep 2002 22:45:31 -0400 |
libdiskfs patch:
The previously posted mtab should accept the arguments from the
following patch to add support for the option --mntpath=MNTPATH
The following is a sample sequence:
/mnt$ export DEVICE=17; settrans -fgcap /mnt/$DEVICE /hurd/ext2fs \
/dev/hd0s$DEVICE --mntpath=/mnt/$DEVICE
/mnt$ showtrans -a -d /mnt/17
/hurd/ext2fs /dev/hd0s17 --mntpath=/mnt/17 --writable
*/hurd/ext2fs --writable --mntpath=/mnt/17 /dev/hd0s17
/mnt$ fsysopts /mnt/17
/hurd/ext2fs --writable --mntpath=/mnt/17 /dev/hd0s17
/mnt$ cat /var/run/mtab
hd0s15 / --writable,--store-type=typed,device:hd0s15 0 0
hd0s11 /home --writable,--mntpath=/home,/dev/hd0s11 0 0
hd0s13 /opt --writable,--mntpath=/opt,/dev/hd0s13 0 0
hd0s12 /mnt/12 --readonly,--mntpath=/mnt/12,/dev/hd0s12 0 0
hd0s5 /mnt/5 --readonly,--mntpath=/mnt/5,/dev/hd0s5 0 0
hd0s16 /mnt/16 --writable,--mntpath=/mnt/16,/dev/hd0s16 0 0
hd0s17 /mnt/17 --writable,--mntpath=/mnt/17,/dev/hd0s17 0 0
For clarity the patch for libdiskfs and ext2fs are in separate
messages.
cvs server: Diffing .
Index: ChangeLog
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/ChangeLog,v
retrieving revision 1.182
diff --unified -w -i -r1.182 ChangeLog
--- ChangeLog 27 Jun 2002 19:19:13 -0000 1.182
+++ ChangeLog 10 Sep 2002 02:25:01 -0000
@@ -1,3 +1,25 @@
+2002-09-09 David Walter <dwalter@syr.edu>
+
+ * opts-append-std.c (diskfs_append_std_options): display mntpath
+ option.
+
+ * notify-mtab.c (diskfs_notify_mtab): function diskfs_notify_mtab
+ takes a mount point and writes it to _PATH_MOUNTED, if arg is null
+ use previous value because at startup the entry can't be written
+ to mtab until the filesystem is active, so it defers write until
+ filesystem startup
+
+ * priv.h: added global symbol diskfs_mount_point: the path this is
+ mounted on.
+
+ * opts-std-startup.c (parse_startup_opt): added include <paths.h>
+ for _PATH_MOUNTED added call to diskfs_notify_mtab
+
+ * opts-std-runtime.c (parse_opt): added include <paths.h> for
+ _PATH_MOUNTED and call to new routine diskfs_notify_mtab
+
+ * Makefile (OTHERSRCS): added notify-mtab.c
+
2002-06-26 Marcus Brinkmann <marcus@gnu.org>
* Makefile (DIST_FILES): Variable removed.
Index: Makefile
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/Makefile,v
retrieving revision 1.71
diff --unified -w -i -r1.71 Makefile
--- Makefile 27 Jun 2002 19:19:13 -0000 1.71
+++ Makefile 10 Sep 2002 02:25:01 -0000
@@ -51,7 +51,9 @@
remount.c console.c disk-pager.c \
name-cache.c direnter.c dirrewrite.c dirremove.c lookup.c dead-name.c \
validate-mode.c validate-group.c validate-author.c validate-flags.c \
- validate-rdev.c validate-owner.c extra-version.c
+ validate-rdev.c validate-owner.c extra-version.c \
+ notify-mtab.c
+
SRCS = $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(IFSOCKSRCS)
LCLHDRS = diskfs.h priv.h lithp.h fsmutations.h diskfs-pager.h fhandle.h
installhdrs = diskfs.h diskfs-pager.h
Index: diskfs.h
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/diskfs.h,v
retrieving revision 1.98
diff --unified -w -i -r1.98 diskfs.h
--- diskfs.h 27 Jun 2002 19:19:13 -0000 1.98
+++ diskfs.h 10 Sep 2002 02:25:03 -0000
@@ -973,4 +973,17 @@
/* Make errors go somewhere reasonable. */
void diskfs_console_stdio ();
+/*
+ diskfs_notify_mtab: write the path of a translator to the mount
+ table
+
+ This is not a boot option. Notice that every running system is
+ assumed by /hurd/mtab to have a root which is automagically inserted
+ in mtab at startup.
+
+ A NULL arg uses the current value of diskfs_mount_point otherwise
+ diskfs_mount_point is set to path and written to _PATH_MOUNTED */
+
+void diskfs_notify_mtab (char* path);
+
#endif /* hurd/diskfs.h */
Index: opts-append-std.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/opts-append-std.c,v
retrieving revision 1.10
diff --unified -w -i -r1.10 opts-append-std.c
--- opts-append-std.c 8 May 2002 09:56:54 -0000 1.10
+++ opts-append-std.c 10 Sep 2002 02:25:03 -0000
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <argz.h>
+#include <paths.h>
#include "priv.h"
@@ -61,6 +62,15 @@
}
}
}
+ if (!err)
+ {
+ if (diskfs_mount_point)
+ {
+ char*buf=0;
+ asprintf(&buf, "--mntpath=%s", diskfs_mount_point);
+ err = argz_add (argz, argz_len, buf);
+ }
+ }
return err;
}
Index: opts-common.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/opts-common.c,v
retrieving revision 1.6
diff --unified -w -i -r1.6 opts-common.c
--- opts-common.c 1 May 2002 03:00:44 -0000 1.6
+++ opts-common.c 10 Sep 2002 02:25:03 -0000
@@ -22,7 +22,7 @@
#include <argp.h>
#include "priv.h"
-
+#include <paths.h>
const struct argp_option diskfs_common_options[] =
{
{"readonly", 'r', 0, 0, "Never write to disk or allow opens for writing"},
Index: opts-std-runtime.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/opts-std-runtime.c,v
retrieving revision 1.11
diff --unified -w -i -r1.11 opts-std-runtime.c
--- opts-std-runtime.c 1 May 2002 03:00:44 -0000 1.11
+++ opts-std-runtime.c 10 Sep 2002 02:25:03 -0000
@@ -19,6 +19,7 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <argp.h>
+#include <paths.h>
#include "priv.h"
@@ -106,6 +107,7 @@
case OPT_ATIME: h->noatime = 0; break;
case OPT_NO_INHERIT_DIR_GROUP: h->noinheritdirgroup = 1; break;
case OPT_INHERIT_DIR_GROUP: h->noinheritdirgroup = 0; break;
+ case 'm': diskfs_notify_mtab (arg); break;
case 'n': h->sync_interval = 0; h->sync = 0; break;
case 's':
if (arg)
Index: opts-std-startup.c
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/opts-std-startup.c,v
retrieving revision 1.20
diff --unified -w -i -r1.20 opts-std-startup.c
--- opts-std-startup.c 1 May 2002 03:00:44 -0000 1.20
+++ opts-std-startup.c 10 Sep 2002 02:25:04 -0000
@@ -23,6 +23,7 @@
#include <argp.h>
#include <hurd/store.h>
#include <hurd/paths.h>
+#include <paths.h>
#include "priv.h"
const char *diskfs_boot_command_line;
@@ -34,6 +35,8 @@
mach_port_t diskfs_exec_server_task = MACH_PORT_NULL;
+char *diskfs_mount_point=0;
+
/* ---------------------------------------------------------------- */
#define OPT_HOST_PRIV_PORT (-1)
@@ -66,7 +69,7 @@
{"host-priv-port", OPT_HOST_PRIV_PORT, "PORT"},
{"device-master-port", OPT_DEVICE_MASTER_PORT, "PORT"},
{"exec-server-task", OPT_EXEC_SERVER_TASK, "PORT"},
-
+ {"mntpath", 'm', "PATH_MOUNTED", 0, "write PATH_MOUNTED to " _PATH_MOUNTED },
{0}
};
@@ -96,6 +99,7 @@
diskfs_synchronous = 0;
diskfs_default_sync_interval = 0;
break;
+ case 'm': diskfs_notify_mtab(arg); break;
/* Boot options */
case OPT_DEVICE_MASTER_PORT:
Index: priv.h
===================================================================
RCS file: /cvsroot/hurd/hurd/libdiskfs/priv.h,v
retrieving revision 1.45
diff --unified -w -i -r1.45 priv.h
--- priv.h 1 May 2002 03:00:44 -0000 1.45
+++ priv.h 10 Sep 2002 02:25:04 -0000
@@ -132,5 +132,5 @@
/* Bits that are turned off after open */
#define OPENONLY_STATE_MODES \
(O_CREAT|O_EXCL|O_NOLINK|O_NOTRANS|O_NONBLOCK|O_EXLOCK|O_SHLOCK)
-
+extern char * diskfs_mount_point;
#endif
Index: notify-mtab.c
===================================================================
--- notify-mtab.c.orig Mon Sep 9 22:00:25 2002
+++ notify-mtab.c Mon Sep 9 12:31:16 2002
@@ -0,0 +1,41 @@
+/* notify-mtab: write the path of this translator to _PATH_MOUNTED
+
+ Copyright (C) 2002 Free Software Foundation
+
+ Written by David Walter <dwalter@syr.edu>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#define _GNU_SOURCE 1
+
+#include <stdio.h>
+#include <paths.h>
+#include "priv.h"
+void diskfs_notify_mtab(char*path)
+{
+ if (path)
+ {
+ if (diskfs_mount_point)
+ free (diskfs_mount_point);
+ diskfs_mount_point = strdup(path);
+ }
+ FILE* mtab = fopen(_PATH_MOUNTED, "a+");
+ if(mtab)
+ {
+ fprintf(mtab, "%s\n", diskfs_mount_point);
+ fclose(mtab);
+ }
+}
+
--
/^\
\ / ASCII RIBBON CAMPAIGN
X AGAINST HTML MAIL
/ \
- mtab: libdiskfs / ext2fs support changes,
David Walter <=