Harald Hoyer 99c743
From 251b424727492955041178766ce7e17ae4fc91ff Mon Sep 17 00:00:00 2001
Harald Hoyer 99c743
From: Hannes Reinecke <hare@suse.com>
Harald Hoyer 99c743
Date: Mon, 28 Sep 2020 14:02:28 +0200
Harald Hoyer 99c743
Subject: [PATCH] 95nvmf: Implement 'fc,auto' commandline syntax
Harald Hoyer 99c743
Harald Hoyer 99c743
Add a 'fc,auto' commandline syntax for nvmf.discover to force
Harald Hoyer 99c743
nvmf autodiscovery on FC-NVMe.
Harald Hoyer 99c743
Harald Hoyer 99c743
Signed-off-by: Hannes Reinecke <hare@suse.de>
Harald Hoyer 99c743
---
Harald Hoyer 99c743
 dracut.cmdline.7.asc                            |  2 ++
Harald Hoyer 99c743
 modules.d/95nvmf/parse-nvmf-boot-connections.sh | 16 +++++++++++-----
Harald Hoyer 99c743
 2 files changed, 13 insertions(+), 5 deletions(-)
Harald Hoyer 99c743
Harald Hoyer 99c743
diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc
Harald Hoyer 99c743
index f7f34d05..7ce7df2c 100644
Harald Hoyer 99c743
--- a/dracut.cmdline.7.asc
Harald Hoyer 99c743
+++ b/dracut.cmdline.7.asc
Harald Hoyer 99c743
@@ -874,6 +874,8 @@ NVMf
Harald Hoyer 99c743
     _<traddr>_ and the optionally _<host_traddr>_ or _<trsvcid>_.
Harald Hoyer 99c743
     The first argument specifies the transport to use; currently only
Harald Hoyer 99c743
     'rdma', 'fc', or 'tcp' are supported.
Harald Hoyer 99c743
+    The _<traddr>_ parameter can be set to 'auto' to select
Harald Hoyer 99c743
+    autodiscovery; in that case all other parameters are ignored.
Harald Hoyer 99c743
     This parameter can be specified multiple times.
Harald Hoyer 99c743
 
Harald Hoyer 99c743
 NBD
Harald Hoyer 99c743
diff --git a/modules.d/95nvmf/parse-nvmf-boot-connections.sh b/modules.d/95nvmf/parse-nvmf-boot-connections.sh
Harald Hoyer 99c743
index 5a19c84e..eb10dc97 100755
Harald Hoyer 99c743
--- a/modules.d/95nvmf/parse-nvmf-boot-connections.sh
Harald Hoyer 99c743
+++ b/modules.d/95nvmf/parse-nvmf-boot-connections.sh
Harald Hoyer 99c743
@@ -11,6 +11,7 @@
Harald Hoyer 99c743
 # nvmf.discover=tcp,192.168.1.3,,4420
Harald Hoyer 99c743
 # nvmf.discover=tcp,192.168.1.3
Harald Hoyer 99c743
 # nvmf.discover=fc,nn-0x200400a098d85236:pn-0x201400a098d85236,nn-0x200000109b7db455:pn-0x100000109b7db455
Harald Hoyer 99c743
+# nvmf.discover=fc,auto
Harald Hoyer 99c743
 #
Harald Hoyer 99c743
 # Note: FC does autodiscovery, so typically there is no need to
Harald Hoyer 99c743
 # specify any discover parameters for FC.
Harald Hoyer 99c743
@@ -81,21 +82,25 @@ parse_nvmf_discover() {
Harald Hoyer 99c743
             ;;
Harald Hoyer 99c743
         *)
Harald Hoyer 99c743
             warn "Invalid arguments for nvmf.discover=$1"
Harald Hoyer 99c743
-            return 1
Harald Hoyer 99c743
+            return 0
Harald Hoyer 99c743
             ;;
Harald Hoyer 99c743
     esac
Harald Hoyer 99c743
     if [ "$traddr" = "none" ] ; then
Harald Hoyer 99c743
         warn "traddr is mandatory for $trtype"
Harald Hoyer 99c743
-        return 1;
Harald Hoyer 99c743
+        return 0;
Harald Hoyer 99c743
     fi
Harald Hoyer 99c743
     if [ "$trtype" = "fc" ] ; then
Harald Hoyer 99c743
+        if [ "$traddr" = "auto" ] ; then
Harald Hoyer 99c743
+            rm /etc/nvme/discovery.conf
Harald Hoyer 99c743
+            return 1
Harald Hoyer 99c743
+        fi
Harald Hoyer 99c743
         if [ "$hosttraddr" = "none" ] ; then
Harald Hoyer 99c743
             warn "host traddr is mandatory for fc"
Harald Hoyer 99c743
-            return 1
Harald Hoyer 99c743
+            return 0
Harald Hoyer 99c743
         fi
Harald Hoyer 99c743
     elif [ "$trtype" != "rdma" ] && [ "$trtype" != "tcp" ] ; then
Harald Hoyer 99c743
         warn "unsupported transport $trtype"
Harald Hoyer 99c743
-        return 1
Harald Hoyer 99c743
+        return 0
Harald Hoyer 99c743
     fi
Harald Hoyer 99c743
     if [ "$trtype" = "tcp" ]; then
Harald Hoyer 99c743
         validate_ip_conn
Harald Hoyer 99c743
@@ -105,6 +110,7 @@ parse_nvmf_discover() {
Harald Hoyer 99c743
     else
Harald Hoyer 99c743
         echo "--transport=$trtype --traddr=$traddr --host-traddr=$hosttraddr --trsvcid=$trsvcid" >> /etc/nvme/discovery.conf
Harald Hoyer 99c743
     fi
Harald Hoyer 99c743
+    return 0
Harald Hoyer 99c743
 }
Harald Hoyer 99c743
 
Harald Hoyer 99c743
 nvmf_hostnqn=$(getarg nvmf.hostnqn=)
Harald Hoyer 99c743
@@ -117,7 +123,7 @@ if [ -n "$nvmf_hostid" ] ; then
Harald Hoyer 99c743
 fi
Harald Hoyer 99c743
 
Harald Hoyer 99c743
 for d in $(getargs nvmf.discover=); do
Harald Hoyer 99c743
-    parse_nvmf_discover "$d"
Harald Hoyer 99c743
+    parse_nvmf_discover "$d" || break
Harald Hoyer 99c743
 done
Harald Hoyer 99c743
 
Harald Hoyer 99c743
 # Host NQN and host id are mandatory for NVMe-oF
Harald Hoyer 99c743