From: Max Gurtovoy <mgurtovoy@xxxxxxxxxx> After the kernel commit ae8bd606e09b ("nvme-fabrics: prevent overriding of existing host"), 'nvme discover' and 'nvme connect' commands fail when pair of hostid and hostnqn is not provide. This caused failure of many test cases in the nvme group with kernel messages "nvme_fabrics: found same hostid XXX but different hostnqn YYY". To avoid the failure, specify valid hostnqn and hostid to the nvme commands always. Prepare def_hostnqn and def_hostid even when /etc/nvme/hostnqn or /etc/nvme/hostid is not available. Using these values, add --hostnqn and --hostid options to the nvme commands in _nvme_discover() and _nvme_connect_subsys(). Reported-by: Yi Zhang <yi.zhang@xxxxxxxxxx> Link: https://lore.kernel.org/linux-nvme/CAHj4cs_qUWzetD0203EKbBLNv3KF=qgTLsWLeHN3PY7UE6mzmw@xxxxxxxxxxxxxx/ Signed-off-by: Max Gurtovoy <mgurtovoy@xxxxxxxxxx> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> --- tests/nvme/rc | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/tests/nvme/rc b/tests/nvme/rc index 191f3e2..1c2c2fa 100644 --- a/tests/nvme/rc +++ b/tests/nvme/rc @@ -14,8 +14,23 @@ def_remote_wwnn="0x10001100aa000001" def_remote_wwpn="0x20001100aa000001" def_local_wwnn="0x10001100aa000002" def_local_wwpn="0x20001100aa000002" -def_hostnqn="$(cat /etc/nvme/hostnqn 2> /dev/null)" -def_hostid="$(cat /etc/nvme/hostid 2> /dev/null)" + +if [ -f "/etc/nvme/hostid" ]; then + def_hostid="$(cat /etc/nvme/hostid 2> /dev/null)" +else + def_hostid="$(uuidgen)" +fi +if [ -z "$def_hostid" ] ; then + def_hostid="0f01fb42-9f7f-4856-b0b3-51e60b8de349" +fi + +if [ -f "/etc/nvme/hostnqn" ]; then + def_hostnqn="$(cat /etc/nvme/hostnqn 2> /dev/null)" +fi +if [ -z "$def_hostnqn" ] ; then + def_hostnqn="nqn.2014-08.org.nvmexpress:uuid:${def_hostid}" +fi + nvme_trtype=${nvme_trtype:-"loop"} nvme_img_size=${nvme_img_size:-"1G"} nvme_num_iter=${nvme_num_iter:-"1000"} @@ -442,12 +457,8 @@ _nvme_connect_subsys() { elif [[ "${trtype}" != "loop" ]]; then ARGS+=(-a "${traddr}" -s "${trsvcid}") fi - if [[ "${hostnqn}" != "$def_hostnqn" ]]; then - ARGS+=(--hostnqn="${hostnqn}") - fi - if [[ "${hostid}" != "$def_hostid" ]]; then - ARGS+=(--hostid="${hostid}") - fi + ARGS+=(--hostnqn="${hostnqn}") + ARGS+=(--hostid="${hostid}") if [[ -n "${hostkey}" ]]; then ARGS+=(--dhchap-secret="${hostkey}") fi @@ -483,6 +494,8 @@ _nvme_discover() { local trsvcid="${3:-$def_trsvcid}" ARGS=(-t "${trtype}") + ARGS+=(--hostnqn="${def_hostnqn}") + ARGS+=(--hostid="${def_hostid}") if [[ "${trtype}" = "fc" ]]; then ARGS+=(-a "${traddr}" -w "${host_traddr}") elif [[ "${trtype}" != "loop" ]]; then -- 2.40.1