Hi altogether,

I just had a look at havp and this bugreport.
Using the patch suggested in this report works, but sometimes havp takes some 
time to close the files. This causes mount to fail.
The attached patch also tries to unmount /var/spool/havp, but if this fails it 
retries to unmount it after a delay of one second.
This patch fails if another process uses  /var/spool/havp, but this shouldn't 
be the case normally.

With best regards,

Wolfram


-- 
tarent Gesellschaft für Softwareentwicklung und IT-Beratung mbH
Geschäftsführer: Boris Esser, Elmar Geese
HRB AG Bonn 5168 - USt-ID (VAT): DE122264941

Heilsbachstraße 24,  53123 Bonn,   Telefon: +49 228 52675-0
Thiemannstraße 36 a, 12059 Berlin, Telefon: +49 30 5682943-30
Internet: http://www.tarent.de/  • Telefax: +49 228 52675-25
From 194d6dd855669c76fdfe14cdff80b14e68560e51 Mon Sep 17 00:00:00 2001
From: Wolfram Quester <[email protected]>
Date: Fri, 11 Feb 2011 12:45:54 +0100
Subject: [PATCH 1/2] fix unmounting of loop devices (see #558370)

STDERR is redicected to /dev/null to suppress the error message:
> umount: /var/spool/havp: device is busy.
>         (In some cases useful info about processes that use
>          the device is found by lsof(8) or fuser(1))
---
 debian/havp.init |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/debian/havp.init b/debian/havp.init
index e3bee93..4a10613 100644
--- a/debian/havp.init
+++ b/debian/havp.init
@@ -71,11 +71,15 @@ case "$1" in
 	find $havp_mountpoint/ -type f -delete
 	echo " done"
 
-        if [ x"$USE_LOOPBACK" = x"true" ] && [ "`mount | grep ^$havp_loopback`" ]; then
-		echo -n "Unmounting $havp_mountpoint ..."
-		umount $havp_mountpoint
-		echo "done"
+        if [ x"$USE_LOOPBACK" = x"true" ] && [ "`mount | grep \" $havp_mountpoint\"`" ]; then
+                echo -n "Unmounting $havp_mountpoint ..."
+                while !( umount "$havp_mountpoint" 2> /dev/null ) ; do
+                    sleep 1
+                    echo "Retrying to unmount $havp_mountpoint ..."
+                done
+                echo "done"
         fi
+
 	;;
   reload)
 	#
-- 
1.7.2.3

Reply via email to