Re: [PATCH blktests v1 2/3] nvme/rc: Avoid triggering host nvme-cli autoconnect

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 20/06/2023 16:27, Daniel Wagner wrote:
When the host has enabled the udev/systemd autoconnect services for the
fc transport it interacts with blktests and make tests break.

nvme-cli learned to ignore connects attemps when using the
--context command line option paired with a volatile configuration. Thus
we can mark all the resources created by blktests and avoid any
interaction with the systemd autoconnect scripts.

why would we like to ignore connect attempts during blktests ?
We define unique nqn/ids/etc. So we never should disturb other running services, unless it uses the same parameters, which shouldn't happen.

Agree on setting the hard coded values for hostnqn and hostid instead of reading the /etc/nvme/* files. This should do the work IMO, isn't it ?


Signed-off-by: Daniel Wagner <dwagner@xxxxxxx>
---
  tests/nvme/rc | 73 ++++++++++++++++++++++++++++++++++++++++++++-------
  1 file changed, 63 insertions(+), 10 deletions(-)

diff --git a/tests/nvme/rc b/tests/nvme/rc
index 191f3e2e0c43..00117d314a38 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -14,8 +14,8 @@ 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)"
+def_hostnqn="nqn.2014-08.org.nvmexpress:uuid:242d4a24-2484-4a80-8234-d0169409c5e8"
+def_hostid="242d4a24-2484-4a80-8234-d0169409c5e8"
  nvme_trtype=${nvme_trtype:-"loop"}
  nvme_img_size=${nvme_img_size:-"1G"}
  nvme_num_iter=${nvme_num_iter:-"1000"}
@@ -161,6 +161,50 @@ _nvme_calc_rand_io_size() {
  	echo "${io_size_kb}k"
  }
+_nvme_cli_supports_context() {
+	if ! nvme connect --help 2>&1 | grep -q context > /dev/null; then
+		    return 1
+	fi
+	return 0
+}
+
+_setup_nvme_cli() {
+	if ! _nvme_cli_supports_context; then
+		return
+	fi
+
+	mkdir -p /run/nvme
+	cat >> /run/nvme/blktests.json <<-EOF
+	[
+	  {
+	    "hostnqn": "${def_hostnqn}",
+	    "hostid": "${def_hostid}",
+	    "subsystems": [
+	      {
+	        "application": "blktests",
+	        "nqn": "blktests-subsystem-1",
+	        "ports": [
+	          {
+	            "transport": "fc",
+	            "traddr": "nn-${def_remote_wwnn}:pn-${def_remote_wwpn}",
+	            "host_traddr": "nn-${def_local_wwnn}:pn-${def_local_wwpn}"
+	          }
+	        ]
+	      }
+	    ]
+	  }
+	]
+	EOF
+}
+
+_cleanup_nvme_cli() {
+	if ! _nvme_cli_supports_context; then
+		return
+	fi
+
+	rm -f /run/nvme/blktests.json
+}
+
  _nvme_fcloop_add_rport() {
  	local local_wwnn="$1"
  	local local_wwpn="$2"
@@ -235,6 +279,8 @@ _cleanup_fcloop() {
  	_nvme_fcloop_del_lport "${local_wwnn}" "${local_wwpn}"
  	_nvme_fcloop_del_rport "${local_wwnn}" "${local_wwpn}" \
  			       "${remote_wwnn}" "${remote_wwpn}"
+
+	_cleanup_nvme_cli
  }
_cleanup_nvmet() {
@@ -337,6 +383,8 @@ _setup_nvmet() {
  		def_host_traddr=$(printf "nn-%s:pn-%s" \
  					 "${def_local_wwnn}" \
  					 "${def_local_wwpn}")
+
+		_setup_nvme_cli
  	fi
  }
@@ -436,18 +484,18 @@ _nvme_connect_subsys() {
  	trtype="$1"
  	subsysnqn="$2"
- ARGS=(-t "${trtype}" -n "${subsysnqn}")
+	ARGS=(-t "${trtype}"
+	      -n "${subsysnqn}"
+	      --hostnqn="${hostnqn}"
+	      --hostid="${hostid}")
+	if _nvme_cli_supports_context; then
+		ARGS+=(--context="blktests")
+	fi
  	if [[ "${trtype}" == "fc" ]] ; then
  		ARGS+=(-a "${traddr}" -w "${host_traddr}")
  	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
  	if [[ -n "${hostkey}" ]]; then
  		ARGS+=(--dhchap-secret="${hostkey}")
  	fi
@@ -482,7 +530,12 @@ _nvme_discover() {
  	local host_traddr="${3:-$def_host_traddr}"
  	local trsvcid="${3:-$def_trsvcid}"
- ARGS=(-t "${trtype}")
+	ARGS=(-t "${trtype}"
+	      --hostnqn="${def_hostnqn}"
+	      --hostid="${def_hostid}")
+	if _nvme_cli_supports_context; then
+		ARGS+=(--context="blktests")
+	fi
  	if [[ "${trtype}" = "fc" ]]; then
  		ARGS+=(-a "${traddr}" -w "${host_traddr}")
  	elif [[ "${trtype}" != "loop" ]]; then



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux