File 0038-95fcoe-start-lldpad-separately.patch of Package dracut.892

From e4c44afc0f05514f2eed4efaea76d7b9bc239493 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Wed, 14 May 2014 08:04:22 +0200
Subject: [PATCH] 95fcoe: start lldpad separately

lldpad is a system-wide process, which must be started only once.
So we should be separate it from fcoe-up, as it might be called
several times.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 modules.d/95fcoe/fcoe-up.sh      |  8 --------
 modules.d/95fcoe/lldpad.sh       | 14 ++++++++++++++
 modules.d/95fcoe/module-setup.sh |  1 +
 3 files changed, 15 insertions(+), 8 deletions(-)
 create mode 100644 modules.d/95fcoe/lldpad.sh

diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh
index d8c73c8..9884713 100755
--- a/modules.d/95fcoe/fcoe-up.sh
+++ b/modules.d/95fcoe/fcoe-up.sh
@@ -24,10 +24,6 @@ netdriver=$(readlink -f /sys/class/net/$netif/device/driver)
 netdriver=${netdriver##*/}
 
 if [ "$dcb" = "dcb" ]; then
-    # Note lldpad will stay running after switchroot, the system initscripts
-    # are to kill it and start a new lldpad to take over. Data is transfered
-    # between the 2 using a shm segment
-    lldpad -d
     # wait for lldpad to be ready
     i=0
     while [ $i -lt 60 ]; do
@@ -37,10 +33,6 @@ if [ "$dcb" = "dcb" ]; then
         i=$(($i+1))
     done
 
-    # on some systems lldpad needs some time
-    # sleep until we find a better solution
-    sleep 30
-
     while [ $i -lt 60 ]; do
         dcbtool sc "$netif" dcb on && break
         info "Retrying to turn dcb on"
diff --git a/modules.d/95fcoe/lldpad.sh b/modules.d/95fcoe/lldpad.sh
new file mode 100644
index 0000000..d06a3bd
--- /dev/null
+++ b/modules.d/95fcoe/lldpad.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# Note lldpad will stay running after switchroot, the system initscripts
+# are to kill it and start a new lldpad to take over. Data is transfered
+# between the 2 using a shm segment
+lldpad -d
+# wait for lldpad to be ready
+i=0
+while [ $i -lt 60 ]; do
+    lldptool -p && break
+    info "Waiting for lldpad to be ready"
+    sleep 1
+    i=$(($i+1))
+done
diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh
index ef4a38f..9af8c71 100755
--- a/modules.d/95fcoe/module-setup.sh
+++ b/modules.d/95fcoe/module-setup.sh
@@ -71,6 +71,7 @@ install() {
     inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up"
     inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd"
     inst "$moddir/fcoe-genrules.sh" "/sbin/fcoe-genrules.sh"
+    inst_hook pre-trigger 03 "$moddir/lldpad.sh"
     inst_hook cmdline 99 "$moddir/parse-fcoe.sh"
     dracut_need_initqueue
 }
-- 
1.8.4.5