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 <harald@redhat.com> Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
7c54823c82
commit
944de78b5d
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue