11e92d78aSBen Walker#!/usr/bin/env bash 2*eb53c232Spaul luse# SPDX-License-Identifier: BSD-3-Clause 3*eb53c232Spaul luse# Copyright (C) 2016 Intel Corporation 4*eb53c232Spaul luse# All rights reserved. 5*eb53c232Spaul luse# 61e92d78aSBen Walkertestdir=$(readlink -f $(dirname $0)) 710f9391aSBen Walkerrootdir=$(readlink -f $testdir/../../..) 8c9e5d2a6SSeth Howellsource $rootdir/test/common/autotest_common.sh 93c2d18ceSKamil Godzwonsource $rootdir/test/setup/common.sh 10b20d0296SJim Harrissource $rootdir/test/iscsi_tgt/common.sh 11da415ae9Sxuhuagensource $rootdir/scripts/common.sh 121e92d78aSBen Walker 1399dd44e8STomasz Zawadzkiiscsitestinit 1403b9841dSSeth Howell 15da415ae9Sxuhuagen# Remove lvol bdevs and stores. 1662209642Schenlo2xfunction remove_backends() { 17da415ae9Sxuhuagen echo "INFO: Removing lvol bdev" 18b5fdf4ecSMaciej Wawryk $rpc_py bdev_lvol_delete "lvs_0/lbd_0" 19da415ae9Sxuhuagen 20da415ae9Sxuhuagen echo "INFO: Removing lvol stores" 214c049618SMaciej Wawryk $rpc_py bdev_lvol_delete_lvstore -l lvs_0 223a56fabcSTomasz Zawadzki 233a56fabcSTomasz Zawadzki echo "INFO: Removing NVMe" 2431e77a73SPawel Kaminski $rpc_py bdev_nvme_detach_controller Nvme0 253a56fabcSTomasz Zawadzki 26da415ae9Sxuhuagen return 0 27da415ae9Sxuhuagen} 281e92d78aSBen Walker 297c347821SJim Harristiming_enter start_iscsi_tgt 307c347821SJim Harris 31b4c5509cSMichal Berger"${ISCSI_APP[@]}" -m $ISCSI_TEST_CORE_MASK --wait-for-rpc & 321e92d78aSBen Walkerpid=$! 331e92d78aSBen Walkerecho "Process pid: $pid" 341e92d78aSBen Walker 3599dd44e8STomasz Zawadzkitrap 'killprocess $pid; iscsitestfini; exit 1' SIGINT SIGTERM EXIT 361e92d78aSBen Walker 376bef902cSJim Harriswaitforlisten $pid 38cea4c3e5SPawel Kaminski$rpc_py iscsi_set_options -o 30 -a 16 39e85d4712SMaciej Wawryk$rpc_py framework_start_init 401e92d78aSBen Walkerecho "iscsi_tgt is listening. Running tests..." 411e92d78aSBen Walker 427c347821SJim Harristiming_exit start_iscsi_tgt 437c347821SJim Harris 44db43b387SKarol Lateckibdf=$(get_first_nvme_bdf) 450f4b3490SPawel Kaminski$rpc_py iscsi_create_portal_group $PORTAL_TAG $TARGET_IP:$ISCSI_PORT 4694dd4b9aSPawel Kaminski$rpc_py iscsi_create_initiator_group $INITIATOR_TAG $INITIATOR_NAME $NETMASK 47f54df840SPawel Kaminski$rpc_py bdev_nvme_attach_controller -b "Nvme0" -t "pcie" -a $bdf 48da415ae9Sxuhuagen 49de756853SMaciej Wawrykls_guid=$($rpc_py bdev_lvol_create_lvstore Nvme0n1 lvs_0) 50da415ae9Sxuhuagenfree_mb=$(get_lvs_free_mb "$ls_guid") 51da415ae9Sxuhuagen# Using maximum 2048MiB to reduce the test time 52da415ae9Sxuhuagenif [ $free_mb -gt 2048 ]; then 53c57cd922SMaciej Wawryk $rpc_py bdev_lvol_create -u $ls_guid lbd_0 2048 54da415ae9Sxuhuagenelse 55c57cd922SMaciej Wawryk $rpc_py bdev_lvol_create -u $ls_guid lbd_0 $free_mb 56da415ae9Sxuhuagenfi 57da415ae9Sxuhuagen# "lvs_0/lbd_0:0" ==> use lvs_0/lbd_0 blockdev for LUN0 581e92d78aSBen Walker# "1:2" ==> map PortalGroup1 to InitiatorGroup2 59da415ae9Sxuhuagen# "256" ==> iSCSI queue depth 256 60abd86265SLiang Yan# "-d" ==> disable CHAP authentication 613c2d18ceSKamil Godzwonlvol_name="lvs_0/lbd_0" 623c2d18ceSKamil Godzwon$rpc_py iscsi_create_target_node Target1 Target1_alias ${lvol_name}:0 $PORTAL_TAG:$INITIATOR_TAG 256 -d 631e92d78aSBen Walkersleep 1 641e92d78aSBen Walker 65b4db5cf9STomasz Zawadzkiiscsiadm -m discovery -t sendtargets -p $TARGET_IP:$ISCSI_PORT 66b4db5cf9STomasz Zawadzkiiscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 67a44c7434STomasz Kulasekwaitforiscsidevices 1 681e92d78aSBen Walker 693c2d18ceSKamil Godzwonlvol_size=$(($(get_bdev_size $lvol_name) * 1024 * 1024)) 7099dd44e8STomasz Zawadzkitrap 'iscsicleanup; remove_backends; umount /mnt/device; rm -rf /mnt/device; killprocess $pid; iscsitestfini; exit 1' SIGINT SIGTERM EXIT 711e92d78aSBen Walker 721e92d78aSBen Walkermkdir -p /mnt/device 731e92d78aSBen Walker 741e92d78aSBen Walkerdev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 751e92d78aSBen Walker 76a44c7434STomasz Kulasekwaitforfile /dev/$dev 773c2d18ceSKamil Godzwon 783c2d18ceSKamil Godzwondev_size=$(sec_size_to_bytes $dev) 793c2d18ceSKamil Godzwon 803c2d18ceSKamil Godzwonif ((lvol_size == dev_size)); then 81dd574327SKamil Godzwon parted -s /dev/$dev mklabel gpt mkpart SPDK_TEST '0%' '100%' 821e92d78aSBen Walker sleep 1 833c2d18ceSKamil Godzwonelse 843c2d18ceSKamil Godzwon echo "ERR: device size is not as expected" 853c2d18ceSKamil Godzwon exit 1 863c2d18ceSKamil Godzwonfi 871e92d78aSBen Walker 88844c8ec3SMichal Bergerfunction filesystem_test() { 899f9f120cSSeth Howell fstype=$1 901e92d78aSBen Walker 910c7aeea9STomasz Zawadzki make_filesystem ${fstype} /dev/${dev}1 921e92d78aSBen Walker mount /dev/${dev}1 /mnt/device 9314dd46cbSxuhuagen if [ $RUN_NIGHTLY -eq 1 ]; then 9414dd46cbSxuhuagen fio -filename=/mnt/device/test -direct=1 -iodepth 64 -thread=1 -invalidate=1 -rw=randwrite -ioengine=libaio -bs=4k \ 9514dd46cbSxuhuagen -size=1024M -name=job0 9614dd46cbSxuhuagen umount /mnt/device 9714dd46cbSxuhuagen 9814dd46cbSxuhuagen iscsiadm -m node --logout 99a44c7434STomasz Kulasek waitforiscsidevices 0 10014dd46cbSxuhuagen iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 101a44c7434STomasz Kulasek waitforiscsidevices 1 102a44c7434STomasz Kulasek 10314dd46cbSxuhuagen dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 104a44c7434STomasz Kulasek 105a44c7434STomasz Kulasek waitforfile /dev/${dev}1 10614dd46cbSxuhuagen mount -o rw /dev/${dev}1 /mnt/device 10714dd46cbSxuhuagen if [ -f "/mnt/device/test" ]; then 10814dd46cbSxuhuagen echo "File existed." 10914dd46cbSxuhuagen fio -filename=/mnt/device/test -direct=1 -iodepth 64 -thread=1 -invalidate=1 -rw=randread \ 11014dd46cbSxuhuagen -ioengine=libaio -bs=4k -runtime=20 -time_based=1 -name=job0 11114dd46cbSxuhuagen else 11214dd46cbSxuhuagen echo "File doesn't exist." 11314dd46cbSxuhuagen exit 1 11414dd46cbSxuhuagen fi 11514dd46cbSxuhuagen 11614dd46cbSxuhuagen rm -rf /mnt/device/test 11714dd46cbSxuhuagen umount /mnt/device 11814dd46cbSxuhuagen else 1191e92d78aSBen Walker touch /mnt/device/aaa 1201e92d78aSBen Walker umount /mnt/device 1211e92d78aSBen Walker 1221e92d78aSBen Walker iscsiadm -m node --logout 123a44c7434STomasz Kulasek waitforiscsidevices 0 124b4db5cf9STomasz Zawadzki iscsiadm -m node --login -p $TARGET_IP:$ISCSI_PORT 125a44c7434STomasz Kulasek waitforiscsidevices 1 126a44c7434STomasz Kulasek 1271e92d78aSBen Walker dev=$(iscsiadm -m session -P 3 | grep "Attached scsi disk" | awk '{print $4}') 128a44c7434STomasz Kulasek 129a44c7434STomasz Kulasek waitforfile /dev/${dev}1 1301e92d78aSBen Walker mount -o rw /dev/${dev}1 /mnt/device 1311e92d78aSBen Walker 1321e92d78aSBen Walker if [ -f "/mnt/device/aaa" ]; then 1331e92d78aSBen Walker echo "File existed." 1341e92d78aSBen Walker else 1351e92d78aSBen Walker echo "File doesn't exist." 1361e92d78aSBen Walker exit 1 1371e92d78aSBen Walker fi 1381e92d78aSBen Walker 1391e92d78aSBen Walker rm -rf /mnt/device/aaa 1401e92d78aSBen Walker umount /mnt/device 14114dd46cbSxuhuagen fi 1429f9f120cSSeth Howell} 1439f9f120cSSeth Howell 1449f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_ext4" filesystem_test "ext4" 1459f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_btrfs" filesystem_test "btrfs" 1469f9f120cSSeth Howellrun_test "iscsi_tgt_filesystem_xfs" filesystem_test "xfs" 1471e92d78aSBen Walker 1481e92d78aSBen Walkerrm -rf /mnt/device 1491e92d78aSBen Walker 1501e92d78aSBen Walkertrap - SIGINT SIGTERM EXIT 1511e92d78aSBen Walker 1521e92d78aSBen Walkeriscsicleanup 1530a43fe28SShuhei Matsumotoremove_backends 1541e92d78aSBen Walkerkillprocess $pid 15599dd44e8STomasz Zawadzkiiscsitestfini 156