From 944de78b5d83e548f7c428ef5c08c69e6984cc4f Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 14 Nov 2011 14:11:01 +0100 Subject: switch_root: umount mount points we cannot move with MNT_DETACH If a mount point cannot be moved to the new root, umount it with MNT_DETACH, so that it is lazy umounted and does not show up in /proc/mounts anymore. [kzak@redhat.com: - add MNT_DETACH macro fallback] Signed-off-by: Harald Hoyer Signed-off-by: Karel Zak --- sys-utils/switch_root.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'sys-utils/switch_root.c') diff --git a/sys-utils/switch_root.c b/sys-utils/switch_root.c index e50f3101a..1c7375dbe 100644 --- a/sys-utils/switch_root.c +++ b/sys-utils/switch_root.c @@ -40,6 +40,10 @@ #define MS_MOVE 8192 #endif +#ifndef MNT_DETACH +#define MNT_DETACH 0x00000002 /* Just detach from the tree */ +#endif + /* remove all files/directories below dirName -- don't cross mountpoints */ static int recursiveRemove(int fd) { @@ -131,7 +135,7 @@ static int switchroot(const char *newroot) if ((stat(newmount, &sb) != 0) || (sb.st_dev != newroot_stat.st_dev)) { /* mount point seems to be mounted already or stat failed */ - umount(umounts[i]); + umount2(umounts[i], MNT_DETACH); continue; } -- cgit v1.2.3-55-g7522