]> www.infradead.org Git - users/hch/blktests.git/commitdiff
nvme: add optional ipv6 test flavor
authorSagi Grimberg <sagi@grimberg.me>
Mon, 27 Jun 2022 11:32:00 +0000 (14:32 +0300)
committerShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 28 Jun 2022 08:48:22 +0000 (17:48 +0900)
Allow Setting nvme_adrfam=[ipv4|ipv6] and running tests on either
address family. Ignored for non IP transports.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
common/multipath-over-rdma
tests/nvme/rc

index 8a2108f3f4b5ae5444aaea61687fb5b26731df8c..8edcf3921a7f5873dafdbf25196df1d4c686b7da 100644 (file)
@@ -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
index 998b18164306fadf7c4b2d0e512c411ba414ca6c..4bebbc762cbb121eba1b1b96ebf05b24d2f7b1be 100644 (file)
@@ -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