From: Sagi Grimberg Date: Mon, 27 Jun 2022 11:32:00 +0000 (+0300) Subject: nvme: add optional ipv6 test flavor X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a819ea3637797119d2490c63a1b445fa4a315f02;p=users%2Fhch%2Fblktests.git nvme: add optional ipv6 test flavor Allow Setting nvme_adrfam=[ipv4|ipv6] and running tests on either address family. Ignored for non IP transports. Signed-off-by: Sagi Grimberg Reviewed-by: Chaitanya Kulkarni Signed-off-by: Shin'ichiro Kawasaki --- diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma index 8a2108f..8edcf39 100644 --- a/common/multipath-over-rdma +++ b/common/multipath-over-rdma @@ -75,6 +75,16 @@ get_ipv6_addr() { sed -n 's/.*[[:blank:]]inet6[[:blank:]]*\([^[:blank:]/]*\).*/\1/p' } +# grab only the link local address +get_ipv6_ll_addr() { + if [[ ! -e "/sys/class/net/$1" ]]; then + echo "get_ipv6_addr(): $1 is not a network interface" 1>&2 + fi + ll_addr=$(ip -6 -o addr show dev "$1" | grep "scope link" | + sed -n 's/.*[[:blank:]]inet6[[:blank:]]*\([^[:blank:]/]*\).*/\1/p') + echo "$ll_addr%$1" +} + # Whether or not $1 is a number. is_number() { [ "$1" -eq "0$1" ] 2>/dev/null diff --git a/tests/nvme/rc b/tests/nvme/rc index 998b181..4bebbc7 100644 --- a/tests/nvme/rc +++ b/tests/nvme/rc @@ -38,6 +38,25 @@ _nvme_requires() { SKIP_REASON="unsupported nvme_trtype=${nvme_trtype}" return 1 esac + + if [[ -n ${nvme_adrfam} ]]; then + case ${nvme_adrfam} in + ipv6) + def_traddr="::1" + def_adrfam="ipv6" + ;; + ipv4) + ;; # was already set + *) + # ignore for non ip transports + if [[ "${nvme_trtype}" == "tcp" || + "${nvme_trtype}" == "rdma" ]]; then + SKIP_REASON="unsupported nvme_adrfam=${nvme_adrfam}" + return 1 + fi + esac + fi + return 0 } @@ -148,9 +167,16 @@ _setup_nvmet() { start_soft_rdma for i in $(rdma_network_interfaces) do - ipv4_addr=$(get_ipv4_addr "$i") - if [ -n "${ipv4_addr}" ]; then - def_traddr=${ipv4_addr} + if [[ "${nvme_adrfam}" == "ipv6" ]]; then + ipv6_addr=$(get_ipv6_ll_addr "$i") + if [[ -n "${ipv6_addr}" ]]; then + def_traddr=${ipv6_addr} + fi + else + ipv4_addr=$(get_ipv4_addr "$i") + if [[ -n "${ipv4_addr}" ]]; then + def_traddr=${ipv4_addr} + fi fi done fi