Your message dated Wed, 18 Jul 2007 19:37:05 +0200
with message-id <[EMAIL PROTECTED]>
and subject line Obsolete fs
has caused the attached Bug report to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere. Please contact me immediately.)
Debian bug tracking system administrator
(administrator, Debian Bugs database)
--- Begin Message ---
Package: mount
Severity: wishlist
The attached patch allows umount to properly unmount active InterMezzo
filesystems. Please also forward upstream.
Thanks,
--
Gordon Matzigkeit <[EMAIL PROTECTED]> //\ I'm a FIG (http://fig.org/)
Committed to diversity and freedom \// I use GNU (http://fig.org/gnu/)
--- util-linux-2.10m/mount/umount.c.intermezzo Fri Oct 29 17:20:33 1999
+++ util-linux-2.10m/mount/umount.c Tue Dec 26 09:41:05 2000
@@ -49,6 +49,18 @@
#include <arpa/inet.h>
#endif
+
+/* We could include the proper InterMezzo header files, but it's less
+ hassle just to define the things we need, and depend on the ABI
+ remaining compatible, like libc does. */
+struct presto_readmount {
+ char *io_string;
+ int io_len; /* this is IN & OUT: true length of str is returned */
+};
+#define PRESTO_CLEAR_FSETROOT _IOW ('p',0x08, struct presto_readmount *)
+#define PRESTO_CLEAR_ALL_FSETROOTS _IOW ('p',0x22, struct presto_readmount *)
+
+
#if defined(MNT_FORCE) && !defined(__sparc__) && !defined(__arm__)
/* Interesting ... it seems libc knows about MNT_FORCE and presumably
about umount2 as well -- need not do anything */
@@ -225,7 +237,37 @@
if (strcasecmp(type, "nfs") == 0)
nfs_umount_rpc_call(spec, opts);
#endif
-
+
+ /* Make sure that the InterMezzo journals are properly closed. */
+ if (strcasecmp(type, "InterMezzo") == 0) {
+ struct presto_readmount rm;
+ char *prestodev = NULL;
+ int prestofd;
+ string_list options = parse_list (mc->mnt_opts);
+
+ rm.io_string = (char *)node;
+ rm.io_len = strlen(node);
+
+ while (options) {
+ char *co = car (options);
+ if (! strncmp (co, "prestodev=", 10))
+ prestodev = co + 10;
+ options = cdr (options);
+ }
+
+ if (!prestodev)
+ prestodev = "/dev/intermezzo0";
+
+ prestofd = open (prestodev, O_RDWR);
+ if (prestofd == -1)
+ fprintf (stderr,
+ _("umount: cannot open `%s': %s\n"),
+ prestodev, strerror (errno));
+ else if (ioctl (prestofd, PRESTO_CLEAR_ALL_FSETROOTS, &rm) == -1)
+ fprintf (stderr,
+ _("umount: cannot clear `%s' volroots: %s\n"),
+ node, strerror (errno));
+ }
umnt_err = umnt_err2 = 0;
if (force) {
--- End Message ---
--- Begin Message ---
InterMezzo was never fully ported to 2.6 and has been
removed from Linux several years ago, closing this bug.
--- End Message ---