From patchwork Fri Dec 13 14:32:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11290649 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F281B109A for ; Fri, 13 Dec 2019 20:37:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B125224754 for ; Fri, 13 Dec 2019 20:37:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727686AbfLMOc7 (ORCPT ); Fri, 13 Dec 2019 09:32:59 -0500 Received: from mail-io1-f50.google.com ([209.85.166.50]:38304 "EHLO mail-io1-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727610AbfLMOc7 (ORCPT ); Fri, 13 Dec 2019 09:32:59 -0500 Received: by mail-io1-f50.google.com with SMTP id v3so2583884ioj.5 for ; Fri, 13 Dec 2019 06:32:58 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1EYBFDT7Yxn9EjoXkexEuSV1/U3eX7W64+vi+cOaK3o=; b=gqAWGIet9Msz9g8LS89SMUUnthtFySlpL1aqBi565h3qCcxjIO5b1KPe9XP2Lo6YdT WCVLXh1MNdPxRCPVsTScBkmWc/LyDWje5KTTAFEKe3BG/uoqHMGsUxflzXATYdTKNPqz G09P7e6amrdaoAgBeIuNHk3L0UC7WaqfrKKBV+Jfq0ua7bzdjQoA5XjC+IaRaZPxq1W0 g3C0jQWtBjFr3K5wZPzh4HtIt2q/UWc3dL1iMA7tIZy8BD1slfLD3bAHYQQw+0D7iu9h DERfl/JJjgJ7C6K2YcXK5oLhGUyL1TLbBblM8zTD8jusvOJbSsNqxBqP2CGXkv+BFw0B bHUw== X-Gm-Message-State: APjAAAWSDJQ0YSVXZPfkytZQaERYdh0HlqsiKYnrTJSEGjzbD/iqJC7h tJpJrWcoxJgv3h95m9EQKotzIABX X-Google-Smtp-Source: APXvYqwNdsaSSfG+8SMhxA/zierVbC0QxtFvqRa0IFz6vkKNs+yy+MRtLPqYPUCoRCLeTKbtxmMOjQ== X-Received: by 2002:a02:c906:: with SMTP id t6mr13180265jao.75.1576247578496; Fri, 13 Dec 2019 06:32:58 -0800 (PST) Received: from bvanassche-glaptop.ka.ltv ([75.104.68.105]) by smtp.gmail.com with ESMTPSA id i79sm2785026ild.6.2019.12.13.06.32.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Dec 2019 06:32:57 -0800 (PST) From: Bart Van Assche To: Omar Sandoval Cc: linux-block@vger.kernel.org, Bart Van Assche Subject: [PATCH v2 1/4] common/multipath-over-rdma: Fix expand_ipv6_addr() Date: Fri, 13 Dec 2019 09:32:29 -0500 Message-Id: <20191213143232.29899-2-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1.735.g03f4e72817-goog In-Reply-To: <20191213143232.29899-1-bvanassche@acm.org> References: <20191213143232.29899-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org For IPv6 address ::1, instead of returning 0:0000:0000:0000:0000:0000:0000:0000:0001, return 0000:0000:0000:0000:0000:0000:0000:0001. Signed-off-by: Bart Van Assche --- common/multipath-over-rdma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma index 545a81e8c18e..15f296ef2ab7 100644 --- a/common/multipath-over-rdma +++ b/common/multipath-over-rdma @@ -61,7 +61,7 @@ get_ipv4_addr() { # Convert e.g. ::1 into 0000:0000:0000:0000:0000:0000:0000:0001. expand_ipv6_addr() { - awk -F : 'BEGIN{left=1} { for(i=1;i<=NF;i++) { a=substr("0000", 1+length($i)) $i; if ($i == "") left=0; else if (left) pre = pre ":" a; else suf = suf ":" a }; mid=substr(":0000:0000:0000:0000:0000:0000:0000:0000", (pre!="")+length(pre)+length(suf)); print substr(pre,2) mid suf}' + awk -F : '{ left=1; for(i=1;i<=NF;i++) { a=substr("0000", 1+length($i)) $i; if ($i == "") left=0; else if (left) pre = pre ":" a; else suf = suf ":" a }; mid=substr("0000:0000:0000:0000:0000:0000:0000:0000", (pre=="")+length(pre)+length(suf)); print substr(pre,2) mid suf}' } get_ipv6_addr() { From patchwork Fri Dec 13 14:32:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11290651 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2CA4B18B6 for ; Fri, 13 Dec 2019 20:37:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DEEA024754 for ; Fri, 13 Dec 2019 20:37:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727730AbfLMOdF (ORCPT ); Fri, 13 Dec 2019 09:33:05 -0500 Received: from mail-il1-f194.google.com ([209.85.166.194]:34295 "EHLO mail-il1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727610AbfLMOdE (ORCPT ); Fri, 13 Dec 2019 09:33:04 -0500 Received: by mail-il1-f194.google.com with SMTP id w13so2248502ilo.1 for ; Fri, 13 Dec 2019 06:33:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fZuM0OMnnuVK635Locm2PXONrFxTzuYB2o0guTYaPaU=; b=U48AVDMJdIkrxBiVJ3d0UkRp3ySuJmqZDoCq8JLcE51bMSov3EToyzbA6BVKU8R92C CQDwDITod/BjE/xVNa9ihLfYv6vmuhylsCnXp/NrciBtQslbtPv4QKodebgk2puDILK8 C6vY0L/hF0X721+MsRpK3sWk057cvWNJBSPM84b0mLOG+wPjJNcw7FZ6mWOmUby6J4xC QGyDQeknC7xS9YeFjvwnnk3zIfBmZ3CLpZBed+zISjjZo0bzzvkp8EHnx1mwZIKryNAb hP6cLzWUBiDApCXurVAG1EeSp/m39GYgD42lHkDwH2E/7D4JpFZj5AblHEaWpi02B6gr rJ0A== X-Gm-Message-State: APjAAAWxPvYx418GFA9O0P9wX361KvamEnX74T0G4QABFMSd1BPVR8lN fkxXjgxtSwxEM2JBLeucjM8= X-Google-Smtp-Source: APXvYqyhJkIDxMyAIelzJgxjYiZmQfMp2IOgatJQlSMgHe8VAMchyizAuYYhOKJLJ8gFgBwGvha2xQ== X-Received: by 2002:a92:8fd2:: with SMTP id r79mr13919838ilk.165.1576247584191; Fri, 13 Dec 2019 06:33:04 -0800 (PST) Received: from bvanassche-glaptop.ka.ltv ([75.104.68.105]) by smtp.gmail.com with ESMTPSA id i79sm2785026ild.6.2019.12.13.06.32.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Dec 2019 06:33:03 -0800 (PST) From: Bart Van Assche To: Omar Sandoval Cc: linux-block@vger.kernel.org, Bart Van Assche Subject: [PATCH v2 2/4] common/multipath-over-rdma: Rename two functions Date: Fri, 13 Dec 2019 09:32:30 -0500 Message-Id: <20191213143232.29899-3-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1.735.g03f4e72817-goog In-Reply-To: <20191213143232.29899-1-bvanassche@acm.org> References: <20191213143232.29899-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Since the meaning of this functions will change, make sure that the function name will match the new meaning. Signed-off-by: Bart Van Assche --- common/multipath-over-rdma | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma index 15f296ef2ab7..9f645f759d2d 100644 --- a/common/multipath-over-rdma +++ b/common/multipath-over-rdma @@ -409,7 +409,7 @@ has_rdma_rxe() { } # Load the rdma_rxe kernel module and associate it with all network interfaces. -start_rdma_rxe() { +start_soft_rdma() { { modprobe rdma_rxe || return $? ( @@ -425,7 +425,7 @@ start_rdma_rxe() { # Dissociate the rdma_rxe kernel module from all network interfaces and unload # the rdma_rxe kernel module. -stop_rdma_rxe() { +stop_soft_rdma() { ( cd /sys/class/net && for i in *; do @@ -608,7 +608,7 @@ unload_null_blk() { } setup_rdma() { - start_rdma_rxe + start_soft_rdma ( echo "RDMA interfaces:" cd /sys/class/infiniband && @@ -627,7 +627,7 @@ teardown_uncond() { killall -9 multipathd >&/dev/null rm -f /etc/multipath.conf stop_target - stop_rdma_rxe + stop_soft_rdma unload_null_blk } From patchwork Fri Dec 13 14:32:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11290653 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 59CF418B8 for ; Fri, 13 Dec 2019 20:37:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1842C2474C for ; Fri, 13 Dec 2019 20:37:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727610AbfLMOdL (ORCPT ); Fri, 13 Dec 2019 09:33:11 -0500 Received: from mail-il1-f193.google.com ([209.85.166.193]:45971 "EHLO mail-il1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727673AbfLMOdL (ORCPT ); Fri, 13 Dec 2019 09:33:11 -0500 Received: by mail-il1-f193.google.com with SMTP id p8so2191582iln.12 for ; Fri, 13 Dec 2019 06:33:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=drl3Eju3FzWAdVgHEQUgqm6x19DdmauK5QkwxXRH7qI=; b=qFogdp2103g72IypUbnESq0qcPXLrM9YfTdEwo7I9Op0/Xr2NzZ3peG/R+z+kNy2QV xhhKa+6bs2QTk9/LS1On6EEITEXwa0/yEfQymr910QieKBG5dlbEe2tSRyBMrgJ3PaAz CVRm8BlQztXhUOZQ6ckMULGpbvp6o13E+D1MpKoD/JFSSuJLfPFi55YUgiAXqyBTqIlf /czMaaKnWPyL1iWgmc1RiRqPsQnvNQh1DUsBiAR+MFiXoAouF0EyAIHjhrvAZ+tz+gcl lQXi0aJpV2WzFQ8+Cb0szORL7Lkk+/kWWwVpM9i14HFf4OUX60CDdviauzmVendigwpn Wi4g== X-Gm-Message-State: APjAAAWP3vnHLiACqwkGvtztRRyygTPYhaZIR3LiH+VIlZ0oLZHxLfTn LLPhkDiul6W7O85BmhjU5D9XPkzZ X-Google-Smtp-Source: APXvYqxTsyVGhP+fRyauLG511LHf1Gl0gQMgCdAXTexTDq4ZmPXcNAIO2sw1J68ROCXZ6nIHYE1SNw== X-Received: by 2002:a92:81cb:: with SMTP id q72mr13376707ilk.275.1576247589775; Fri, 13 Dec 2019 06:33:09 -0800 (PST) Received: from bvanassche-glaptop.ka.ltv ([75.104.68.105]) by smtp.gmail.com with ESMTPSA id i79sm2785026ild.6.2019.12.13.06.33.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Dec 2019 06:33:09 -0800 (PST) From: Bart Van Assche To: Omar Sandoval Cc: linux-block@vger.kernel.org, Bart Van Assche Subject: [PATCH v2 3/4] common/multipath-over-rdma, tests/srp: Make it easy to use siw instead of rdma_rxe Date: Fri, 13 Dec 2019 09:32:31 -0500 Message-Id: <20191213143232.29899-4-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1.735.g03f4e72817-goog In-Reply-To: <20191213143232.29899-1-bvanassche@acm.org> References: <20191213143232.29899-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Make all_primary_gids() return GIDs with zero suffix since SoftiWARP GIDs have such a suffix. Add SoftiWARP support in start_soft_rdma() and stop_soft_rdma(). Make do_rdma_cm_login() submit the source IP address and scope ID to the SRP initiator driver since that information is essential to establish an IPv6 connection between link-local addresses. Iterate over RDMA ports instead of UMAD device nodes in log_in() since no UMAD device node is associated with SoftiWARP ports. In start_lio_srpt(), use the GID format to identify SoftiWARP ports since the GID suffix for these ports is zero. Signed-off-by: Bart Van Assche --- common/multipath-over-rdma | 48 ++++++++++++++++--- tests/srp/rc | 98 ++++++++++++++++++++++---------------- 2 files changed, 99 insertions(+), 47 deletions(-) diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma index 9f645f759d2d..40efc4b3aa2e 100644 --- a/common/multipath-over-rdma +++ b/common/multipath-over-rdma @@ -11,6 +11,7 @@ filesystem_type=ext4 fio_aux_path=/tmp/fio-state-files memtotal=$(sed -n 's/^MemTotal:[[:blank:]]*\([0-9]*\)[[:blank:]]*kB$/\1/p' /proc/meminfo) max_ramdisk_size=$((1<<25)) +use_siw= ramdisk_size=$((memtotal*(1024/16))) # in bytes if [ $ramdisk_size -gt $max_ramdisk_size ]; then ramdisk_size=$max_ramdisk_size @@ -389,9 +390,13 @@ function mountpoint() { # All primary RDMA GIDs all_primary_gids() { - find /sys/devices -name infiniband | while read -r p; do - cat "$p"/*/ports/*/gids/0 - done | grep -v ':0000:0000:0000:0000$' + local gid p + + for p in /sys/class/infiniband/*/ports/*/gids/0; do + gid="$(<"$p")" + [ "$gid" != 0000:0000:0000:0000:0000:0000:0000:0000 ] && + echo "$gid" + done } # Check whether or not an rdma_rxe instance has been associated with network @@ -408,24 +413,40 @@ has_rdma_rxe() { return 1 } -# Load the rdma_rxe kernel module and associate it with all network interfaces. +# Load the rdma_rxe or siw kernel module and associate it with all network +# interfaces. start_soft_rdma() { { + if [ -n "$use_siw" ]; then + modprobe siw || return $? + ( + cd /sys/class/net && + for i in *; do + [ -e "$i" ] || continue + [ -e "/sys/class/infiniband/${i}_siw" ] && continue + rdma link add "${i}_siw" type siw netdev "$i" || + echo "Failed to bind the siw driver to $i" + done + ) + else modprobe rdma_rxe || return $? ( cd /sys/class/net && for i in *; do if [ -e "$i" ] && ! has_rdma_rxe "$i"; then - echo "$i" > /sys/module/rdma_rxe/parameters/add + echo "$i" > /sys/module/rdma_rxe/parameters/add || + echo "Failed to bind the rdma_rxe driver to $i" fi done ) + fi } >>"$FULL" } -# Dissociate the rdma_rxe kernel module from all network interfaces and unload -# the rdma_rxe kernel module. +# Dissociate the rdma_rxe or siw kernel module from all network interfaces and +# unload the rdma_rxe kernel module. stop_soft_rdma() { + { ( cd /sys/class/net && for i in *; do @@ -439,6 +460,19 @@ stop_soft_rdma() { echo "Unloading rdma_rxe failed" return 1 fi + ( + cd /sys/class/net && + for i in *_siw; do + [ -e "$i" ] || continue + rdma link del "${i}" || + echo "Failed to unbind the siw driver from ${i%_siw}" + done + ) + if ! unload_module siw 10; then + echo "Unloading siw failed" + return 1 + fi + } >>"$FULL" } # /dev/sd... device node assigned to the scsi_debug kernel module. diff --git a/tests/srp/rc b/tests/srp/rc index a1bc09b496ec..2738c8f6a4e5 100755 --- a/tests/srp/rc +++ b/tests/srp/rc @@ -138,30 +138,51 @@ do_ib_cm_login() { done } +rdma_dev_to_net_dev() { + local b d rdma_dev=$1 + + b=/sys/class/infiniband/$rdma_dev/parent + if [ -e "$b" ]; then + echo "$(<"$b")" + else + echo "${rdma_dev%_siw}" + fi +} + # Tell the SRP initiator to log in to an SRP target using the RDMA/CM. # Arguments: $1: SRP target IOC GUID; $2: IB device to log in to; $3: additional # login parameters. do_rdma_cm_login() { - local a b add_param d dest dests ibdev ioc_guid pd + local a b c add_param d dest dests ibdev ioc_guid params ioc_guid=$1 ibdev=$2 add_param=$3 - pd=/sys/class/infiniband/$ibdev/parent - if [ -e "$pd" ]; then - d=$(<"$pd") + if d=$(rdma_dev_to_net_dev "$ibdev"); then a=$(get_ipv4_addr "$(basename "$d")") b=$(get_ipv6_addr "$(basename "$d")") fi echo "Interface $d: IPv4 $a IPv6 $b" >>"$FULL" [ -n "$a$b" ] || return 1 + b=${b}%$(<"/sys/class/net/$d/ifindex") dests=() - [ -n "$a" ] && dests+=("${a}:${srp_rdma_cm_port}") - [ -n "$b" ] && dests+=("[${b}]:${srp_rdma_cm_port}") + for c in $a; do + dests+=("${c}:${srp_rdma_cm_port}") + done + for c in $b; do + dests+=("[${c}]:${srp_rdma_cm_port}") + done for dest in "${dests[@]}"; do + src=${dest%:*} for p in "/sys/class/infiniband_srp/srp-${2}-"*; do [ -e "$p" ] || continue - srp_single_login "id_ext=$ioc_guid,ioc_guid=$ioc_guid,dest=$dest,$add_param" "$p/add_target" + ibdev=$(<"$p/ibdev") + port=$(<"$p/port") + gid=$(<"/sys/class/infiniband/$ibdev/ports/$port/gids/0") + gid=${gid//:} + gid_pfx=${gid:0:16} + params+="id_ext=$ioc_guid,initiator_ext=$gid_pfx,ioc_guid=$ioc_guid,src=$src,dest=$dest,$add_param" + srp_single_login "${params}" "$p/add_target" done done } @@ -201,11 +222,11 @@ log_in() { ioc_guid=$(>"$FULL" for p in /sys/class/infiniband/*/ports/*; do [ -e "$p" ] || continue - link_layer=$(<"$p/link_layer") - case "$link_layer" in - InfiniBand) - guid=$(<"$p/gids/0") - gid=$(echo "${guid}" | sed 's/^fe8/0x000/;s/://g') - guid=${guid#fe80:0000:0000:0000:} - [ "$guid" = "0000:0000:0000:0000" ] && continue - ini_guids+=("$guid") - ini_gids+=("$gid") - ;; - *) - d=$(<"$(dirname "$(dirname "$p")")/parent") - for b in $(get_ipv4_addr "$d") \ - $(get_ipv6_addr "$d"|expand_ipv6_addr); do - ini_guids+=("$b") - ini_gids+=("$b") - done - ;; - esac + gid=$(<"$p/gids/0") + if [ "${gid#fe8}" != "$gid" ]; then + gid=${gid#fe80:0000:0000:0000:} + ini_ids+=("$gid") + else + gid="0x${gid//:}" + ini_ids+=("$gid") + fi + d=$(rdma_dev_to_net_dev "$(basename "$(dirname "$(dirname "$p")")")") + for b in $(get_ipv4_addr "$d") \ + $(get_ipv6_addr "$d"|expand_ipv6_addr); do + ini_ids+=("$b") + done done + echo "ini_ids=${ini_ids[*]}" >>"$FULL" mount_configfs || return $? modprobe target_core_mod || return $? modprobe target_core_iblock || return $? @@ -519,10 +540,7 @@ start_lio_srpt() { echo "${srp_rdma_cm_port}" > discovery_auth/rdma_cm_port || return $? fi - configure_target_ports "${target_guids[@]}" -- "${ini_guids[@]}" || { - echo "Retrying with old port name format" - configure_target_ports "${target_gids[@]}" -- "${ini_gids[@]}" - } + configure_target_ports "${target_ids[@]}" -- "${ini_ids[@]}" ) } From patchwork Fri Dec 13 14:32:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bart Van Assche X-Patchwork-Id: 11290655 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 87CAD6C1 for ; Fri, 13 Dec 2019 20:37:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 45DED2474C for ; Fri, 13 Dec 2019 20:37:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727709AbfLMOdQ (ORCPT ); Fri, 13 Dec 2019 09:33:16 -0500 Received: from mail-io1-f51.google.com ([209.85.166.51]:36198 "EHLO mail-io1-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727673AbfLMOdP (ORCPT ); Fri, 13 Dec 2019 09:33:15 -0500 Received: by mail-io1-f51.google.com with SMTP id a22so2600808ios.3 for ; Fri, 13 Dec 2019 06:33:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dE37kZUC3yYiYi/MLsMUvkcOAr9NO2+1TohR9l9Xusg=; b=Jz0UdQnHwC1DBbjJdGtXD1x4T6g+mR5QtI2nF+/sy41YPv78LCmvSI5VW6unr+NT3Y +rbDtjaeiD7nZOJgcr3HYLZdVkQLQu6ZT6mAq6X2/uyXHplg+boKcgHZSVScqH/mYCj2 R15bExh+yfifR+PXtxho/t7eQdLXXS+AX3nJpkkVPkX/uDO4XG1u2yo/p7g1rUw0ECox 0O26oDUYliotpyulkdymGULdUcBmUODU2zcbsPeH58kilKS017nf7n2cXab6BfCVEfKl 61kkzUZ2SF54RZeAg3FFEO9zisECojvL71k2rGwdxLIkV0HubagVBV5OUi1SPkBzklPD ENPQ== X-Gm-Message-State: APjAAAVfwhSY+593qA5ROPETP/NpncHXGVg+FZq3X6VpleQcmj6GQ/3F oJn5Dh/iyNDPLiPb0BYPaBSCsKie X-Google-Smtp-Source: APXvYqzK2yL0Af11dWFlkN3AITkZ+rQo5pIbefPkNucukW2cRN0o09PpPvkcgFc6vgVM3E2hmfh0ng== X-Received: by 2002:a02:2385:: with SMTP id u127mr13304262jau.127.1576247595210; Fri, 13 Dec 2019 06:33:15 -0800 (PST) Received: from bvanassche-glaptop.ka.ltv ([75.104.68.105]) by smtp.gmail.com with ESMTPSA id i79sm2785026ild.6.2019.12.13.06.33.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Dec 2019 06:33:14 -0800 (PST) From: Bart Van Assche To: Omar Sandoval Cc: linux-block@vger.kernel.org, Bart Van Assche Subject: [PATCH v2 4/4] tests/srp/015: Add a test that uses the SoftiWARP (siw) driver Date: Fri, 13 Dec 2019 09:32:32 -0500 Message-Id: <20191213143232.29899-5-bvanassche@acm.org> X-Mailer: git-send-email 2.24.1.735.g03f4e72817-goog In-Reply-To: <20191213143232.29899-1-bvanassche@acm.org> References: <20191213143232.29899-1-bvanassche@acm.org> MIME-Version: 1.0 Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Recently support has been added in the SRP initiator and target drivers for the SoftiWARP driver. Add a test for SRP over SoftiWARP. Signed-off-by: Bart Van Assche --- common/rc | 28 ++++++++++++++++++++++++++++ tests/srp/015 | 45 +++++++++++++++++++++++++++++++++++++++++++++ tests/srp/015.out | 2 ++ 3 files changed, 75 insertions(+) create mode 100755 tests/srp/015 create mode 100644 tests/srp/015.out diff --git a/common/rc b/common/rc index 87b1e0718382..63b29be7ba74 100644 --- a/common/rc +++ b/common/rc @@ -87,6 +87,21 @@ _have_program() { return 1 } +# Check whether the iproute2 snapshot is greater than or equal to $1. +_have_iproute2() { + local snapshot + + if ! snapshot=$(ip -V | sed 's/ip utility, iproute2-ss//'); then + SKIP_REASON="ip utility not found" + return 1 + fi + if [ "$snapshot" -lt "$1" ]; then + SKIP_REASON="ip utility too old" + return 1 + fi + return 0 +} + _have_src_program() { if [[ ! -x "$SRCDIR/$1" ]]; then SKIP_REASON="$1 was not built; run \`make\`" @@ -134,6 +149,19 @@ _have_kernel_option() { return 1 } +# Check whether the version of the running kernel is greater than or equal to +# $1.$2.$3 +_have_kver() { + local d=$1 e=$2 f=$3 + + IFS='.' read -r a b c < <(uname -r | sed 's/-.*//') + if [ $((a * 65536 + b * 256 + c)) -lt $((d * 65536 + e * 256 + f)) ]; + then + SKIP_REASON="Kernel version too old" + return 1 + fi +} + _have_tracefs() { stat /sys/kernel/debug/tracing/trace > /dev/null 2>&1 if ! findmnt -t tracefs /sys/kernel/debug/tracing >/dev/null; then diff --git a/tests/srp/015 b/tests/srp/015 new file mode 100755 index 000000000000..e9769dc8a6a0 --- /dev/null +++ b/tests/srp/015 @@ -0,0 +1,45 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0+ +# Copyright 2019 Google LLC + +. tests/srp/rc + +DESCRIPTION="File I/O on top of multipath concurrently with logout and login (mq) using the SoftiWARP (siw) driver" +TIMED=1 + +requires() { + _have_modules siw + _have_kver 5 5 + # See also commit 4336c5821a7b ("rdma: add 'link add/delete' commands"). + _have_iproute2 190404 +} + +test_disconnect_repeatedly() { + local dev fio_status m + + use_blk_mq y y || return $? + dev=$(get_bdev 0) || return $? + m=$(mountpoint 0) || return $? + create_filesystem "$dev" || return $? + mount_and_check "$dev" "$m" || return $? + # shellcheck disable=SC2064 + trap "unmount_and_check $m" RETURN + simulate_network_failure_loop "$dev" "$TIMEOUT" & + run_fio --verify=md5 --rw=randwrite --bs=4K --loops=$((10**6)) \ + --iodepth=64 --group_reporting --sync=1 --direct=1 \ + --ioengine=libaio --directory="$m" --runtime="${TIMEOUT}" \ + --name=data-integrity-test-mq --thread --numjobs=16 \ + --output="${RESULTS_DIR}/srp/fio-output-015.txt" \ + >>"$FULL" + fio_status=$? + wait + log_in + return $fio_status +} + +test() { + : "${TIMEOUT:=30}" + trap 'trap "" EXIT; teardown' EXIT + use_siw=1 + setup && test_disconnect_repeatedly && echo Passed +} diff --git a/tests/srp/015.out b/tests/srp/015.out new file mode 100644 index 000000000000..5e25d8e8672d --- /dev/null +++ b/tests/srp/015.out @@ -0,0 +1,2 @@ +Configured SRP target driver +Passed