On Thu, Jul 23, 2015 at 04:36:50PM +0100, Richard W.M. Jones wrote:
On Thu, Jul 23, 2015 at 05:29:43PM +0200, Pino Toscano wrote:
On Thursday 23 July 2015 16:24:23 Richard W.M. Jones wrote:
Useful for debugging unmount failures. Note that we include lsof in the appliance already. --- daemon/mount.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/daemon/mount.c b/daemon/mount.c index c5b7d89..e139482 100644 --- a/daemon/mount.c +++ b/daemon/mount.c @@ -424,6 +424,10 @@ do_umount_all (void) r = command (NULL, &err, str_umount, mounts.argv[i], NULL); if (r == -1) { reply_with_error ("umount: %s: %s", mounts.argv[i], err); + if (verbose) { + /* Try running lsof to see what is holding the mountpoint open. */ + command (NULL, NULL, "lsof", mounts.argv[i], NULL); + } free_stringslen (mounts.argv, mounts.size); return -1; }
LGTM. Maybe worth being done also on single umount API?
Unfortunately there's no actual output from 'lsof'. I'm not sure if this is because I'm running lsof in the wrong way
I think it's because I'm running lsof the wrong way. This should be better: diff --git a/daemon/mount.c b/daemon/mount.c index c5b7d89..20a8d32 100644 --- a/daemon/mount.c +++ b/daemon/mount.c @@ -26,6 +26,8 @@ #include <sys/types.h> #include <mntent.h> +#include "ignore-value.h" + #include "daemon.h" #include "actions.h" @@ -421,6 +423,16 @@ do_umount_all (void) for (i = 0; i < mounts.size; ++i) { CLEANUP_FREE char *err = NULL; + if (verbose) { + CLEANUP_FREE char *cmd; + + if (asprintf_nowarn (&cmd, "lsof %Q", mounts.argv[i]) == -1) + perror ("asprintf"); + else + ignore_value (system (cmd)); + } + r = command (NULL, &err, str_umount, mounts.argv[i], NULL); if (r == -1) { reply_with_error ("umount: %s: %s", mounts.argv[i], err); -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top