Commit 24c7f62f authored by Xiaodong Liu's avatar Xiaodong Liu Committed by Jim Harris
Browse files

test/iscsi: check and avoid setting DataDigest



iscsiadm installed by some Fedora releases, like Fedora 27,
loses DataDigest parameter unintelligibly.

Change-Id: I6664146c6e0cb8933188b29166bedd087f4d38e1
Signed-off-by: default avatarXiaodong Liu <xiaodong.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/396076


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 41517036
Loading
Loading
Loading
Loading
+56 −28
Original line number Diff line number Diff line
@@ -15,6 +15,54 @@ function node_login_fio_logout()
	sleep 1
}

function iscsi_header_digest_test()
{
	# Enable HeaderDigest to CRC32C
	timing_enter HeaderDigest_enabled
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
	node_login_fio_logout
	timing_exit HeaderDigest_enabled

	# Let iscsi target to decide its preference on
	# HeaderDigest based on its capability.
	timing_enter preferred
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C,None
	node_login_fio_logout
	timing_exit preferred
}

function iscsi_header_data_digest_test()
{
	# Only enable HeaderDigest to CRC32C
	timing_enter HeaderDigest_enabled
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v None
	node_login_fio_logout
	timing_exit HeaderDigest_enabled

	# Only enable DataDigest to CRC32C
	timing_enter DataDigest_enabled
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v None
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C
	node_login_fio_logout
	timing_exit DataDigest_enabled

	# Let iscsi target to decide its preference on both
	# HeaderDigest and DataDigest based on its capability.
	timing_enter both_preferred
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C,None
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C,None
	node_login_fio_logout
	timing_exit both_preferred

	# Enable HeaderDigest and DataDigest both.
	timing_enter both_enabled
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
	iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C
	node_login_fio_logout
	timing_exit both_enabled
}

timing_enter digests

# iSCSI target configuration
@@ -53,34 +101,14 @@ sleep 1

iscsiadm -m discovery -t sendtargets -p $TARGET_IP:$PORT

# Only enable HeaderDigest to CRC32C
timing_enter HeaderDigest_enabled
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v None
node_login_fio_logout
timing_exit HeaderDigest_enabled

# Only enable DataDigest to CRC32C
timing_enter DataDigest_enabled
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v None
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C
node_login_fio_logout
timing_exit DataDigest_enabled

# Let iscsi target to decide its preference on both
# HeaderDigest and DataDigest based on its capability.
timing_enter both_preferred
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C,None
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C,None
node_login_fio_logout
timing_exit both_preferred

# Enable HeaderDigest and DataDigest both.
timing_enter both_enabled
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
iscsiadm -m node -p $TARGET_IP:$PORT -o update -n node.conn[0].iscsi.DataDigest -v CRC32C
node_login_fio_logout
timing_exit both_enabled
# iscsiadm installed by some Fedora releases loses DataDigest parameter.
# Check and avoid setting DataDigest.
DataDigestAbility=`iscsiadm -m node -p $TARGET_IP:$PORT | grep DataDigest || true`
if [ "$DataDigestAbility"x = x ]; then
	iscsi_header_digest_test
else
	iscsi_header_data_digest_test
fi

trap - SIGINT SIGTERM EXIT