[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mtab: libdiskfs / ext2fs support changes
From: |
David Walter |
Subject: |
Re: mtab: libdiskfs / ext2fs support changes |
Date: |
Fri, 13 Sep 2002 11:50:24 -0400 |
User-agent: |
Gnus/5.090007 (Oort Gnus v0.07) XEmacs/21.4 (Honest Recruiter, hurd-i386-debian) |
nisse@lysator.liu.se (Niels Möller) writes:
> Hmm, looking at your patch, it seems you already have a declaration of
> the diskfs_notify_mtab function in diskfs.h, so you can just delete
> the above declaration from extfs.c. As for diskfs_mount_point, if
> libdiskfs users like ext2 are supposed to use that variable, the
> declaration should move from libdiskfs/priv.h to libdiskfs/diskfs.h.
Here are diffs to the current source tree following the suggestions of
Niels.
Thanks Niels.
Index: ChangeLog
===================================================================
RCS file: /cvsroot/hurd/hurd/ext2fs/ChangeLog,v
retrieving revision 1.86
diff --unified -w -i -r1.86 ChangeLog
--- ChangeLog 1 Aug 2002 00:59:41 -0000 1.86
+++ ChangeLog 13 Sep 2002 15:46:31 -0000
@@ -1,3 +1,8 @@
+2002-09-09 David Walter <dwalter@syr.edu>
+
+ * ext2fs.c (main): external symbol diskfs_mount_point added, test
+ for a non-bootstrapping filesystem and call to diskfs_notify_mtab added
+
2002-07-31 Roland McGrath <roland@frob.com>
* dir.c (diskfs_direnter_hard): Fix test in last change.
Index: ext2fs.c
===================================================================
RCS file: /cvsroot/hurd/hurd/ext2fs/ext2fs.c,v
retrieving revision 1.55
diff --unified -w -i -r1.55 ext2fs.c
--- ext2fs.c 2 Jun 2002 21:40:56 -0000 1.55
+++ ext2fs.c 13 Sep 2002 15:48:55 -0000
@@ -200,6 +200,16 @@
outside world. */
diskfs_startup_diskfs (bootstrap, 0);
+ /*
+ notify mtab when this is not a root/bootstrapping filesystem.
+
+ diskfs_init_main sets the bootstrap port to 0 if this is a
+ bootstrap filesystem, we have a catch 22 with the bootstrap
+ avoided by mtab automagically self inserting '/'. Until the root
+ filesystem is active there is no _PATH_MOUNTED to write */
+ if (bootstrap)
+ diskfs_notify_mtab(0);
+
/* and so we die, leaving others to do the real work. */
cthread_exit (0);
/* NOTREACHED */
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 13 Sep 2002 15:12:19 -0000
@@ -1,3 +1,35 @@
+2002-09-13 David Walter <dwalter@syr.edu>
+
+ * opts-std-startup.c (startup_options): add --mntpath=PATH_MOUNTED
+ option
+
+2002-09-11 David Walter <dwalter@syr.edu>
+
+ * diskfs.h: added global symbols for diskfs_notify_mtab and
+ diskfs_mount_point
+
+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): new function 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
+
+ * notify-mtab.c added global symbol diskfs_mount_point: the
+ path this is mounted on
+
+ * opts-std-startup.c (parse_startup_opt): added call to new
+ function diskfs_notify_mtab
+
+ * opts-std-runtime.c (parse_opt): added call to new function
+ diskfs_notify_mtab
+
+ * Makefile (OTHERSRCS): added notify-mtab.c
+
2002-06-26 Marcus Brinkmann <marcus@gnu.org>
* Makefile (DIST_FILES): Variable removed.
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 13 Sep 2002 15:09:41 -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;
@@ -66,7 +67,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 +97,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: 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 13 Sep 2002 15:09:28 -0000
@@ -106,6 +106,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-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 13 Sep 2002 15:07:58 -0000
@@ -61,7 +61,16 @@
}
}
}
+ 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: notify-mtab.c
===================================================================
--- notify-mtab.c.orig Mon Sep 9 22:00:25 2002
+++ notify-mtab.c Tue Sep 10 14:08:06 2002
@@ -0,0 +1,42 @@
+/* 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"
+char *diskfs_mount_point=0;
+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);
+ }
+}
+
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 13 Sep 2002 15:05:58 -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 13 Sep 2002 15:01:29 -0000
@@ -973,4 +973,19 @@
/* 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);
+/* The global mount point for this translator */
+extern char*diskfs_mount_point;
+
#endif /* hurd/diskfs.h */
--
/^\
\ / ASCII RIBBON CAMPAIGN
X AGAINST HTML MAIL
/ \