test/iscsi_tgt: make sure iscsi devices are ready

We have no guaranty that iscsiadm -m session shows all required iscsi
devices at some point of time after login. It may cause that not all
devices are used in further tests (e.g. in fio).

This patch allows to wait for a certain number of sessions after login.

Change-Id: I868cb8f1235dd04d88572bc8518e97de99a2c5e6
Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/458236
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Tomasz Kulasek 2019-06-17 09:23:20 +02:00 committed by Ben Walker
parent 0972838f83
commit a44c743417
11 changed files with 41 additions and 13 deletions

View File

@ -671,13 +671,13 @@ function waitforblk_disconnect()
function waitforfile()
{
local i=0
while [ ! -f $1 ]; do
while [ ! -e $1 ]; do
[ $i -lt 200 ] || break
i=$[$i+1]
sleep 0.1
done
if [ ! -f $1 ]; then
if [ ! -e $1 ]; then
return 1
fi

View File

@ -64,6 +64,21 @@ function iscsitestinit() {
fi
}
function waitforiscsidevices() {
local num=$1
for ((i=1; i<=20; i++)); do
n=$( iscsiadm -m session -P 3 | grep "Attached scsi disk sd[a-z]*" | wc -l )
if [ $n -ne $num ]; then
sleep 0.1
else
return 0
fi
done
return 1
}
function iscsitestfini() {
if [ "$1" == "iso" ]; then
if [ ! -z "$2" ]; then

View File

@ -14,10 +14,11 @@ function node_login_fio_logout() {
iscsiadm -m node -p $TARGET_IP:$ISCSI_PORT -o update -n node.conn[0].iscsi.$arg
done
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1
$fio_py -p iscsi -i 512 -d 1 -t write -r 2
$fio_py -p iscsi -i 512 -d 1 -t read -r 2
iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
sleep 1
waitforiscsidevices 0
}
function iscsi_header_digest_test() {

View File

@ -42,12 +42,11 @@ sleep 1
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1
trap 'for new_dir in $(dir -d /mnt/*dir); do umount $new_dir; rm -rf $new_dir; done; \
iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT
sleep 1
echo "Test error injection"
$rpc_py bdev_inject_error EE_Malloc0 'all' 'failure' -n 1000
@ -77,6 +76,7 @@ fi
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1
devs=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')

View File

@ -64,15 +64,15 @@ sleep 1
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1
trap "remove_backends; umount /mnt/device; rm -rf /mnt/device; iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1" SIGINT SIGTERM EXIT
sleep 1
mkdir -p /mnt/device
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
waitforfile /dev/$dev
parted -s /dev/$dev mklabel msdos
parted -s /dev/$dev mkpart primary '0%' '100%'
sleep 1
@ -91,10 +91,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
umount /mnt/device
iscsiadm -m node --logout
sleep 1
waitforiscsidevices 0
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
sleep 1
waitforiscsidevices 1
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
waitforfile /dev/${dev}1
mount -o rw /dev/${dev}1 /mnt/device
if [ -f "/mnt/device/test" ]; then
echo "File existed."
@ -112,10 +115,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
umount /mnt/device
iscsiadm -m node --logout
sleep 1
waitforiscsidevices 0
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
sleep 1
waitforiscsidevices 1
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
waitforfile /dev/${dev}1
mount -o rw /dev/${dev}1 /mnt/device
if [ -f "/mnt/device/aaa" ]; then

View File

@ -92,6 +92,7 @@ sleep 1
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices 1
trap "iscsicleanup; killprocess $pid; iscsitestfini $1 $2; delete_tmp_files; exit 1" SIGINT SIGTERM EXIT

View File

@ -71,6 +71,7 @@ sleep 1
timing_enter discovery
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices $(( $NUM_LVS * $NUM_LVOL ))
timing_exit discovery
timing_enter fio

View File

@ -70,6 +70,7 @@ sleep 1
echo "Logging into iSCSI target."
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices $CONNECTION_NUMBER
echo "Running FIO"
$fio_py -p iscsi -i 131072 -d 64 -t randrw -r 5

View File

@ -20,12 +20,13 @@ iscsi_fio_results="$testdir/perf_output/iscsi_fio.json"
trap "iscsiadm -m node --logout; iscsiadm -m node -o delete; exit 1" ERR SIGTERM SIGABRT
iscsiadm -m discovery -t sendtargets -p $IP_T:$ISCSI_PORT
iscsiadm -m node --login -p $IP_T:$ISCSI_PORT
sleep 1
waitforiscsidevices 1
disks=($(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}'))
for (( i=0; i < ${#disks[@]}; i++ ))
do
filename+=$(printf /dev/%s: "${disks[i]}")
waitforfile $filename
echo noop > /sys/block/${disks[i]}/queue/scheduler
echo "2" > /sys/block/${disks[i]}/queue/nomerges
echo "1024" > /sys/block/${disks[i]}/queue/nr_requests

View File

@ -48,7 +48,8 @@ sleep 1
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
sleep 1
waitforiscsidevices 1
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
$fio_py -p iscsi -i 512 -d 1 -t read -r 60 &

View File

@ -68,6 +68,7 @@ sleep 1
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
waitforiscsidevices $(( $CONNECTION_NUMBER + 1 ))
mkdir -p ${TRACE_TMP_FOLDER}
./app/trace_record/spdk_trace_record -s iscsi -p ${iscsi_pid} -f ${TRACE_RECORD_OUTPUT} -q 1>${TRACE_RECORD_NOTICE_LOG} &