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>
#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)
{
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;
}