Index: chromeos-setimage |
diff --git a/chromeos-setimage b/chromeos-setimage |
index d1be3321a64ccc6f4ffdede1fba95268a1ac3457..bc8e9e9e3fcae3364395751e2a5b6efc0016fd4e 100755 |
--- a/chromeos-setimage |
+++ b/chromeos-setimage |
@@ -113,21 +113,29 @@ ESP_LOOP= |
ROOT_LOOP= |
KERN_LOOP= |
+# Cleans up a device and unmount if required. |
cleanup_loop() { |
local dev="$1" |
- if [ -z "$dev" ]; then |
+ local need_umount="$2" |
+ if [ -z "${dev}" ]; then |
return 0 |
fi |
- (sudo umount "$dev" || true) |
- (sudo losetup -d "$dev" || true) |
+ if [ ${need_umount} -eq ${FLAGS_TRUE} ]; then |
+ sudo umount -d "${dev}" || true |
+ elif [ ${need_umount} -eq ${FLAGS_FALSE} ]; then |
+ sudo losetup -d "${dev}" || true |
+ else |
+ echo "INTERNAL ERROR: unknown parameter for cleanup_loop: ${need_umount}" >&2 |
+ fi |
} |
cleanup() { |
- cleanup_loop "${ESP_LOOP}" |
+ # Currently only ESP may be mounted. KERN and ROOT are never mounted. |
+ cleanup_loop "${ESP_LOOP}" "${FLAGS_TRUE}" |
ESP_LOOP= |
- cleanup_loop "${KERN_LOOP}" |
+ cleanup_loop "${KERN_LOOP}" "${FLAGS_FALSE}" |
KERN_LOOP= |
- cleanup_loop "${ROOT_LOOP}" |
+ cleanup_loop "${ROOT_LOOP}" "${FLAGS_FALSE}" |
ROOT_LOOP= |
# Failing to clean this up isn't the worst. |