diff --git a/test/common/autotest_common.sh b/test/common/autotest_common.sh index 06b1a2d8b8..19e7192e43 100644 --- a/test/common/autotest_common.sh +++ b/test/common/autotest_common.sh @@ -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 diff --git a/test/iscsi_tgt/common.sh b/test/iscsi_tgt/common.sh index 9fc818b9ef..fb15447f25 100644 --- a/test/iscsi_tgt/common.sh +++ b/test/iscsi_tgt/common.sh @@ -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 diff --git a/test/iscsi_tgt/digests/digests.sh b/test/iscsi_tgt/digests/digests.sh index 40422269ef..54acdff8ce 100755 --- a/test/iscsi_tgt/digests/digests.sh +++ b/test/iscsi_tgt/digests/digests.sh @@ -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() { diff --git a/test/iscsi_tgt/ext4test/ext4test.sh b/test/iscsi_tgt/ext4test/ext4test.sh index 0e3893b744..cfe3a9d200 100755 --- a/test/iscsi_tgt/ext4test/ext4test.sh +++ b/test/iscsi_tgt/ext4test/ext4test.sh @@ -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}') diff --git a/test/iscsi_tgt/filesystem/filesystem.sh b/test/iscsi_tgt/filesystem/filesystem.sh index bc1f8c7cd8..8594631567 100755 --- a/test/iscsi_tgt/filesystem/filesystem.sh +++ b/test/iscsi_tgt/filesystem/filesystem.sh @@ -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 diff --git a/test/iscsi_tgt/fio/fio.sh b/test/iscsi_tgt/fio/fio.sh index b79747dc37..547b267d7c 100755 --- a/test/iscsi_tgt/fio/fio.sh +++ b/test/iscsi_tgt/fio/fio.sh @@ -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 diff --git a/test/iscsi_tgt/lvol/iscsi_lvol.sh b/test/iscsi_tgt/lvol/iscsi_lvol.sh index e8e1d3be15..d9b89eed74 100755 --- a/test/iscsi_tgt/lvol/iscsi_lvol.sh +++ b/test/iscsi_tgt/lvol/iscsi_lvol.sh @@ -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 diff --git a/test/iscsi_tgt/multiconnection/multiconnection.sh b/test/iscsi_tgt/multiconnection/multiconnection.sh index bceff481b4..5a627a3488 100755 --- a/test/iscsi_tgt/multiconnection/multiconnection.sh +++ b/test/iscsi_tgt/multiconnection/multiconnection.sh @@ -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 diff --git a/test/iscsi_tgt/perf/iscsi_initiator.sh b/test/iscsi_tgt/perf/iscsi_initiator.sh index cd5a81a675..500a7d8777 100755 --- a/test/iscsi_tgt/perf/iscsi_initiator.sh +++ b/test/iscsi_tgt/perf/iscsi_initiator.sh @@ -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 diff --git a/test/iscsi_tgt/reset/reset.sh b/test/iscsi_tgt/reset/reset.sh index 9cb3f9b53a..edf2b8909c 100755 --- a/test/iscsi_tgt/reset/reset.sh +++ b/test/iscsi_tgt/reset/reset.sh @@ -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 & diff --git a/test/iscsi_tgt/trace_record/trace_record.sh b/test/iscsi_tgt/trace_record/trace_record.sh index f810f2ea4d..71338f2902 100755 --- a/test/iscsi_tgt/trace_record/trace_record.sh +++ b/test/iscsi_tgt/trace_record/trace_record.sh @@ -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} &