]> git.ipfire.org Git - people/jschlag/ipfire-3.x-image.git/commitdiff
Umount everything we ever mount in the build process
authorJonatan Schlag <jonatan.schlag@ipfire.org>
Sun, 23 Jun 2019 13:16:02 +0000 (15:16 +0200)
committerJonatan Schlag <jonatan.schlag@ipfire.org>
Sun, 23 Jun 2019 13:17:06 +0000 (15:17 +0200)
Signed-off-by: Jonatan Schlag <jonatan.schlag@ipfire.org>
functions.sh

index 3c944fae1e42768627bbe28dfc27f0cdc1eee365..6e28793fd58fd7d8346f5cbb5bada5fef73b7196 100644 (file)
@@ -20,6 +20,10 @@ FALSE=1
 
 IMAGE_RELEASE=${FALSE}
 
+# maybe mounted dirs
+MOUNTED_DIRS="/proc" "/sys" "dev/pts" "dev/shm" "dev" "run" "tmp" ""
+
+
 # Functions
 
 log() {
@@ -50,8 +54,18 @@ cmd() {
 
 
 cleanup_stage_1() {
-       # Unmount image
-       umount ${IMAGE_MOUNT_DIR}
+
+       local mounted_dir
+       for mounted_dir in  ${MOUNTED_DIRS}
+       do
+
+               if is_mounted "${IMAGE_MOUNT_DIR}${mounted_dir}"; then
+                       umount  "${IMAGE_MOUNT_DIR}${mounted_dir}"
+               else
+                       log DEBUG "${IMAGE_MOUNT_DIR}${mounted_dir} is not  mounted"
+               fi
+       done
+
 
        # Remove partition from the kernel table.
        partx -d ${outlo}p1
@@ -68,7 +82,32 @@ cleanup_stage_1() {
 
 }
 
+is_mounted() {
+       local mounted_dir=${1}
+
+       if [ ! -d ${mounted_dir} ]; then
+               log ERROR "Is not a directory ${mounted_dir}"
+               return ${FALSE}
+       else
+               mountpoint ${mounted_dir}
+       fi
+}
+
 cleanup_stage_2() {
+       #Check that nothing is mounted in working dir
+       local mounted_dir
+       for mounted_dir in ${MOUNTED_DIRS}
+       do
+
+               if is_mounted "${IMAGE_MOUNT_DIR}${mounted_dir}"; then
+                       log ERROR "${IMAGE_MOUNT_DIR}${mounted_dir} is still mounted"
+                       return ${EXIT_ERROR}
+               else
+                       log DEBUG "${IMAGE_MOUNT_DIR}${mounted_dir} is not  mounted"
+
+               fi
+       done
+
        # Drop working dir
        if [ -d "${WORKING_DIR}" ]; then
                rm -dfR "${WORKING_DIR}"