[Pbuilder-maint] Bug#391390: fails to umount /proc if /proc is not mounted

Loïc Minier lool at dooz.org
Sat Oct 28 18:18:10 CEST 2006


tags 391390 + patch
stop

        Hi Martin,

On Fri, Oct 06, 2006, martin f krafft wrote:
>  -> unmounting proc filesystem
> umount: /proc: device is busy
> umount: /var/cache/pbuilder/build/27006/proc: not mounted
> umount: /proc: device is busy
> umount: /var/cache/pbuilder/build/27006/proc: not mounted
> W: Retrying to unmount proc
> umount: /var/cache/pbuilder/build//27006/proc: not mounted
> 
>   Could not unmount proc, there might be some program 
>   still using files in /proc (klogd?).
>   Please check and kill the process manually so that I can unmount proc
> 
>   This error is only happens with chroot; try using user-mode-linux to 
>   avoid this message.

 Could you please try the attached patch?  I've tested it in both
 working and not working cases, and it seems do what I want it to do:
 ignore only your particular type of umount error.

 Suggestions to avoid the ugly construct around UMOUNT_OUTPUT are
 welcome.  I just wiped a bind mounted dir trying this out.  :-/

   Bye,
-- 
Loïc Minier <lool at dooz.org>
-------------- next part --------------
Index: ChangeLog
===================================================================
RCS file: /cvsroot/pbuilder/pbuilder/ChangeLog,v
retrieving revision 1.411
diff -u -r1.411 ChangeLog
--- ChangeLog	28 Oct 2006 14:39:42 -0000	1.411
+++ ChangeLog	28 Oct 2006 16:16:06 -0000
@@ -8,6 +8,9 @@
 	* testsuite/run-test-satisfy-depends.log: initial test results.
 	* testsuite/run-test-satisfy-depends.sh: fix invocation from CVS
 	checkout by only copying debian/rules and not debian/*.
+	* pbuilder-modules: ignore umount errors of the type "umount: /foobar:
+	not mounted" as retries will be useless anyway, and these errors are
+	not caused by open files; fixes #391390.
 
 2006-10-27  Junichi Uekawa  <dancer at debian.org>
 
Index: pbuilder-modules
===================================================================
RCS file: /cvsroot/pbuilder/pbuilder/pbuilder-modules,v
retrieving revision 1.99
diff -u -r1.99 pbuilder-modules
--- pbuilder-modules	24 Aug 2006 22:58:57 -0000	1.99
+++ pbuilder-modules	28 Oct 2006 16:16:06 -0000
@@ -93,24 +93,36 @@
 	return
     fi
     echo " -> unmounting $1 filesystem"
-    if ! umount "$BUILDPLACE/$1"; then
+    local UMOUNT_OUTPUT
+    local error
+    set +e
+    UMOUNT_OUTPUT="$( exec 2>&1; LC_ALL=C umount "$BUILDPLACE/$1")"
+    error="$?"
+    set -e
+    if [ "$error" -ne 0 ]; then
+        if echo "$UMOUNT_OUTPUT" | grep -q ': not mounted$'; then
+	    echo "W: umount said $1 is not mounted, skipping"
+        else
 	    echo "W: Retrying to unmount $1"
 	    sleep 5s
 	    while ! umount "$BUILDPLACE/$1"; do
 		sleep 5s
 		cat <<EOF
 
-  Could not unmount $1, there might be some program 
-  still using files in /proc (klogd?).
-  Please check and kill the process manually so that I can unmount $1
+  Could not unmount $1, some programs might
+  still be using files in /proc (klogd?).
+  Please check and kill these processes manually
+  so that I can unmount $1.  Last umount error was:
+$UMOUNT_OUTPUT
 
-  This error is only happens with chroot; try using user-mode-linux to 
-  avoid this message.
+  This error only affects chroots; you may want to use
+  user-mode-linux to avoid this message.
 
 EOF
 		chroot "$BUILDPLACE" bin/sh
 	    done
-	fi
+        fi
+    fi
 }
 
 function umountproc () {


More information about the Pbuilder-maint mailing list