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()
|
||||
{
|
||||
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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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}')
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 &
|
||||
|
@ -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} &
|
||||
|
Loading…
x
Reference in New Issue
Block a user