commit 5a02578c97b0a2c01cc453344397645efc437f18
Author: Arkadiusz Miƛkiewicz <ar...@maven.pl>
Date:   Sun Apr 14 16:00:06 2024 +0200

    Umount remaining filesystems one by one (using -R) option which helps in 
cases when we have chroot mounted somewhere with proc, sys etc inside. Also 
when doing final -a umount skip tmpfs (used by /run) and dev* (used in /dev).

 rc.d/rc.shutdown | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/rc.d/rc.shutdown b/rc.d/rc.shutdown
index a3807dd7..be5c7857 100755
--- a/rc.d/rc.shutdown
+++ b/rc.d/rc.shutdown
@@ -81,8 +81,20 @@ if ! is_yes "$VSERVER"; then
                        && $1 !~ /^(none|\/dev\/root)$/ \
                        && $2 !~ ig {print $2}' /proc/mounts)
        while [ -n "$remaining" -a "$retry" -gt 0 ]; do
-               show "Unmounting file systems"; busy
-               ERRORS=$(umount -a $force -t noproc,nosysfs 2>&1); rc=$?
+               for mnt in $remaining; do
+                       run_cmd "$(nls 'Umounting file system: %s' $mnt)" 
umount $force -R $mnt
+
+                       # we might had unmounted /usr, recheck $TPUT 
availability
+                       # but well. we need tput only for show() and busy() 
(ok() and fail() messages are already cached)
+                       # TODO: look ahead the messages?
+                       if is_yes "$TPUT"; then
+                           TPUT=
+                           rc_gettext_init
+                       fi
+               done
+
+               show "Unmounting remainging file systems"; busy
+               ERRORS=$(umount -a $force -t 
noproc,nosysfs,notmpfs,nodevpts,nodevtmpfs 2>&1); rc=$?
 
                # we might had unmounted /usr, recheck $TPUT availability
                # but well. we need tput only for show() and busy() (ok() and 
fail() messages are already cached)
@@ -96,7 +108,10 @@ if ! is_yes "$VSERVER"; then
                        ok
                else
                        fail
-                       [ -n "$ERRORS" ] && echo "$ERRORS"
+                       if [ -n "$ERRORS" ]; then
+                              nls "Umount errors:"
+                              echo "$ERRORS"
+                       fi
                fi
 
                sleep 2
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/rc-scripts.git/commitdiff/5a02578c97b0a2c01cc453344397645efc437f18

_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to