Package: iscsitarget
Version: 1.4.20.2-10
Severity: normal
Tags: patch

Hi,

on busy machines unloading the iscsitarget module is not immediately
possible after stopping the userspace daemon. The attached patch
introduces a flexible sleep time before unloading the module.

This is specially important on HA setups where open files may cause a
failover to fail.

Thanks,
~David


-- System Information:
Debian Release: 6.0.4
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/8 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash

Versions of packages iscsitarget depends on:
ii  libc6                   2.11.3-2         Embedded GNU C Library: Shared lib
ii  lsb-base                3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip
ii  procps                  1:3.2.8-9        /proc file system utilities

Versions of packages iscsitarget recommends:
pn  iscsitarget-module            <none>     (no description available)

Versions of packages iscsitarget suggests:
pn  iscsitarget-dkms              <none>     (no description available)
pn  iscsitarget-source            <none>     (no description available)
--- a/debian/iscsitarget.init   2012-06-29 09:55:32.287495190 +0000
+++ b/debian/iscsitarget.init   2012-06-29 10:01:53.227992044 +0000
@@ -19,6 +19,7 @@
 . /lib/lsb/init-functions # log_{warn,failure}_msg
 
 ISCSITARGET_ENABLE=false
+ISCSITARGET_MAX_SLEEP=3
 ISCSITARGET_DEFAULTS_FILE=/etc/default/iscsitarget
 if [ -s "$ISCSITARGET_DEFAULTS_FILE" ]; then
     . "$ISCSITARGET_DEFAULTS_FILE"
@@ -91,9 +92,17 @@
        RETVAL=$?
        if [ $RETVAL = "0" ] ; then
                
-               log_daemon_msg "Removing iSCSI enterprise target modules: "
-               modprobe -r iscsi_trgt
-               RETVAL=$?
+               for i in $(seq $ISCSITARGET_MAX_SLEEP); do
+                       log_daemon_msg "Removing iSCSI enterprise target 
modules: "
+                       # give iet some time to finish processing
+                       sleep 1
+                       modprobe -r iscsi_trgt
+                       RETVAL=$?
+                       if [ $RETVAL = "0" ]; then
+                               break
+                       fi
+               done
+
                modprobe -r crc32c 2>/dev/null
                if [ $RETVAL = "0" ]; then
                        log_end_msg 0
--- a/debian/iscsitarget.default        2012-06-29 09:58:10.215578518 +0000
+++ b/debian/iscsitarget.default        2012-06-29 09:58:33.208716552 +0000
@@ -1,4 +1,5 @@
 ISCSITARGET_ENABLE=false
+ISCSITARGET_MAX_SLEEP=3
 
 
 # ietd options

Reply via email to