11e92d78aSBen Walker#!/usr/bin/env bash 21e92d78aSBen Walker 31e92d78aSBen Walkertestdir=$(readlink -f $(dirname $0)) 410f9391aSBen Walkerrootdir=$(readlink -f $testdir/../../..) 5c9e5d2a6SSeth Howellsource $rootdir/test/common/autotest_common.sh 6b20d0296SJim Harrissource $rootdir/test/iscsi_tgt/common.sh 7da415ae9Sxuhuagensource $rootdir/scripts/common.sh 81e92d78aSBen Walker 903b9841dSSeth Howell# $1 = "iso" - triggers isolation mode (setting up required environment). 1003b9841dSSeth Howell# $2 = test type posix or vpp. defaults to posix. 1103b9841dSSeth Howelliscsitestinit $1 $2 1203b9841dSSeth Howell 13b96f97cfSPawel Wodkowskirpc_py="$rootdir/scripts/rpc.py" 14da415ae9Sxuhuagen# Remove lvol bdevs and stores. 1562209642Schenlo2xfunction remove_backends() { 16da415ae9Sxuhuagen echo "INFO: Removing lvol bdev" 17b5fdf4ecSMaciej Wawryk $rpc_py bdev_lvol_delete "lvs_0/lbd_0" 18da415ae9Sxuhuagen 19da415ae9Sxuhuagen echo "INFO: Removing lvol stores" 204c049618SMaciej Wawryk $rpc_py bdev_lvol_delete_lvstore -l lvs_0 213a56fabcSTomasz Zawadzki 223a56fabcSTomasz Zawadzki echo "INFO: Removing NVMe" 2331e77a73SPawel Kaminski $rpc_py bdev_nvme_detach_controller Nvme0 243a56fabcSTomasz Zawadzki 25da415ae9Sxuhuagen return 0 26da415ae9Sxuhuagen} 271e92d78aSBen Walker 287c347821SJim Harristiming_enter start_iscsi_tgt 297c347821SJim Harris 30aed8986dSDariusz Stojaczyk$ISCSI_APP -m $ISCSI_TEST_CORE_MASK --wait-for-rpc & 311e92d78aSBen Walkerpid=$! 321e92d78aSBen Walkerecho "Process pid: $pid" 331e92d78aSBen Walker 3490c84ec5SKarol Lateckitrap 'killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT 351e92d78aSBen Walker 366bef902cSJim Harriswaitforlisten $pid 37cea4c3e5SPawel Kaminski$rpc_py iscsi_set_options -o 30 -a 16 38e85d4712SMaciej Wawryk$rpc_py framework_start_init 391e92d78aSBen Walkerecho "iscsi_tgt is listening. Running tests..." 401e92d78aSBen Walker 417c347821SJim Harristiming_exit start_iscsi_tgt 427c347821SJim Harris 4362209642Schenlo2xbdf=$(iter_pci_class_code 01 08 02 | head -1) 440f4b3490SPawel Kaminski$rpc_py iscsi_create_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT 4594dd4b9aSPawel Kaminski$rpc_py iscsi_create_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK 46f54df840SPawel Kaminski$rpc_py bdev_nvme_attach_controller -b "Nvme0" -t "pcie" -a $bdf 47da415ae9Sxuhuagen 48de756853SMaciej Wawrykls_guid=$($rpc_py bdev_lvol_create_lvstore Nvme0n1 lvs_0) 49da415ae9Sxuhuagenfree_mb=$(get_lvs_free_mb "$ls_guid") 50da415ae9Sxuhuagen# Using maximum 2048MiB to reduce the test time 51da415ae9Sxuhuagenif [ $free_mb -gt 2048 ]; then 52c57cd922SMaciej Wawryk $rpc_py bdev_lvol_create -u $ls_guid lbd_0 2048 53da415ae9Sxuhuagenelse 54c57cd922SMaciej Wawryk $rpc_py bdev_lvol_create -u $ls_guid lbd_0 $free_mb 55da415ae9Sxuhuagenfi 56da415ae9Sxuhuagen# "lvs_0/lbd_0:0" ==> use lvs_0/lbd_0 blockdev for LUN0 571e92d78aSBen Walker# "1:2" ==> map PortalGroup1 to InitiatorGroup2 58da415ae9Sxuhuagen# "256" ==> iSCSI queue depth 256 59abd86265SLiang Yan# "-d" ==> disable CHAP authentication 60758b2f94SPawel Kaminski$rpc_py iscsi_create_target_node Target1 Target1_alias 'lvs_0/lbd_0:0' $PORTAL_TAG:$INITIATOR_TAG 256 -d 611e92d78aSBen Walkersleep 1 621e92d78aSBen Walker 63b4db5cf9STomasz Zawadzkiiscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT 64b4db5cf9STomasz Zawadzkiiscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 65a44c7434STomasz Kulasekwaitforiscsidevices 1 661e92d78aSBen Walker 676de3ac79SShuhei Matsumototrap 'iscsicleanup; remove_backends; umount /mnt/device; rm -rf /mnt/device; killprocess $pid; iscsitestfini $1 $2; exit 1' SIGINT SIGTERM EXIT 681e92d78aSBen Walker 691e92d78aSBen Walkermkdir -p /mnt/device 701e92d78aSBen Walker 711e92d78aSBen Walkerdev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 721e92d78aSBen Walker 73a44c7434STomasz Kulasekwaitforfile /dev/$dev 741e92d78aSBen Walkerparted -s /dev/$dev mklabel msdos 751e92d78aSBen Walkerparted -s /dev/$dev mkpart primary '0%' '100%' 761e92d78aSBen Walkersleep 1 771e92d78aSBen Walker 78*9f9f120cSSeth Howellfunction filesystem_test { 79*9f9f120cSSeth Howell fstype=$1 801e92d78aSBen Walker 811e92d78aSBen Walker if [ "$fstype" == "ext4" ]; then 821e92d78aSBen Walker mkfs.${fstype} -F /dev/${dev}1 831e92d78aSBen Walker else 841e92d78aSBen Walker mkfs.${fstype} -f /dev/${dev}1 851e92d78aSBen Walker fi 861e92d78aSBen Walker mount /dev/${dev}1 /mnt/device 8714dd46cbSxuhuagen if [ $RUN_NIGHTLY -eq 1 ]; then 8814dd46cbSxuhuagen fio -filename=/mnt/device/test -direct=1 -iodepth 64 -thread=1 -invalidate=1 -rw=randwrite -ioengine=libaio -bs=4k \ 8914dd46cbSxuhuagen -size=1024M -name=job0 9014dd46cbSxuhuagen umount /mnt/device 9114dd46cbSxuhuagen 9214dd46cbSxuhuagen iscsiadm -m node --logout 93a44c7434STomasz Kulasek waitforiscsidevices 0 9414dd46cbSxuhuagen iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 95a44c7434STomasz Kulasek waitforiscsidevices 1 96a44c7434STomasz Kulasek 9714dd46cbSxuhuagen dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 98a44c7434STomasz Kulasek 99a44c7434STomasz Kulasek waitforfile /dev/${dev}1 10014dd46cbSxuhuagen mount -o rw /dev/${dev}1 /mnt/device 10114dd46cbSxuhuagen if [ -f "/mnt/device/test" ]; then 10214dd46cbSxuhuagen echo "File existed." 10314dd46cbSxuhuagen fio -filename=/mnt/device/test -direct=1 -iodepth 64 -thread=1 -invalidate=1 -rw=randread \ 10414dd46cbSxuhuagen -ioengine=libaio -bs=4k -runtime=20 -time_based=1 -name=job0 10514dd46cbSxuhuagen else 10614dd46cbSxuhuagen echo "File doesn't exist." 10714dd46cbSxuhuagen exit 1 10814dd46cbSxuhuagen fi 10914dd46cbSxuhuagen 11014dd46cbSxuhuagen rm -rf /mnt/device/test 11114dd46cbSxuhuagen umount /mnt/device 11214dd46cbSxuhuagen else 1131e92d78aSBen Walker touch /mnt/device/aaa 1141e92d78aSBen Walker umount /mnt/device 1151e92d78aSBen Walker 1161e92d78aSBen Walker iscsiadm -m node --logout 117a44c7434STomasz Kulasek waitforiscsidevices 0 118b4db5cf9STomasz Zawadzki iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 119a44c7434STomasz Kulasek waitforiscsidevices 1 120a44c7434STomasz Kulasek 1211e92d78aSBen Walker dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 122a44c7434STomasz Kulasek 123a44c7434STomasz Kulasek waitforfile /dev/${dev}1 1241e92d78aSBen Walker mount -o rw /dev/${dev}1 /mnt/device 1251e92d78aSBen Walker 1261e92d78aSBen Walker if [ -f "/mnt/device/aaa" ]; then 1271e92d78aSBen Walker echo "File existed." 1281e92d78aSBen Walker else 1291e92d78aSBen Walker echo "File doesn't exist." 1301e92d78aSBen Walker exit 1 1311e92d78aSBen Walker fi 1321e92d78aSBen Walker 1331e92d78aSBen Walker rm -rf /mnt/device/aaa 1341e92d78aSBen Walker umount /mnt/device 13514dd46cbSxuhuagen fi 136*9f9f120cSSeth Howell} 137*9f9f120cSSeth Howell 138*9f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_ext4" filesystem_test "ext4" 139*9f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_btrfs" filesystem_test "btrfs" 140*9f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_xfs" filesystem_test "xfs" 1411e92d78aSBen Walker 1421e92d78aSBen Walkerrm -rf /mnt/device 1431e92d78aSBen Walker 1441e92d78aSBen Walkertrap - SIGINT SIGTERM EXIT 1451e92d78aSBen Walker 1461e92d78aSBen Walkeriscsicleanup 1470a43fe28SShuhei Matsumotoremove_backends 1481e92d78aSBen Walkerkillprocess $pid 14903b9841dSSeth Howelliscsitestfini $1 $2 150