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:
parent
0972838f83
commit
a44c743417
@ -671,13 +671,13 @@ function waitforblk_disconnect()
|
|||||||
function waitforfile()
|
function waitforfile()
|
||||||
{
|
{
|
||||||
local i=0
|
local i=0
|
||||||
while [ ! -f $1 ]; do
|
while [ ! -e $1 ]; do
|
||||||
[ $i -lt 200 ] || break
|
[ $i -lt 200 ] || break
|
||||||
i=$[$i+1]
|
i=$[$i+1]
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ ! -f $1 ]; then
|
if [ ! -e $1 ]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -64,6 +64,21 @@ function iscsitestinit() {
|
|||||||
fi
|
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() {
|
function iscsitestfini() {
|
||||||
if [ "$1" == "iso" ]; then
|
if [ "$1" == "iso" ]; then
|
||||||
if [ ! -z "$2" ]; then
|
if [ ! -z "$2" ]; then
|
||||||
|
@ -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
|
iscsiadm -m node -p $TARGET_IP:$ISCSI_PORT -o update -n node.conn[0].iscsi.$arg
|
||||||
done
|
done
|
||||||
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
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 write -r 2
|
||||||
$fio_py -p iscsi -i 512 -d 1 -t read -r 2
|
$fio_py -p iscsi -i 512 -d 1 -t read -r 2
|
||||||
iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m node --logout -p $TARGET_IP:$ISCSI_PORT
|
||||||
sleep 1
|
waitforiscsidevices 0
|
||||||
}
|
}
|
||||||
|
|
||||||
function iscsi_header_digest_test() {
|
function iscsi_header_digest_test() {
|
||||||
|
@ -42,12 +42,11 @@ sleep 1
|
|||||||
|
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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; \
|
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
|
iscsicleanup; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT
|
||||||
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
echo "Test error injection"
|
echo "Test error injection"
|
||||||
$rpc_py bdev_inject_error EE_Malloc0 'all' 'failure' -n 1000
|
$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 discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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}')
|
devs=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
|
||||||
|
|
||||||
|
@ -64,15 +64,15 @@ sleep 1
|
|||||||
|
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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
|
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
|
mkdir -p /mnt/device
|
||||||
|
|
||||||
dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}')
|
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 mklabel msdos
|
||||||
parted -s /dev/$dev mkpart primary '0%' '100%'
|
parted -s /dev/$dev mkpart primary '0%' '100%'
|
||||||
sleep 1
|
sleep 1
|
||||||
@ -91,10 +91,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
|
|||||||
umount /mnt/device
|
umount /mnt/device
|
||||||
|
|
||||||
iscsiadm -m node --logout
|
iscsiadm -m node --logout
|
||||||
sleep 1
|
waitforiscsidevices 0
|
||||||
iscsiadm -m node --login -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}')
|
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
|
mount -o rw /dev/${dev}1 /mnt/device
|
||||||
if [ -f "/mnt/device/test" ]; then
|
if [ -f "/mnt/device/test" ]; then
|
||||||
echo "File existed."
|
echo "File existed."
|
||||||
@ -112,10 +115,13 @@ for fstype in "ext4" "btrfs" "xfs"; do
|
|||||||
umount /mnt/device
|
umount /mnt/device
|
||||||
|
|
||||||
iscsiadm -m node --logout
|
iscsiadm -m node --logout
|
||||||
sleep 1
|
waitforiscsidevices 0
|
||||||
iscsiadm -m node --login -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}')
|
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
|
mount -o rw /dev/${dev}1 /mnt/device
|
||||||
|
|
||||||
if [ -f "/mnt/device/aaa" ]; then
|
if [ -f "/mnt/device/aaa" ]; then
|
||||||
|
@ -92,6 +92,7 @@ sleep 1
|
|||||||
|
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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
|
trap "iscsicleanup; killprocess $pid; iscsitestfini $1 $2; delete_tmp_files; exit 1" SIGINT SIGTERM EXIT
|
||||||
|
|
||||||
|
@ -71,6 +71,7 @@ sleep 1
|
|||||||
timing_enter discovery
|
timing_enter discovery
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
||||||
|
waitforiscsidevices $(( $NUM_LVS * $NUM_LVOL ))
|
||||||
timing_exit discovery
|
timing_exit discovery
|
||||||
|
|
||||||
timing_enter fio
|
timing_enter fio
|
||||||
|
@ -70,6 +70,7 @@ sleep 1
|
|||||||
echo "Logging into iSCSI target."
|
echo "Logging into iSCSI target."
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
||||||
|
waitforiscsidevices $CONNECTION_NUMBER
|
||||||
|
|
||||||
echo "Running FIO"
|
echo "Running FIO"
|
||||||
$fio_py -p iscsi -i 131072 -d 64 -t randrw -r 5
|
$fio_py -p iscsi -i 131072 -d 64 -t randrw -r 5
|
||||||
|
@ -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
|
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 discovery -t sendtargets -p $IP_T:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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}'))
|
disks=($(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}'))
|
||||||
for (( i=0; i < ${#disks[@]}; i++ ))
|
for (( i=0; i < ${#disks[@]}; i++ ))
|
||||||
do
|
do
|
||||||
filename+=$(printf /dev/%s: "${disks[i]}")
|
filename+=$(printf /dev/%s: "${disks[i]}")
|
||||||
|
waitforfile $filename
|
||||||
echo noop > /sys/block/${disks[i]}/queue/scheduler
|
echo noop > /sys/block/${disks[i]}/queue/scheduler
|
||||||
echo "2" > /sys/block/${disks[i]}/queue/nomerges
|
echo "2" > /sys/block/${disks[i]}/queue/nomerges
|
||||||
echo "1024" > /sys/block/${disks[i]}/queue/nr_requests
|
echo "1024" > /sys/block/${disks[i]}/queue/nr_requests
|
||||||
|
@ -48,7 +48,8 @@ sleep 1
|
|||||||
|
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -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}')
|
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 &
|
$fio_py -p iscsi -i 512 -d 1 -t read -r 60 &
|
||||||
|
@ -68,6 +68,7 @@ sleep 1
|
|||||||
|
|
||||||
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT
|
||||||
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT
|
||||||
|
waitforiscsidevices $(( $CONNECTION_NUMBER + 1 ))
|
||||||
|
|
||||||
mkdir -p ${TRACE_TMP_FOLDER}
|
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} &
|
./app/trace_record/spdk_trace_record -s iscsi -p ${iscsi_pid} -f ${TRACE_RECORD_OUTPUT} -q 1>${TRACE_RECORD_NOTICE_LOG} &
|
||||||
|
Loading…
x
Reference in New Issue
Block a user