Skip to content

Commit 9664e98

Browse files
aafeijoo-susejohannbg
authored andcommitted
fix(nvmf): nvme list-subsys prints the address using commas as separator
nvme-cli 1.x printed the address using spaces as separator, but nvme-cli 2.x prints the address using commas as separator (exact output from sysfs). E.g., output from `cat /sys/class/nvme/nvme0/address`: traddr=nn-0x201700a09890f5bf:pn-0x201900a09890f5bf,host_traddr=nn-0x200000109b579ef5:pn-0x100000109b579ef5 Also, I suppress rd.nvmf.discover= cmdline option if all fields are empty.
1 parent b171284 commit 9664e98

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

Diff for: modules.d/95nvmf/module-setup.sh

+18-3
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ cmdline() {
6161
gen_nvmf_cmdline() {
6262
local _dev=$1
6363
local trtype
64+
local traddr
65+
local host_traddr
66+
local trsvcid
67+
local _address
68+
local -a _address_parts
6469

6570
[[ -L "/sys/dev/block/$_dev" ]] || return 0
6671
cd -P "/sys/dev/block/$_dev" || return 0
@@ -76,9 +81,19 @@ cmdline() {
7681
done
7782

7883
[ -z "$trtype" ] && return 0
79-
nvme list-subsys "${PWD##*/}" | while read -r _ _ trtype traddr host_traddr _; do
80-
[ "$trtype" != "${trtype#NQN}" ] && continue
81-
echo -n " rd.nvmf.discover=$trtype,${traddr#traddr=},${host_traddr#host_traddr=}"
84+
nvme list-subsys "${PWD##*/}" | while read -r _ _ trtype _address _; do
85+
[[ -z $trtype || $trtype != "${trtype#NQN}" ]] && continue
86+
unset traddr
87+
unset host_traddr
88+
unset trsvcid
89+
mapfile -t -d ',' _address_parts < <(printf "%s" "$_address")
90+
for i in "${_address_parts[@]}"; do
91+
[[ $i =~ ^traddr= ]] && traddr="${i#traddr=}"
92+
[[ $i =~ ^host_traddr= ]] && host_traddr="${i#host_traddr=}"
93+
[[ $i =~ ^trsvcid= ]] && trsvcid="${i#trsvcid=}"
94+
done
95+
[[ -z $traddr && -z $host_traddr && -z $trsvcid ]] && continue
96+
echo -n " rd.nvmf.discover=$trtype,$traddr,$host_traddr,$trsvcid"
8297
done
8398
}
8499

0 commit comments

Comments
 (0)