From: Richard W.M. Jones Date: Thu, 3 Feb 2011 09:39:49 +0000 (+0000) Subject: daemon: Parse /proc/mounts instead of /etc/mtab X-Git-Tag: 1.9.8~12 X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=commitdiff_plain;h=61a1a2b71c4811b9d6233a43db74229b9364f0c6 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 --- 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); }