[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Libguestfs] [PATCH] daemon: Parse /proc/mounts instead of /etc/mtab

This is a better alternative to:

Tested by running 'make check'.


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
>From 61a1a2b71c4811b9d6233a43db74229b9364f0c6 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones 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:

 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);

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]