3 testdir
=$
(readlink
-f $
(dirname $0))
4 rootdir
=$
(readlink
-f $testdir/..
/..
/..
)
5 source $rootdir/test
/common
/autotest_common.sh
6 source $rootdir/test
/iscsi_tgt
/common.sh
8 # $1 = "iso" - triggers isolation mode (setting up required environment).
9 # $2 = test type posix or vpp. defaults to posix.
12 function node_login_fio_logout
() {
14 iscsiadm
-m node
-p $TARGET_IP:$ISCSI_PORT -o update
-n node.conn
[0].iscsi.
$arg
16 iscsiadm
-m node
--login -p $TARGET_IP:$ISCSI_PORT
17 $fio_py -p iscsi
-i 512 -d 1 -t write -r 2
18 $fio_py -p iscsi
-i 512 -d 1 -t read -r 2
19 iscsiadm
-m node
--logout -p $TARGET_IP:$ISCSI_PORT
23 function iscsi_header_digest_test
() {
24 # Enable HeaderDigest to CRC32C
25 timing_enter HeaderDigest_enabled
26 node_login_fio_logout
"HeaderDigest -v CRC32C"
27 timing_exit HeaderDigest_enabled
29 # Let iscsi target to decide its preference on
30 # HeaderDigest based on its capability.
31 timing_enter preferred
32 node_login_fio_logout
"HeaderDigest -v CRC32C,None"
36 function iscsi_header_data_digest_test
() {
37 # Only enable HeaderDigest to CRC32C
38 timing_enter HeaderDigest_enabled
39 node_login_fio_logout
"HeaderDigest -v CRC32C" "DataDigest -v None"
40 timing_exit HeaderDigest_enabled
42 # Only enable DataDigest to CRC32C
43 timing_enter DataDigest_enabled
44 node_login_fio_logout
"HeaderDigest -v None" "DataDigest -v CRC32C"
45 timing_exit DataDigest_enabled
47 # Let iscsi target to decide its preference on both
48 # HeaderDigest and DataDigest based on its capability.
49 timing_enter both_preferred
50 node_login_fio_logout
"HeaderDigest -v CRC32C,None" "DataDigest -v CRC32C,None"
51 timing_exit both_preferred
53 # Enable HeaderDigest and DataDigest both.
54 timing_enter both_enabled
55 node_login_fio_logout
"HeaderDigest -v CRC32C" "DataDigest -v CRC32C"
56 timing_exit both_enabled
64 rpc_py
="$rootdir/scripts/rpc.py"
65 fio_py
="$rootdir/scripts/fio.py"
67 timing_enter start_iscsi_tgt
69 $ISCSI_APP -m $ISCSI_TEST_CORE_MASK --wait-for-rpc &
71 echo "Process pid: $pid"
73 trap "killprocess $pid; iscsitestfini $1 $2; exit 1" SIGINT SIGTERM EXIT
76 $rpc_py set_iscsi_options
-o 30 -a 16
77 $rpc_py start_subsystem_init
78 echo "iscsi_tgt is listening. Running tests..."
80 timing_exit start_iscsi_tgt
82 $rpc_py add_portal_group
$PORTAL_TAG $TARGET_IP:$ISCSI_PORT
83 $rpc_py add_initiator_group
$INITIATOR_TAG $INITIATOR_NAME $NETMASK
84 $rpc_py construct_malloc_bdev
$MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE
85 # "Malloc0:0" ==> use Malloc0 blockdev for LUN0
86 # "1:2" ==> map PortalGroup1 to InitiatorGroup2
87 # "64" ==> iSCSI queue depth 64
88 # "-d" ==> disable CHAP authentication
89 $rpc_py construct_target_node Target3 Target3_alias
'Malloc0:0' $PORTAL_TAG:$INITIATOR_TAG 64 -d
92 iscsiadm
-m discovery
-t sendtargets
-p $TARGET_IP:$ISCSI_PORT
94 # iscsiadm installed by some Fedora releases loses DataDigest parameter.
95 # Check and avoid setting DataDigest.
96 DataDigestAbility
=$
(iscsiadm
-m node
-p $TARGET_IP:$ISCSI_PORT |
grep DataDigest || true
)
97 if [ "$DataDigestAbility"x
= x
]; then
98 iscsi_header_digest_test
100 iscsi_header_data_digest_test
103 trap - SIGINT SIGTERM EXIT