Blame 0107-fcoe-fcoe-edd.sh-cleanup-the-script.patch

Harald Hoyer bb31e7
From cca313fa759997d8d2f2d1926e51c91b152e363b Mon Sep 17 00:00:00 2001
Harald Hoyer bb31e7
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer bb31e7
Date: Fri, 3 Jul 2015 13:52:32 +0200
Harald Hoyer bb31e7
Subject: [PATCH] fcoe/fcoe-edd.sh: cleanup the script
Harald Hoyer bb31e7
Harald Hoyer bb31e7
- check if modprobe was successful
Harald Hoyer bb31e7
- add a timeout for /sys/firmware/edd
Harald Hoyer bb31e7
- only remove the module, if it was loaded by the script
Harald Hoyer bb31e7
Harald Hoyer bb31e7
(cherry picked from commit 34203d03c0d43aa0aed12988d2719455e80eae54)
Harald Hoyer bb31e7
---
Harald Hoyer bb31e7
 modules.d/95fcoe/fcoe-edd.sh | 46 ++++++++++++++++++++++++++++++--------------
Harald Hoyer bb31e7
 1 file changed, 32 insertions(+), 14 deletions(-)
Harald Hoyer bb31e7
Harald Hoyer bb31e7
diff --git a/modules.d/95fcoe/fcoe-edd.sh b/modules.d/95fcoe/fcoe-edd.sh
Harald Hoyer bb31e7
index fb3dcd7..3b07ad3 100755
Harald Hoyer bb31e7
--- a/modules.d/95fcoe/fcoe-edd.sh
Harald Hoyer bb31e7
+++ b/modules.d/95fcoe/fcoe-edd.sh
Harald Hoyer bb31e7
@@ -1,36 +1,54 @@
Harald Hoyer bb31e7
 #!/bin/sh
Harald Hoyer bb31e7
 
Harald Hoyer bb31e7
-dcb=$1
Harald Hoyer bb31e7
+dcb="$1"
Harald Hoyer bb31e7
 
Harald Hoyer bb31e7
-if ! [ -d /sys/firmware/edd ]; then
Harald Hoyer bb31e7
-    modprobe edd
Harald Hoyer bb31e7
-    while ! [ -d /sys/firmware/edd ]; do sleep 0.1; done
Harald Hoyer bb31e7
-fi
Harald Hoyer bb31e7
+_modprobe_r_edd="0"
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+check_edd() {
Harald Hoyer bb31e7
+    local cnt=0
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+    [ -d /sys/firmware/edd ] && return 0
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+    _modprobe_r_edd="1"
Harald Hoyer bb31e7
+    modprobe edd || return $?
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+    while [ $cnt -lt 600 ]; do
Harald Hoyer bb31e7
+        [ -d /sys/firmware/edd ] && return 0
Harald Hoyer bb31e7
+        cnt=$(($cnt+1))
Harald Hoyer bb31e7
+        sleep 0.1
Harald Hoyer bb31e7
+    done
Harald Hoyer bb31e7
+    return 1
Harald Hoyer bb31e7
+}
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+check_edd || exit 1
Harald Hoyer bb31e7
 
Harald Hoyer bb31e7
 for disk in /sys/firmware/edd/int13_*; do
Harald Hoyer bb31e7
-    [ -d $disk ] || continue
Harald Hoyer bb31e7
-    if [ -e ${disk}/pci_dev/driver ]; then
Harald Hoyer bb31e7
-	    driver=`readlink ${disk}/pci_dev/driver`
Harald Hoyer bb31e7
+    [ -d "$disk" ] || continue
Harald Hoyer bb31e7
+    if [ -e "${disk}/pci_dev/driver" ]; then
Harald Hoyer bb31e7
+	    driver=$(readlink "${disk}/pci_dev/driver")
Harald Hoyer bb31e7
 	    driver=${driver##*/}
Harald Hoyer bb31e7
     fi
Harald Hoyer bb31e7
     # i40e uses dev_port 1 for a virtual fcoe function
Harald Hoyer bb31e7
     if [ "${driver}" == "i40e" ]; then
Harald Hoyer bb31e7
 	    dev_port=1
Harald Hoyer bb31e7
     fi
Harald Hoyer bb31e7
-    for nic in ${disk}/pci_dev/net/*; do
Harald Hoyer bb31e7
-        [ -d $nic ] || continue
Harald Hoyer bb31e7
-	if [ -n "${dev_port}" -a -e ${nic}/dev_port ]; then
Harald Hoyer bb31e7
-		if [ `cat ${nic}/dev_port` -ne ${dev_port} ]; then
Harald Hoyer bb31e7
+    for nic in "${disk}"/pci_dev/net/*; do
Harald Hoyer bb31e7
+        [ -d "$nic" ] || continue
Harald Hoyer bb31e7
+	if [ -n "${dev_port}" -a -e "${nic}/dev_port" ]; then
Harald Hoyer bb31e7
+		if [ "$(cat ${nic}/dev_port)" -ne "${dev_port}" ]; then
Harald Hoyer bb31e7
 			continue
Harald Hoyer bb31e7
 		fi
Harald Hoyer bb31e7
 	fi
Harald Hoyer bb31e7
         if [ -e ${nic}/address ]; then
Harald Hoyer bb31e7
 	    fcoe_interface=${nic##*/}
Harald Hoyer bb31e7
 	    if ! [ -e "/tmp/.fcoe-$fcoe_interface" ]; then
Harald Hoyer bb31e7
-		/sbin/fcoe-up $fcoe_interface $dcb
Harald Hoyer bb31e7
+		/sbin/fcoe-up "$fcoe_interface" "$dcb"
Harald Hoyer bb31e7
 		> "/tmp/.fcoe-$fcoe_interface"
Harald Hoyer bb31e7
 	    fi
Harald Hoyer bb31e7
         fi
Harald Hoyer bb31e7
     done
Harald Hoyer bb31e7
 done
Harald Hoyer bb31e7
-modprobe -r edd
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+[ "$_modprobe_r_edd" = "1" ] && modprobe -r edd
Harald Hoyer bb31e7
+
Harald Hoyer bb31e7
+unset _modprobe_r_edd