[Libguestfs] [PATCH] daemon: Parse /proc/mounts instead of /etc/mtab
Richard W.M. Jones
rjones at redhat.com
Thu Feb 3 10:40:28 UTC 2011
This is a better alternative to:
https://www.redhat.com/archives/libguestfs/2011-February/msg00006.html
Tested by running 'make check'.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages. http://libguestfs.org
-------------- next part --------------
>From 61a1a2b71c4811b9d6233a43db74229b9364f0c6 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Thu, 3 Feb 2011 09:39:49 +0000
Subject: [PATCH] daemon: Parse /proc/mounts instead of /etc/mtab
Since Fedora util-linux 2.19, the %post script does:
rm -f /etc/mtab
ln -s /proc/mounts /etc/mtab
We are no longer running %post scripts, so this means that /etc/mtab
is a plain file in the appliance. Usual 'mount' still updates it, but
for some reason mount.ntfs does *not* update it in Fedora 15, meaning
that you couldn't mount and then operate on NTFS partitions.
It seems better to always parse /proc/mounts (ie. what the kernel
thinks is mounted) unconditionally, rather than relying on the
capriciousness of the external mount command.
Therefore, parse /proc/mounts instead of /etc/mtab, but add a note
saying that in future we should really be parsing
/proc/self/mountinfo, but that needs a custom parser, and the format
is rather tricky:
http://lxr.linux.no/#linux+v2.6.37/Documentation/filesystems/proc.txt#L1462
---
daemon/mount.c | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/daemon/mount.c b/daemon/mount.c
index c584f81..0c990c3 100644
--- a/daemon/mount.c
+++ b/daemon/mount.c
@@ -40,9 +40,12 @@ is_root_mounted (void)
FILE *fp;
struct mntent *m;
- fp = setmntent ("/etc/mtab", "r");
+ /* NB: Eventually we should aim to parse /proc/self/mountinfo, but
+ * that requires custom parsing code.
+ */
+ fp = setmntent ("/proc/mounts", "r");
if (fp == NULL) {
- perror ("/etc/mtab");
+ perror ("/proc/mounts");
exit (EXIT_FAILURE);
}
--
1.7.3.5
More information about the Libguestfs
mailing list