Signed-off-by: Christian Ehrhardt <christian.ehrha...@canonical.com> --- ...raseReserved-override-driver-queue_p.patch | 74 ++++++++ ...BlockEraseReserved-skip-unless-iSCSI.patch | 39 ++++ ...e-Write-override-driver-queue_pdu-ca.patch | 71 ++++++++ ...e-Write-skip-InvalidDataOutSize-unle.patch | 39 ++++ ...EraseReserved-override-driver-queue_.patch | 74 ++++++++ ...ryptoEraseReserved-skip-unless-iSCSI.patch | 39 ++++ ...iteReserved-override-driver-queue_pd.patch | 68 +++++++ ...-test-tool-Use-extern-int-in-headers.patch | 58 ++++++ ...mdSnTooHigh-override-driver-queue_pd.patch | 68 +++++++ ...mdSnTooLow-override-driver-queue_pdu.patch | 69 ++++++++ ...ataSnInvalid-override-driver-queue_p.patch | 166 ++++++++++++++++++ ...-unused-iscsi_queue_pdu-symbol-overl.patch | 104 +++++++++++ debian/patches/series | 12 ++ 13 files changed, 881 insertions(+) create mode 100644 debian/patches/lp-1894129-test-tool-BlockEraseReserved-override-driver-queue_p.patch create mode 100644 debian/patches/lp-1894129-test-tool-BlockEraseReserved-skip-unless-iSCSI.patch create mode 100644 debian/patches/lp-1894129-test-tool-Compare-Write-override-driver-queue_pdu-ca.patch create mode 100644 debian/patches/lp-1894129-test-tool-Compare-Write-skip-InvalidDataOutSize-unle.patch create mode 100644 debian/patches/lp-1894129-test-tool-CryptoEraseReserved-override-driver-queue_.patch create mode 100644 debian/patches/lp-1894129-test-tool-CryptoEraseReserved-skip-unless-iSCSI.patch create mode 100644 debian/patches/lp-1894129-test-tool-OverwriteReserved-override-driver-queue_pd.patch create mode 100644 debian/patches/lp-1894129-test-tool-Use-extern-int-in-headers.patch create mode 100644 debian/patches/lp-1894129-test-tool-iSCSICmdSnTooHigh-override-driver-queue_pd.patch create mode 100644 debian/patches/lp-1894129-test-tool-iSCSICmdSnTooLow-override-driver-queue_pdu.patch create mode 100644 debian/patches/lp-1894129-test-tool-iSCSIDataSnInvalid-override-driver-queue_p.patch create mode 100644 debian/patches/lp-1894129-test-tool-remove-unused-iscsi_queue_pdu-symbol-overl.patch
diff --git a/debian/patches/lp-1894129-test-tool-BlockEraseReserved-override-driver-queue_p.patch b/debian/patches/lp-1894129-test-tool-BlockEraseReserved-override-driver-queue_p.patch new file mode 100644 index 0000000..68def73 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-BlockEraseReserved-override-driver-queue_p.patch @@ -0,0 +1,74 @@ +From b705f9e5240583fb862f16d603e5cf2120e5d54c Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/BlockEraseReserved: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/b705f9e5 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_sanitize_block_erase_reserved.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/test-tool/test_sanitize_block_erase_reserved.c b/test-tool/test_sanitize_block_erase_reserved.c +index fcb862e..4a0d2cb 100644 +--- a/test-tool/test_sanitize_block_erase_reserved.c ++++ b/test-tool/test_sanitize_block_erase_reserved.c +@@ -25,8 +25,9 @@ + #include "iscsi-test-cu.h" + + static int change_num; ++static struct iscsi_transport iscsi_drv_orig; + +-static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu *pdu) ++static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { + switch (change_num) { + case 1: +@@ -43,12 +44,12 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu + break; + } + +- change_num = 0; +- return 0; ++ change_num = 0; ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_sanitize_block_erase_reserved(void) +-{ ++{ + int i; + + logging(LOG_VERBOSE, LOG_BLANK_LINE); +@@ -64,8 +65,9 @@ void test_sanitize_block_erase_reserved(void) + return; + } + +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; +- ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + + logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " + "bit in byte 1 set to 1"); +@@ -81,4 +83,7 @@ void test_sanitize_block_erase_reserved(void) + SANITIZE(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); + } ++ ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-BlockEraseReserved-skip-unless-iSCSI.patch b/debian/patches/lp-1894129-test-tool-BlockEraseReserved-skip-unless-iSCSI.patch new file mode 100644 index 0000000..43ae51b --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-BlockEraseReserved-skip-unless-iSCSI.patch @@ -0,0 +1,39 @@ +From fdc45fadfa06f2543a12abe8eefe7f87d5dab0c2 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 15:40:00 +0200 +Subject: [PATCH] test-tool/BlockEraseReserved: skip unless iSCSI + +This test performs PDU manipulation so should only be run against iSCSI +devices. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/fdc45fad +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_sanitize_block_erase_reserved.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test-tool/test_sanitize_block_erase_reserved.c b/test-tool/test_sanitize_block_erase_reserved.c +index 55c85d9..fcb862e 100644 +--- a/test-tool/test_sanitize_block_erase_reserved.c ++++ b/test-tool/test_sanitize_block_erase_reserved.c +@@ -56,6 +56,13 @@ void test_sanitize_block_erase_reserved(void) + + CHECK_FOR_SANITIZE; + CHECK_FOR_DATALOSS; ++ if (sd->iscsi_ctx == NULL) { ++ const char *err = "[SKIPPED] This test is " ++ "only supported for iSCSI backends"; ++ logging(LOG_NORMAL, "%s", err); ++ CU_PASS(err); ++ return; ++ } + + local_iscsi_queue_pdu = my_iscsi_queue_pdu; + +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-Compare-Write-override-driver-queue_pdu-ca.patch b/debian/patches/lp-1894129-test-tool-Compare-Write-override-driver-queue_pdu-ca.patch new file mode 100644 index 0000000..d0433a2 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-Compare-Write-override-driver-queue_pdu-ca.patch @@ -0,0 +1,71 @@ +From 310e9ace02bafb78d69bfe20e5c9befe7ed24a10 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/Compare&Write: override driver queue_pdu() callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert the Compare&Write InvalidDataOutSize test to use +the regular transport driver callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/310e9ace +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + .../test_compareandwrite_invalid_dataout_size.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/test-tool/test_compareandwrite_invalid_dataout_size.c b/test-tool/test_compareandwrite_invalid_dataout_size.c +index eb6a6dd..9fcd739 100644 +--- a/test-tool/test_compareandwrite_invalid_dataout_size.c ++++ b/test-tool/test_compareandwrite_invalid_dataout_size.c +@@ -27,11 +27,12 @@ + + + static int new_tl; ++static struct iscsi_transport iscsi_drv_orig; + +-static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu *pdu _U_) ++static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { + if (pdu->outdata.data[0] != ISCSI_PDU_SCSI_REQUEST) { +- return 0; ++ goto out; + } + switch (new_tl) { + case 1: +@@ -43,7 +44,8 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu + pdu->outdata.data[32 + 13] = 3; + break; + } +- return 0; ++out: ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void +@@ -61,8 +63,10 @@ test_compareandwrite_invalid_dataout_size(void) + return; + } + +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; +- ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; ++ + logging(LOG_VERBOSE, LOG_BLANK_LINE); + logging(LOG_VERBOSE, "Test that COMPAREANDWRITE fails for invalid " + "(too small/too large) DataOut sizes."); +@@ -89,4 +93,6 @@ test_compareandwrite_invalid_dataout_size(void) + block_size, 0, 0, 0, 0, + EXPECT_STATUS_GENERIC_BAD); + ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-Compare-Write-skip-InvalidDataOutSize-unle.patch b/debian/patches/lp-1894129-test-tool-Compare-Write-skip-InvalidDataOutSize-unle.patch new file mode 100644 index 0000000..179a622 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-Compare-Write-skip-InvalidDataOutSize-unle.patch @@ -0,0 +1,39 @@ +From 60a5856f00731be578a57bfbf68b2e9858680f07 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:33:50 +0200 +Subject: [PATCH] test-tool/Compare&Write: skip InvalidDataOutSize unless iSCSI + +This test performs PDU manipulation so should only be run against iSCSI +devices. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/60a5856f +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_compareandwrite_invalid_dataout_size.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test-tool/test_compareandwrite_invalid_dataout_size.c b/test-tool/test_compareandwrite_invalid_dataout_size.c +index 4abd501..eb6a6dd 100644 +--- a/test-tool/test_compareandwrite_invalid_dataout_size.c ++++ b/test-tool/test_compareandwrite_invalid_dataout_size.c +@@ -53,6 +53,13 @@ test_compareandwrite_invalid_dataout_size(void) + CHECK_FOR_THIN_PROVISIONING; + CHECK_FOR_LBPPB_GT_1; + CHECK_FOR_SBC; ++ if (sd->iscsi_ctx == NULL) { ++ const char *err = "[SKIPPED] This test is " ++ "only supported for iSCSI backends"; ++ logging(LOG_NORMAL, "%s", err); ++ CU_PASS(err); ++ return; ++ } + + local_iscsi_queue_pdu = my_iscsi_queue_pdu; + +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-override-driver-queue_.patch b/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-override-driver-queue_.patch new file mode 100644 index 0000000..0c4a300 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-override-driver-queue_.patch @@ -0,0 +1,74 @@ +From 77279dd44fd19167c22cfada2eec377058e1bde9 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/CryptoEraseReserved: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/77279dd4 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_sanitize_crypto_erase_reserved.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/test-tool/test_sanitize_crypto_erase_reserved.c b/test-tool/test_sanitize_crypto_erase_reserved.c +index 00bbf34..646cbea 100644 +--- a/test-tool/test_sanitize_crypto_erase_reserved.c ++++ b/test-tool/test_sanitize_crypto_erase_reserved.c +@@ -25,8 +25,9 @@ + #include "iscsi-test-cu.h" + + static int change_num; ++static struct iscsi_transport iscsi_drv_orig; + +-static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu *pdu) ++static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { + switch (change_num) { + case 1: +@@ -43,12 +44,12 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu + break; + } + +- change_num = 0; +- return 0; ++ change_num = 0; ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_sanitize_crypto_erase_reserved(void) +-{ ++{ + int i; + + logging(LOG_VERBOSE, LOG_BLANK_LINE); +@@ -64,8 +65,9 @@ void test_sanitize_crypto_erase_reserved(void) + return; + } + +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; +- ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + + logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " + "bit in byte 1 set to 1"); +@@ -81,4 +83,7 @@ void test_sanitize_crypto_erase_reserved(void) + SANITIZE(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); + } ++ ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-skip-unless-iSCSI.patch b/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-skip-unless-iSCSI.patch new file mode 100644 index 0000000..95ca3a3 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-CryptoEraseReserved-skip-unless-iSCSI.patch @@ -0,0 +1,39 @@ +From c830a3b55e91fe8b1cb97e6899ef872691c8804e Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 15:40:00 +0200 +Subject: [PATCH] test-tool/CryptoEraseReserved: skip unless iSCSI + +This test performs PDU manipulation so should only be run against iSCSI +devices. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/c830a3b5 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_sanitize_crypto_erase_reserved.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/test-tool/test_sanitize_crypto_erase_reserved.c b/test-tool/test_sanitize_crypto_erase_reserved.c +index c713ab5..00bbf34 100644 +--- a/test-tool/test_sanitize_crypto_erase_reserved.c ++++ b/test-tool/test_sanitize_crypto_erase_reserved.c +@@ -56,6 +56,13 @@ void test_sanitize_crypto_erase_reserved(void) + + CHECK_FOR_SANITIZE; + CHECK_FOR_DATALOSS; ++ if (sd->iscsi_ctx == NULL) { ++ const char *err = "[SKIPPED] This test is " ++ "only supported for iSCSI backends"; ++ logging(LOG_NORMAL, "%s", err); ++ CU_PASS(err); ++ return; ++ } + + local_iscsi_queue_pdu = my_iscsi_queue_pdu; + +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-OverwriteReserved-override-driver-queue_pd.patch b/debian/patches/lp-1894129-test-tool-OverwriteReserved-override-driver-queue_pd.patch new file mode 100644 index 0000000..0b6e27b --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-OverwriteReserved-override-driver-queue_pd.patch @@ -0,0 +1,68 @@ +From 2ae45ac15d8c1d4a4f68a085dadb7f43e2f2e280 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/OverwriteReserved: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: backport, https://github.com/sahlberg/libiscsi/commit/2ae45ac1 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_sanitize_overwrite_reserved.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +--- a/test-tool/test_sanitize_overwrite_reserved.c ++++ b/test-tool/test_sanitize_overwrite_reserved.c +@@ -26,8 +26,9 @@ + #include "iscsi-test-cu.h" + + static int change_num; ++static struct iscsi_transport iscsi_drv_orig; + +-static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu *pdu) ++static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { + switch (change_num) { + case 1: +@@ -44,12 +45,12 @@ static int my_iscsi_queue_pdu(struct isc + break; + } + +- change_num = 0; +- return 0; ++ change_num = 0; ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_sanitize_overwrite_reserved(void) +-{ ++{ + int i; + struct iscsi_data data; + +@@ -68,7 +69,9 @@ void test_sanitize_overwrite_reserved(vo + CHECK_FOR_SANITIZE; + CHECK_FOR_DATALOSS; + +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + + logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " + "bit in byte 1 set to 1"); +@@ -84,4 +87,7 @@ void test_sanitize_overwrite_reserved(vo + SANITIZE(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_INVALID_FIELD_IN_CDB); + } ++ ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } diff --git a/debian/patches/lp-1894129-test-tool-Use-extern-int-in-headers.patch b/debian/patches/lp-1894129-test-tool-Use-extern-int-in-headers.patch new file mode 100644 index 0000000..f10a7a4 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-Use-extern-int-in-headers.patch @@ -0,0 +1,58 @@ +From ea89dcdbf167acd634300296172926c2e8d85804 Mon Sep 17 00:00:00 2001 +From: Cole Robinson <crobi...@redhat.com> +Date: Sat, 15 Feb 2020 18:03:11 -0500 +Subject: [PATCH] test-tool: Use 'extern int' in headers + +Without this, linking fails on Fedora rawhide. Example: + +... +/usr/bin/ld: test_async_lu_reset_simple.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:59: multiple definition of `param_list_len_err_ascqs'; iscsi-test-cu.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:59: first defined here +/usr/bin/ld: test_async_lu_reset_simple.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:58: multiple definition of `invalid_cdb_ascqs'; iscsi-test-cu.o:/root/libiscsi/libiscsi.git/test-tool/iscsi-support.h:58: first defined here +... + +Signed-off-by: Cole Robinson <crobi...@redhat.com> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/ea89dcdb +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/iscsi-support.h | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h +index 7aa9e45..9c3a461 100644 +--- a/test-tool/iscsi-support.h ++++ b/test-tool/iscsi-support.h +@@ -53,17 +53,17 @@ extern const char *initiatorname2; + #define EXPECT_RESERVATION_CONFLICT SCSI_STATUS_RESERVATION_CONFLICT, 0, NULL, 0 + #define EXPECT_COPY_ABORTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_COPY_ABORTED, copy_aborted_ascqs, 3 + +-int no_medium_ascqs[3]; +-int lba_oob_ascqs[1]; +-int invalid_cdb_ascqs[2]; +-int param_list_len_err_ascqs[1]; +-int too_many_desc_ascqs[2]; +-int unsupp_desc_code_ascqs[2]; +-int write_protect_ascqs[3]; +-int sanitize_ascqs[1]; +-int removal_ascqs[1]; +-int miscompare_ascqs[1]; +-int copy_aborted_ascqs[3]; ++extern int no_medium_ascqs[3]; ++extern int lba_oob_ascqs[1]; ++extern int invalid_cdb_ascqs[2]; ++extern int param_list_len_err_ascqs[1]; ++extern int too_many_desc_ascqs[2]; ++extern int unsupp_desc_code_ascqs[2]; ++extern int write_protect_ascqs[3]; ++extern int sanitize_ascqs[1]; ++extern int removal_ascqs[1]; ++extern int miscompare_ascqs[1]; ++extern int copy_aborted_ascqs[3]; + + extern int loglevel; + #define LOG_SILENT 0 +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooHigh-override-driver-queue_pd.patch b/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooHigh-override-driver-queue_pd.patch new file mode 100644 index 0000000..5df90d9 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooHigh-override-driver-queue_pd.patch @@ -0,0 +1,68 @@ +From 575ba2244c5db240bc29fa493404eee39f693a2d Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/iSCSICmdSnTooHigh: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/575ba224 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_iscsi_cmdsn_toohigh.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/test-tool/test_iscsi_cmdsn_toohigh.c b/test-tool/test_iscsi_cmdsn_toohigh.c +index 59ce0ab..19c8b91 100644 +--- a/test-tool/test_iscsi_cmdsn_toohigh.c ++++ b/test-tool/test_iscsi_cmdsn_toohigh.c +@@ -25,6 +25,7 @@ + #include "iscsi-test-cu.h" + + static int change_cmdsn; ++static struct iscsi_transport iscsi_drv_orig; + + static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { +@@ -40,7 +41,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu + } + + change_cmdsn = 0; +- return 0; ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_iscsi_cmdsn_toohigh(void) +@@ -64,7 +65,9 @@ void test_iscsi_cmdsn_toohigh(void) + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + change_cmdsn = 1; + /* we don't want autoreconnect since some targets will incorrectly + * drop the connection on this condition. +@@ -81,9 +84,11 @@ void test_iscsi_cmdsn_toohigh(void) + logging(LOG_VERBOSE, "[FAILURE] We got a response from the target but SMDSN was outside of the window."); + } + +- + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); + TESTUNITREADY(sd, + EXPECT_STATUS_GOOD); ++ ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooLow-override-driver-queue_pdu.patch b/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooLow-override-driver-queue_pdu.patch new file mode 100644 index 0000000..4dcd73d --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-iSCSICmdSnTooLow-override-driver-queue_pdu.patch @@ -0,0 +1,69 @@ +From c067eef9c10c17b8a9be83ee4f71d4c8d0d238e4 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/iSCSICmdSnTooLow: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/c067eef9 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_iscsi_cmdsn_toolow.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/test-tool/test_iscsi_cmdsn_toolow.c b/test-tool/test_iscsi_cmdsn_toolow.c +index 0b980b3..23b93c3 100644 +--- a/test-tool/test_iscsi_cmdsn_toolow.c ++++ b/test-tool/test_iscsi_cmdsn_toolow.c +@@ -25,6 +25,7 @@ + #include "iscsi-test-cu.h" + + static int change_cmdsn; ++static struct iscsi_transport iscsi_drv_orig; + + static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { +@@ -40,7 +41,7 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu + } + + change_cmdsn = 0; +- return 0; ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_iscsi_cmdsn_toolow(void) +@@ -64,7 +65,9 @@ void test_iscsi_cmdsn_toolow(void) + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + change_cmdsn = 1; + /* we don't want autoreconnect since some targets will incorrectly + * drop the connection on this condition. +@@ -81,10 +84,11 @@ void test_iscsi_cmdsn_toolow(void) + logging(LOG_VERBOSE, "[FAILURE] We got a response from the target but SMDSN was outside of the window."); + } + +- +- + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); + TESTUNITREADY(sd, + EXPECT_STATUS_GOOD); ++ ++ /* restore transport callbacks */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-iSCSIDataSnInvalid-override-driver-queue_p.patch b/debian/patches/lp-1894129-test-tool-iSCSIDataSnInvalid-override-driver-queue_p.patch new file mode 100644 index 0000000..4a253a1 --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-iSCSIDataSnInvalid-override-driver-queue_p.patch @@ -0,0 +1,166 @@ +From 153ca193fa61be8c2c26d8736119e7dc873d1242 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 14:46:28 +0200 +Subject: [PATCH] test-tool/iSCSIDataSnInvalid: override driver queue_pdu() + callback + +In preparation for removing the test-tool iscsi_queue_pdu() dlsym +overload hack, convert this test to use the regular transport driver +callback for this purpose. +This commit also removes a number of unnecessary "WRITE10 is not +implemented" checks, which should all be caught by the first check. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/153ca193 +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/test_iscsi_datasn_invalid.c | 56 ++++++++++----------------- + 1 file changed, 21 insertions(+), 35 deletions(-) + +diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c +index 14deb7a..c25631a 100644 +--- a/test-tool/test_iscsi_datasn_invalid.c ++++ b/test-tool/test_iscsi_datasn_invalid.c +@@ -25,13 +25,14 @@ + #include "iscsi-test-cu.h" + + static int change_datasn; ++static struct iscsi_transport iscsi_drv_orig; + +-static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu *pdu _U_) ++static int my_iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) + { + uint32_t datasn; + + if (pdu->outdata.data[0] != ISCSI_PDU_DATA_OUT) { +- return 0; ++ goto out; + } + switch (change_datasn) { + case 1: +@@ -52,11 +53,12 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu + scsi_set_uint32(&pdu->outdata.data[36], 1 - datasn); + break; + } +- return 0; ++out: ++ return iscsi_drv_orig.queue_pdu(iscsi, pdu); + } + + void test_iscsi_datasn_invalid(void) +-{ ++{ + int ret; + + CHECK_FOR_DATALOSS; +@@ -77,7 +79,9 @@ void test_iscsi_datasn_invalid(void) + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ /* override transport queue_pdu callback for PDU manipulation */ ++ iscsi_drv_orig = *sd->iscsi_ctx->drv; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); + +@@ -89,81 +93,63 @@ void test_iscsi_datasn_invalid(void) + if (ret == -2) { + logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); + CU_PASS("WRITE10 is not implemented."); +- local_iscsi_queue_pdu = NULL; +- return; +- } ++ goto out_ctx_restore; ++ } + CU_ASSERT_NOT_EQUAL(ret, 0); + ++ /* avoid changing DataSN during reconnect */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + +- + logging(LOG_VERBOSE, "Send Data-Out PDU with DataSN==27. Should fail"); + change_datasn = 2; + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); + + ret = write10(sd, 100, block_size, + block_size, 0, 0, 0, 0, 0, scratch, + EXPECT_STATUS_GOOD); +- if (ret == -2) { +- logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); +- CU_PASS("WRITE10 is not implemented."); +- local_iscsi_queue_pdu = NULL; +- return; +- } + CU_ASSERT_NOT_EQUAL(ret, 0); + ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + +- + logging(LOG_VERBOSE, "Send Data-Out PDU with DataSN==-1. Should fail"); + change_datasn = 3; + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); + + ret = write10(sd, 100, block_size, + block_size, 0, 0, 0, 0, 0, scratch, + EXPECT_STATUS_GOOD); +- if (ret == -2) { +- logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); +- CU_PASS("WRITE10 is not implemented."); +- local_iscsi_queue_pdu = NULL; +- return; +- } + CU_ASSERT_NOT_EQUAL(ret, 0); + ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + +- +- + logging(LOG_VERBOSE, "Send Data-Out PDU's in reverse order (DataSN == 1,0). Should fail"); + change_datasn = 4; + + sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; + sd->iscsi_ctx->target_max_recv_data_segment_length = block_size; +- local_iscsi_queue_pdu = my_iscsi_queue_pdu; ++ sd->iscsi_ctx->drv->queue_pdu = my_iscsi_queue_pdu; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); + + ret = write10(sd, 100, 2 * block_size, + block_size, 0, 0, 0, 0, 0, scratch, + EXPECT_STATUS_GOOD); +- if (ret == -2) { +- logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); +- CU_PASS("WRITE10 is not implemented."); +- local_iscsi_queue_pdu = NULL; +- return; +- } + CU_ASSERT_NOT_EQUAL(ret, 0); +- +- local_iscsi_queue_pdu = NULL; ++out_ctx_restore: ++ /* restore transport callbacks and autoreconnect */ ++ *(sd->iscsi_ctx->drv) = iscsi_drv_orig; + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); + } +-- +2.28.0 + diff --git a/debian/patches/lp-1894129-test-tool-remove-unused-iscsi_queue_pdu-symbol-overl.patch b/debian/patches/lp-1894129-test-tool-remove-unused-iscsi_queue_pdu-symbol-overl.patch new file mode 100644 index 0000000..6cd1a9f --- /dev/null +++ b/debian/patches/lp-1894129-test-tool-remove-unused-iscsi_queue_pdu-symbol-overl.patch @@ -0,0 +1,104 @@ +From dd17293bcc188dbefc420ee23b77bc9bb7c5e9a2 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <dd...@suse.de> +Date: Mon, 16 Sep 2019 16:02:36 +0200 +Subject: [PATCH] test-tool: remove unused iscsi_queue_pdu() symbol overload + +All users have now been changed to overload via the iscsi_ctx transport +callback, so the dlsym based overloading can now be dropped. + +Signed-off-by: David Disseldorp <dd...@suse.de> + +Origin: upstream, https://github.com/sahlberg/libiscsi/commit/dd17293b +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1894129 +Last-Update: 2020-09-08 + +--- + test-tool/iscsi-support.c | 11 ----------- + test-tool/iscsi-support.h | 1 - + test-tool/iscsi-test-cu.c | 15 --------------- + 3 files changed, 27 deletions(-) + +diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c +index 4b49478..169d2b0 100644 +--- a/test-tool/iscsi-support.c ++++ b/test-tool/iscsi-support.c +@@ -119,8 +119,6 @@ int readonly; + int sbc3_support; + int maximum_transfer_length; + +-int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); +- + static const unsigned char zeroBlock[4096]; + + /** +@@ -569,15 +567,6 @@ wait_until_test_finished(struct iscsi_context *iscsi, struct iscsi_async_state * + } + } + +-int +-iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) +-{ +- if (local_iscsi_queue_pdu != NULL) { +- local_iscsi_queue_pdu(iscsi, pdu); +- } +- return real_iscsi_queue_pdu(iscsi, pdu); +-} +- + int + orwrite(struct scsi_device *sdev, uint64_t lba, + uint32_t datalen, int blocksize, int wrprotect, +diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h +index aee00ca..2b20a1f 100644 +--- a/test-tool/iscsi-support.h ++++ b/test-tool/iscsi-support.h +@@ -782,7 +782,6 @@ struct iscsi_async_state { + void wait_until_test_finished(struct iscsi_context *iscsi, struct iscsi_async_state *test_state); + + struct iscsi_pdu; +-int (*local_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); + + struct scsi_command_descriptor *get_command_descriptor(int opcode, int sa); + +diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c +index eafda39..26e1b05 100644 +--- a/test-tool/iscsi-test-cu.c ++++ b/test-tool/iscsi-test-cu.c +@@ -59,12 +59,6 @@ int loglevel = LOG_NORMAL; + struct scsi_device *sd = NULL; /* mp_sds[0] alias */ + static unsigned int maxsectors; + +-/* +- * this allows us to redefine how PDU are queued, at times, for +- * testing purposes +- */ +-int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); +- + /***************************************************************** + * + * list of tests and test suites +@@ -805,7 +799,6 @@ test_setup(void) + { + task = NULL; + read_write_buf = NULL; +- local_iscsi_queue_pdu = NULL; + } + + void +@@ -1214,14 +1207,6 @@ main(int argc, char *argv[]) + mp_num_sds++; + } + +- /* So that we can override iscsi_queue_pdu in tests +- * and replace or mutate the blob that we are about to write to the +- * wire. +- * This allows such tests to do their mutates and then call out +- * to the real queueing function once they have modified the data. +- */ +- real_iscsi_queue_pdu = dlsym(RTLD_NEXT, "iscsi_queue_pdu"); +- + if ((mp_num_sds == 0) || (mp_sds[0]->iscsi_url == NULL + && mp_sds[0]->sgio_dev == NULL)) { + #ifdef HAVE_SG_IO +-- +2.28.0 + diff --git a/debian/patches/series b/debian/patches/series index de65f63..36e1d44 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,15 @@ soversion.diff libpthread.diff attribute_packed.patch spelling.patch +lp-1894129-test-tool-Compare-Write-skip-InvalidDataOutSize-unle.patch +lp-1894129-test-tool-Compare-Write-override-driver-queue_pdu-ca.patch +lp-1894129-test-tool-iSCSICmdSnTooLow-override-driver-queue_pdu.patch +lp-1894129-test-tool-iSCSICmdSnTooHigh-override-driver-queue_pd.patch +lp-1894129-test-tool-iSCSIDataSnInvalid-override-driver-queue_p.patch +lp-1894129-test-tool-BlockEraseReserved-skip-unless-iSCSI.patch +lp-1894129-test-tool-CryptoEraseReserved-skip-unless-iSCSI.patch +lp-1894129-test-tool-CryptoEraseReserved-override-driver-queue_.patch +lp-1894129-test-tool-OverwriteReserved-override-driver-queue_pd.patch +lp-1894129-test-tool-remove-unused-iscsi_queue_pdu-symbol-overl.patch +lp-1894129-test-tool-BlockEraseReserved-override-driver-queue_p.patch +lp-1894129-test-tool-Use-extern-int-in-headers.patch -- 2.28.0