All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bart.vanassche@wdc.com>
To: Omar Sandoval <osandov@osandov.com>
Cc: Omar Sandoval <osandov@fb.com>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: Re: [PATCH blktests v2 3/3] Add tests for the SRP initiator and target drivers
Date: Fri, 29 Jun 2018 09:13:53 -0700	[thread overview]
Message-ID: <90b8682d-7010-5f57-9ecd-3a4c733ccc18@wdc.com> (raw)
In-Reply-To: <20180628234305.GB14953@vader>

On 06/28/18 16:43, Omar Sandoval wrote:
> On Wed, Jun 27, 2018 at 02:49:08PM -0700, Bart Van Assche wrote:
> [ ... ]
> srp/002 (File I/O on top of multipath concurrently with logout and login (mq)) [failed]
> runtime  6.680s  ...  6.640s
>      --- tests/srp/002.out       2018-06-28 15:18:36.537169282 -0700
>      +++ results/nodev/srp/002.out.bad   2018-06-28 16:21:59.930603931 -0700
>      @@ -3,5 +3,4 @@
>       Unloaded the rdma_rxe kernel module
>       Configured SRP target driver
>       Unloaded the ib_srp kernel module
>      -Unloaded the ib_srpt kernel module
>      -Unloaded the rdma_rxe kernel module
>      +/dev/disk/by-id/dm-uuid-mpath-3600140572616d6469736b31000000000: not found
> 
> And everything else fails like srp/002.

I think that indicates a problem with the multipathing software on your 
setup. Was multipathd running? Had the proper multipath configuration 
(/etc/multipath.conf) been provided? Was multipathing enabled in the 
kernel config?

>> +Make sure that at least the following symbols are set in the kernel config:
>> +
>> +* CONFIG_BLK_DEV_DM
>> +* CONFIG_BLK_DEV_NULL_BLK
>> +* CONFIG_BLK_DEV_RAM
>> +* CONFIG_BLK_DEV_SD
>> +* CONFIG_CHR_DEV_SG
>> +* CONFIG_DM_MULTIPATH
>> +* CONFIG_DM_MULTIPATH_QL
>> +* CONFIG_DM_MULTIPATH_ST
>> +* CONFIG_INFINIBAND
>> +* CONFIG_INFINIBAND_ADDR_TRANS
>> +* CONFIG_INFINIBAND_IPOIB
>> +* CONFIG_INFINIBAND_SRP
>> +* CONFIG_INFINIBAND_SRPT
>> +* CONFIG_INFINIBAND_USER_ACCESS
>> +* CONFIG_INFINIBAND_USER_MAD
>> +* CONFIG_INFINIBAND_USER_MEM
>> +* CONFIG_NVME_CORE
>> +* CONFIG_NVME_RDMA
>> +* CONFIG_NVME_TARGET
>> +* CONFIG_NVME_TARGET_RDMA
>> +* CONFIG_RDMA_RXE
>> +* CONFIG_SCSI_DEBUG
>> +* CONFIG_SCSI_DH_ALUA
>> +* CONFIG_SCSI_DH_EMC
>> +* CONFIG_SCSI_DH_RDAC
>> +* CONFIG_SCSI_SRP_ATTRS
>> +* CONFIG_TARGET_CORE
>> +* CONFIG_TCM_FILEIO
>> +* CONFIG_TCM_IBLOCK
> 
> Why don't all of these have _have_module checks in
> group_requires()/requires()?

Adding such checks sounds like a good idea to me. I will look into this.

>> +For the SRP tests, merge or copy the following into /etc/multipathd.conf and
>> +restart multipathd:
>> +
>> +<span></span>
>> +
>> +    defaults {
>> +        user_friendly_names     yes
>> +        queue_without_daemon    no
>> +    }
>> +    devices {
>> +        device {
>> +            vendor       "LIO-ORG|SCST_BIO|FUSIONIO"
>> +            product      ".*"
>> +            features     "1 queue_if_no_path"
>> +            path_checker tur
>> +        }
>> +    }
>> +    blacklist {
>> +        device {
>> +            vendor  "ATA"
>> +        }
>> +        device {
>> +            vendor  "QEMU"
>> +        }
>> +        device {
>> +            vendor  "Linux"
>> +            product "scsi_debug"
>> +        }
>> +        devnode     "^nullb.*"
>> +    }
>> +    blacklist_exceptions {
>> +        property        ".*"
>> +        devnode         "^nvme"
>> +    }
>> +
> 
> Does multipathd have any way to run with a custom config file, so we can
> just start it on demand instead of having to do this?

multipathd can be started on demand. I will look into this.

> [snip]
> 
>> diff --git a/tests/srp/functions b/tests/srp/functions
> 
> This stuff should just go in tests/srp/rc.

OK.

>> +vdev_path=(/dev/ram0 /dev/ram1 "$(scsi_debug_dev_path)")
>> +scsi_serial=(ramdisk1 ramdisk2 scsidbg)
>> +memtotal=$(sed -n 's/^MemTotal:[[:blank:]]*\([0-9]*\)[[:blank:]]*kB$/\1/p' /proc/meminfo)
>> +max_ramdisk_size=$((1<<25))
>> +if have_brd; then
>> +    ramdisk_size=$((memtotal*(1024/16)))  # in bytes
>> +    if [ $ramdisk_size -gt $max_ramdisk_size ]; then
>> +	ramdisk_size=$max_ramdisk_size
>> +    fi
>> +elif [ -e /sys/class/block/ram0 ]; then
>> +    # in bytes
>> +    ramdisk_size=$(($(</sys/class/block/ram0/size) * 512))
>> +else
>> +	echo "Error: could not find /dev/ram0"
>> +	exit 1
>> +fi
> 
> If brd isn't enabled, I get hilarity:
> 
> $ sudo ./check srp
> ./check: line 451: tests/Error: could not find /dev/rc: No such file or directory
> ./check: line 410: tests/Error: could not find /dev/ram0
> : No such file or directory
> 
> At the very least, this check should be happening in group_requires(),
> and brd should just be mandatory. Or even better, is there a reason we
> can't use the persistent mode of null_blk instead of brd?

