4 # rd.nvmf.hostnqn=<hostnqn>
5 # rd.nvmf.hostid=<hostid>
6 # rd.nvmf.discover=<transport>,<traddr>,<host-traddr>,<trsvcid>
9 # rd.nvmf.hostnqn=nqn.2014-08.org.nvmexpress:uuid:37303738-3034-584d-5137-333230423843
10 # rd.nvmf.discover=rdma,192.168.1.3,,4420
11 # rd.nvmf.discover=tcp,192.168.1.3,,4420
12 # rd.nvmf.discover=tcp,192.168.1.3
13 # rd.nvmf.discover=fc,nn-0x200400a098d85236:pn-0x201400a098d85236,nn-0x200000109b7db455:pn-0x100000109b7db455
14 # rd.nvmf.discover=fc,auto
16 # Note: FC does autodiscovery, so typically there is no need to
17 # specify any discover parameters for FC.
20 type is_ip
> /dev
/null
2>&1 || .
/lib
/net-lib.sh
22 if getargbool
0 rd.nonvmf
; then
23 warn
"rd.nonvmf=0: skipping nvmf"
27 initqueue
--onetime modprobe
--all -b -q nvme_tcp nvme_core nvme_fabrics
29 parse_nvmf_discover
() {
36 # shellcheck disable=SC2086
42 [ -n "$1" ] && trtype
=$1
43 [ -n "$2" ] && traddr
=$2
46 [ -n "$1" ] && trtype
=$1
47 [ -n "$2" ] && traddr
=$2
48 [ -n "$3" ] && hosttraddr
=$3
51 [ -n "$1" ] && trtype
=$1
52 [ -n "$2" ] && traddr
=$2
53 [ -n "$3" ] && hosttraddr
=$3
54 [ -n "$4" ] && trsvcid
=$4
57 warn
"Invalid arguments for rd.nvmf.discover=$1"
61 if [ "$traddr" = "none" ]; then
62 warn
"traddr is mandatory for $trtype"
65 if [ "$trtype" = "tcp" ]; then
66 : > /tmp
/nvmf_needs_network
67 elif [ "$trtype" = "fc" ]; then
68 if [ "$traddr" = "auto" ]; then
69 rm /etc
/nvme
/discovery.conf
72 if [ "$hosttraddr" = "none" ]; then
73 warn
"host traddr is mandatory for fc"
76 elif [ "$trtype" != "rdma" ]; then
77 warn
"unsupported transport $trtype"
80 if [ "$trtype" = "fc" ]; then
81 echo "--transport=$trtype --traddr=$traddr --host-traddr=$hosttraddr" >> /etc
/nvme
/discovery.conf
83 echo "--transport=$trtype --traddr=$traddr --host-traddr=$hosttraddr --trsvcid=$trsvcid" >> /etc
/nvme
/discovery.conf
88 nvmf_hostnqn
=$
(getarg rd.nvmf.hostnqn
-d nvmf.hostnqn
=)
89 if [ -n "$nvmf_hostnqn" ]; then
90 echo "$nvmf_hostnqn" > /etc
/nvme
/hostnqn
92 nvmf_hostid
=$
(getarg rd.nvmf.hostid
-d nvmf.hostid
=)
93 if [ -n "$nvmf_hostid" ]; then
94 echo "$nvmf_hostid" > /etc
/nvme
/hostid
98 for d
in $
(getargs rd.nvmf.discover
-d nvmf.discover
=); do
99 parse_nvmf_discover
"$d" ||
{
105 if [ -e /tmp
/nvmf_needs_network
]; then
106 echo "rd.neednet=1" > /etc
/cmdline.d
/nvmf-neednet.conf
107 rm -f /tmp
/nvmf_needs_network
110 # Host NQN and host id are mandatory for NVMe-oF
111 if [ -f "/etc/nvme/hostnqn" ] && [ -f "/etc/nvme/hostid" ]; then
113 # If no nvme command line arguments present, try autodiscovery
114 if [ $NVMF_FC_AUTO ] ||
[ ! -f "/etc/nvme/discovery.conf" ]; then
115 /sbin
/initqueue
--settled --onetime --unique --name nvme-fc-autoconnect
/sbin
/nvmf-autoconnect.sh
117 /sbin
/initqueue
--settled --onetime --unique --name nvme-discover
/usr
/sbin
/nvme connect-all