diff --git a/env.scm b/env.scm index e9bc003..f6ad7e5 100644 --- a/env.scm +++ b/env.scm @@ -39,7 +39,7 @@ remove-env-no-checks! roll-back! environment->overlay-mount-maybe - unmount-environment + unmount-environment-maybe environment-mounted?)) (define directory-files (@@ (ice-9 ftw) directory-files)) @@ -431,15 +431,18 @@ by other environments made." (0 (values (make-overlay-mount layers-links upper work merged) 0)) (err (values #f err))))))) -(define (unmount-environment env) +(define (unmount-environment-maybe env) (let* ((name (symbol->string (environment-name env))) (dir (string-append %env-directory "/" name)) (tmpdirln (string-append "/tmp/genv/" name))) - (when (file-exists? dir) - (system* "umount" dir) - (delete-file-recursively dir)) - (when (file-exists? tmpdirln) - (delete-file tmpdirln)))) + (if (file-exists? (string-append tmpdirln "/lock")) + #f + (begin + (when (file-exists? dir) + (system* "umount" dir) + (delete-file-recursively dir)) + (when (file-exists? tmpdirln) + (delete-file tmpdirln)))))) (define (fuse-overlayfs-mounts) (filter (λ (m) (equal? "fuse.fuse-overlayfs"