Development of the SRP test software started before null_blk had a 
persistent mode. Anyway, I will see what needs to change to switch to 
null_blk.

>> +	# Load the I/O scheduler kernel modules
>> +	(
>> +		cd "/lib/modules/$(uname -r)/kernel/block" &&
>> +		    for m in *.ko; do
>> +			    modprobe "${m%.ko}"
>> +		    done
>> +	)
> 
> All of my schedulers are built in, so I get:
> 
> +modprobe: FATAL: Module * not found in directory /lib/modules/4.18.0-rc2
> 
> This should handle that case and go in check instead of here.

OK.

>> +	if [ -d /sys/kernel/debug/dynamic_debug ]; then
>> +		for m in ; do
>> +			echo "module $m +pmf" >/sys/kernel/debug/dynamic_debug/control
>> +		done
>> +	fi
>> +
>> +	start_target
>> +}
>> diff --git a/tests/srp/rc b/tests/srp/rc
>> new file mode 100755
>> index 000000000000..f5de9610dc2b
>> --- /dev/null
>> +++ b/tests/srp/rc
>> @@ -0,0 +1,54 @@
>> +#!/bin/bash
>> +#
>> +# Copyright (c) 2018 Western Digital Corporation or its affiliates
>> +#
>> +# This program is free software; you can redistribute it and/or
>> +# modify it under the terms of the GNU General Public License
>> +# as published by the Free Software Foundation; either version 2
>> +# of the License, or (at your option) any later version.
>> +#
>> +# This program is distributed in the hope that it will be useful,
>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> +# GNU General Public License for more details.
>> +#
>> +# You should have received a copy of the GNU General Public License
>> +# along with this program; if not, write to the Free Software
>> +# Foundation, Inc.
>> +
>> +. common/rc
>> +
>> +is_lio_configured() {
>> +	(
>> +		cd /sys/kernel/config/target >&/dev/null || return 1
>> +		for e in target/* core/fileio* core/iblock* core/pscsi*; do
>> +			[ -d "$e" ] && [ "$e" != core ] && return 0
>> +		done
>> +	)
>> +
>> +	return 1
>> +}
>> +
>> +group_requires() {
>> +	_have_configfs || return $?
>> +	if is_lio_configured; then
>> +		echo "Error: LIO must be unloaded before the SRP tests are run"
> 
> This should set SKIP_REASON instead of echoing.
> 
>> +		return 1
>> +	fi
>> +	_have_module dm_multipath || return $?
>> +	_have_module ib_srp || return $?
>> +	_have_module ib_srpt || return $?
>> +	_have_module sd_mod || return $?
>> +	_have_program mkfs.ext4 || return $?
>> +	_have_program mkfs.xfs || return $?
>> +	_have_program multipath || return $?
>> +	_have_program multipathd || return $?
>> +	_have_program pidof || return $?
>> +	_have_program sg_reset || return $?
>> +	_have_root || return $?
>> +
>> +	if ! pidof multipathd >/dev/null; then
>> +		echo "Error: multipathd is not running"
> 
> Same, set SKIP_REASON.

OK, I will make these changes.

Bart.

  reply	other threads:[~2018-06-29 16:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-27 21:49 [PATCH blktests v2 0/3] Add SRP initiator driver tests Bart Van Assche
2018-06-27 21:49 ` [PATCH blktests v2 1/3] src/Makefile: Rename $(TARGETS) into $(C_TARGETS) Bart Van Assche
2018-06-28  6:41   ` Johannes Thumshirn
2018-06-27 21:49 ` [PATCH blktests v2 2/3] Add the discontiguous-io test program Bart Van Assche
2018-06-28  6:42   ` Johannes Thumshirn
2018-06-27 21:49 ` [PATCH blktests v2 3/3] Add tests for the SRP initiator and target drivers Bart Van Assche
2018-06-28 23:43   ` Omar Sandoval
2018-06-29 16:13     ` Bart Van Assche [this message]
2018-07-03 19:49       ` Omar Sandoval
2018-07-03 19:50         ` Omar Sandoval
2018-07-03 21:39           ` Omar Sandoval
2018-07-04  5:59             ` Hannes Reinecke
2018-07-04 16:24             ` Bart Van Assche
2018-07-06 21:21               ` Omar Sandoval
2018-07-06 23:03                 ` Omar Sandoval
2018-07-06 23:07                   ` Bart Van Assche
2018-07-06 23:10                     ` Omar Sandoval
2018-07-06 23:15                       ` Omar Sandoval
2018-07-09  6:06                         ` Hannes Reinecke
2018-07-09 22:57                           ` Bart Van Assche

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=90b8682d-7010-5f57-9ecd-3a4c733ccc18@wdc.com \
    --to=bart.vanassche@wdc.com \
    --cc=linux-block@vger.kernel.org \
    --cc=osandov@fb.com \
    --cc=osandov@osandov.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.