From 905695575fae5a0f1ba9320c33fa5a1c78502a98 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 07:15:52 -0700 Subject: [PATCH 01/53] TESTS: add a new helper check_result to validate the result of SCSI helpers Many/most all SCSI helpers do pretty much the same checking for the SCSI result and status. Break this out into a separate helper that we can use to reduce code duplication. Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 95 +++++++++++++++++++++++++++++++++++++++ test-tool/iscsi-support.h | 12 +++++ 2 files changed, 107 insertions(+) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 5db77dd..54260a6 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -2,6 +2,7 @@ iscsi-test tool support Copyright (C) 2012 by Lee Duncan + Copyright (C) 2014 Ronnie Sahlberg This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -63,8 +64,102 @@ int readonly; int sbc3_support; int maximum_transfer_length; +int no_medium_ascqs[3] = { + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN, + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED +}; +int lba_oob_ascqs[1] = { + SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE +}; +int invalid_cdb_ascqs[1] = { + SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB +}; +int write_protect_ascqs[1] = { + SCSI_SENSE_ASCQ_WRITE_PROTECTED +}; + int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); +static const char *scsi_status_str(int status) +{ + switch(status) { + case SCSI_STATUS_GOOD: return "SUCCESS"; + case SCSI_STATUS_CHECK_CONDITION: return "CHECK_CONDITION"; + case SCSI_STATUS_CONDITION_MET: return "CONDITIONS_MET"; + case SCSI_STATUS_BUSY: return "BUSY"; + case SCSI_STATUS_RESERVATION_CONFLICT: return "RESERVATION_CONFLICT"; + case SCSI_STATUS_TASK_SET_FULL: return "TASK_SET_FULL"; + case SCSI_STATUS_ACA_ACTIVE: return "ACA_ACTIVE"; + case SCSI_STATUS_TASK_ABORTED: return "TASK_ABORTED"; + } + return "UNKNOWN"; +} + +static int check_result(const char *opcode, struct iscsi_context *iscsi, + struct scsi_task *task, + int status, enum scsi_sense_key key, + int *ascq, int num_ascq) +{ + int ascq_ok; + + if (task == NULL) { + logging(LOG_NORMAL, "[FAILED] Failed to send %s command: " + "%s", opcode, iscsi_get_error(iscsi)); + return -1; + } + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + logging(LOG_NORMAL, "[SKIPPED] %s is not implemented.", + opcode); + return -2; + } + if (status == SCSI_STATUS_GOOD && task->status != SCSI_STATUS_GOOD) { + logging(LOG_NORMAL, "[FAILED] %s command failed with " + "sense. %s", opcode, iscsi_get_error(iscsi)); + return -1; + } + if (status != SCSI_STATUS_GOOD && task->status == SCSI_STATUS_GOOD) { + logging(LOG_NORMAL, "[FAILED] %s successful but should " + "have failed with %s(0x%02x)/%s(0x%04x)", + opcode, + scsi_sense_key_str(key), key, + scsi_sense_ascq_str(ascq[0]), ascq[0]); + return -1; + } + /* did we get any of the expected ASCQs ?*/ + if (status == SCSI_STATUS_CHECK_CONDITION) { + int i; + for (i = 0; i < num_ascq; i++) { + if (ascq[i] == task->sense.ascq) { + ascq_ok = 1; + } + } + if (num_ascq == 0) { + ascq_ok = 1; + } + } + if (status == SCSI_STATUS_CHECK_CONDITION && + (task->status != status + || task->sense.key != key + || !ascq_ok)) { + logging(LOG_NORMAL, "[FAILED] %s failed with wrong sense. " + "Should have failed with %s(0x%02x)/%s(0x%04x)" + "but failed with Sense:%s\n", + opcode, + scsi_sense_key_str(key), key, + scsi_sense_ascq_str(ascq[0]), ascq[0], + iscsi_get_error(iscsi)); + return -1; + } + logging(LOG_VERBOSE, "[OK] %s returned %s %s(0x%02x) %s(0x%04x)", + opcode, scsi_status_str(status), + scsi_sense_key_str(task->sense.key), task->sense.key, + scsi_sense_ascq_str(task->sense.ascq), task->sense.ascq); + return 0; +} + void logging(int level, const char *format, ...) { va_list ap; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 78c41fc..1a1805e 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -29,6 +29,18 @@ extern const char *initiatorname1; extern const char *initiatorname2; extern const char *tgt_url; +#define EXPECT_STATUS_GOOD SCSI_STATUS_GOOD, SCSI_SENSE_NO_SENSE, NULL, 0 +#define EXPECT_NO_MEDIUM SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, no_medium_ascqs, 3 +#define EXPECT_LBA_OOB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, lba_oob_ascqs, 1 +#define EXPECT_INVALID_FIELD_IN_CDB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, invalid_cdb_ascqs, 1 +#define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, 0, 0 +#define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 1 + +int no_medium_ascqs[3]; +int lba_oob_ascqs[1]; +int invalid_cdb_ascqs[1]; +int write_protect_ascqs[1]; + extern int loglevel; #define LOG_SILENT 0 #define LOG_NORMAL 1 From 138939cb0ec95d5386a7c7ec36facba2aeec9964 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 16 Sep 2014 12:48:38 -0700 Subject: [PATCH 02/53] TESTS: change ORWRITE to use a single helper function for all Switch orwrite helpers to use _command_async instead of calling _orwrite_sync() to prepare for switching to non-iscsi targets. Use the new check_result API so that we only need a single helper function for ORWRITE instead of one helper for each expected result. Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 268 +++------------------------- test-tool/iscsi-support.h | 6 +- test-tool/test_nomedia_sbc.c | 5 +- test-tool/test_orwrite_0blocks.c | 22 +-- test-tool/test_orwrite_beyond_eol.c | 28 ++- test-tool/test_orwrite_flags.c | 20 +-- test-tool/test_orwrite_simple.c | 6 +- test-tool/test_orwrite_verify.c | 12 +- test-tool/test_orwrite_wrprotect.c | 7 +- test-tool/test_readonly_sbc.c | 6 +- 10 files changed, 77 insertions(+), 303 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 54260a6..86b6688 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -19,6 +19,7 @@ */ #define _GNU_SOURCE +#include #include #include #include @@ -285,60 +286,18 @@ iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) + uint32_t datalen, int blocksize, int wrprotect, + int dpo, int fua, int fua_nv, int group, + unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send ORWRITE LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_orwrite_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send ORWRITE command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] ORWRITE command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] ORWRITE returned SUCCESS."); - return 0; -} - -int -orwrite_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send ORWRITE (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + logging(LOG_VERBOSE, "Send ORWRITE (Expecting %s) LBA:%" PRIu64 + " blocks:%d wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, fua, fua_nv, group); @@ -347,204 +306,19 @@ orwrite_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, return -1; } - task = iscsi_orwrite_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send ORWRITE command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + task = scsi_cdb_orwrite(lba, datalen, blocksize, wrprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("ORWRITE", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] ORWRITE failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] ORWRITE returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -orwrite_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send ORWRITE (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_orwrite_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send ORWRITE command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] ORWRITE failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] ORWRITE returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -orwrite_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send ORWRITE (Expecting WRITE_PROTECTED) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_orwrite_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send ORWRITE command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] ORWRITE successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] ORWRITE failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] ORWRITE returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -orwrite_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send ORWRITE (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_orwrite_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send ORWRITE command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] ORWRITE command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] ORWRITE Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] ORWRITE returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 1a1805e..cf4070e 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -255,11 +255,7 @@ int compareandwrite_miscompare(struct iscsi_context *iscsi, int lun, uint64_t lb int get_lba_status(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len, enum scsi_provisioning_type *provisioning0); int get_lba_status_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); -int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int orwrite_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int orwrite_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int orwrite_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int orwrite_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); +int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); int prefetch10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); int prefetch10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 3290341..14bc297 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -208,8 +208,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test ORWRITE when medium is ejected."); - ret = orwrite_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "ORWRITE"); diff --git a/test-tool/test_orwrite_0blocks.c b/test-tool/test_orwrite_0blocks.c index e3151c1..80c099d 100644 --- a/test-tool/test_orwrite_0blocks.c +++ b/test-tool/test_orwrite_0blocks.c @@ -34,8 +34,8 @@ test_orwrite_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==0"); ret = orwrite(iscsic, tgt_lun, 0, - 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); CU_PASS("ORWRITE is not implemented."); @@ -44,22 +44,22 @@ test_orwrite_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks one block past end-of-LUN"); - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = orwrite(iscsic, tgt_lun, num_blocks + 1, + 0, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==2^63"); - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = orwrite(iscsic, tgt_lun, 0x8000000000000000ULL, + 0, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==-1"); - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, -1, - 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = orwrite(iscsic, tgt_lun, -1, + 0, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_beyond_eol.c b/test-tool/test_orwrite_beyond_eol.c index 6cbc907..c057dde 100644 --- a/test-tool/test_orwrite_beyond_eol.c +++ b/test-tool/test_orwrite_beyond_eol.c @@ -40,10 +40,9 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, - num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); CU_PASS("ORWRITE is not implemented."); @@ -58,10 +57,9 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, - 0x8000000000000000ULL, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, 0x8000000000000000ULL, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -71,10 +69,9 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, - -1, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, -1, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -84,10 +81,9 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite_lbaoutofrange(iscsic, tgt_lun, - num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_orwrite_flags.c b/test-tool/test_orwrite_flags.c index 123a87b..317f113 100644 --- a/test-tool/test_orwrite_flags.c +++ b/test-tool/test_orwrite_flags.c @@ -40,8 +40,8 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE with DPO==1"); ret = orwrite(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); return; @@ -51,28 +51,28 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==0"); ret = orwrite(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, buf); + block_size, block_size, 0, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==1"); ret = orwrite(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, buf); + block_size, block_size, 0, 0, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==0 FUA_NV==1"); ret = orwrite(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with DPO==1 FUA==1 FUA_NV==1"); ret = orwrite(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, buf); + block_size, block_size, 0, 1, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_simple.c b/test-tool/test_orwrite_simple.c index 4eafb78..394ddd4 100644 --- a/test-tool/test_orwrite_simple.c +++ b/test-tool/test_orwrite_simple.c @@ -43,7 +43,8 @@ test_orwrite_simple(void) break; } ret = orwrite(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); CU_PASS("ORWRITE is not implemented."); @@ -58,7 +59,8 @@ test_orwrite_simple(void) break; } ret = orwrite(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index d4ad014..71aa02c 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -54,7 +54,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); ret = orwrite(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); CU_PASS("ORWRITE is not implemented."); @@ -74,7 +75,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); ret = orwrite(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); @@ -103,7 +105,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); ret = orwrite(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); @@ -118,7 +121,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); ret = orwrite(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); diff --git a/test-tool/test_orwrite_wrprotect.c b/test-tool/test_orwrite_wrprotect.c index 338f46e..65c9dbd 100644 --- a/test-tool/test_orwrite_wrprotect.c +++ b/test-tool/test_orwrite_wrprotect.c @@ -44,9 +44,10 @@ test_orwrite_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = orwrite_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, 0, block_size, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); + if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] ORWRITE is not implemented."); CU_PASS("ORWRITE is not implemented."); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index 7de9320..9844b5e 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -135,9 +135,9 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test ORWRITE fails with WRITE_PROTECTED"); - ret = orwrite_writeprotected(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = orwrite(iscsic, tgt_lun, 0, + block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "ORWRITE not supported on target. Skipped."); } From 8aefc7d579131f7437fa9661df06c76eb042b9f7 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 16 Sep 2014 14:22:58 -0700 Subject: [PATCH 03/53] TEST: update all the verify tests to a new API Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 623 +++------------------- test-tool/iscsi-support.h | 18 +- test-tool/test_nomedia_sbc.c | 15 +- test-tool/test_verify10_0blocks.c | 18 +- test-tool/test_verify10_beyond_eol.c | 23 +- test-tool/test_verify10_flags.c | 6 +- test-tool/test_verify10_mismatch.c | 10 +- test-tool/test_verify10_mismatch_no_cmp.c | 6 +- test-tool/test_verify10_simple.c | 6 +- test-tool/test_verify10_vrprotect.c | 6 +- test-tool/test_verify12_0blocks.c | 18 +- test-tool/test_verify12_beyond_eol.c | 23 +- test-tool/test_verify12_flags.c | 6 +- test-tool/test_verify12_mismatch.c | 10 +- test-tool/test_verify12_mismatch_no_cmp.c | 6 +- test-tool/test_verify12_simple.c | 6 +- test-tool/test_verify12_vrprotect.c | 5 +- test-tool/test_verify16_0blocks.c | 18 +- test-tool/test_verify16_beyond_eol.c | 24 +- test-tool/test_verify16_flags.c | 7 +- test-tool/test_verify16_mismatch.c | 10 +- test-tool/test_verify16_mismatch_no_cmp.c | 7 +- test-tool/test_verify16_simple.c | 6 +- test-tool/test_verify16_vrprotect.c | 5 +- 24 files changed, 211 insertions(+), 671 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 86b6688..fb95060 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -48,6 +48,21 @@ const char *initiatorname2 = const char *tgt_url; +int no_medium_ascqs[3] = { + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN, + SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED +}; +int lba_oob_ascqs[1] = { + SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE +}; +int invalid_cdb_ascqs[1] = { + SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB +}; +int write_protect_ascqs[1] = { + SCSI_SENSE_ASCQ_WRITE_PROTECTED +}; + struct scsi_inquiry_standard *inq; struct scsi_inquiry_logical_block_provisioning *inq_lbp; struct scsi_inquiry_block_device_characteristics *inq_bdc; @@ -65,21 +80,6 @@ int readonly; int sbc3_support; int maximum_transfer_length; -int no_medium_ascqs[3] = { - SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, - SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN, - SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED -}; -int lba_oob_ascqs[1] = { - SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE -}; -int invalid_cdb_ascqs[1] = { - SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB -}; -int write_protect_ascqs[1] = { - SCSI_SENSE_ASCQ_WRITE_PROTECTED -}; - int (*real_iscsi_queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); static const char *scsi_status_str(int status) @@ -3440,573 +3440,82 @@ unmap_nomedium(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_li } int -verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) +verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) + { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send VERIFY10 LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify10_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 command: failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY10 returned SUCCESS."); - return 0; -} - -int -verify10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", + logging(LOG_VERBOSE, "Send VERIFY10 (Expecting %s) LBA:%d " + "blocks:%d vprotect:%d dpo:%d bytchk:%d", + scsi_status_str(status), lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify10_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 successful but should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 after eject failed with the wrong sense code. Should fail with NOT_READY/MEDIUM_NOT_PRESENT* but failed with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_verify10(lba, datalen, vprotect, dpo, bytchk, blocksize); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY10 returned MEDIUM_NOT_PRESENT."); - return 0; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("VERIFY10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -verify10_miscompare(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) +verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send VERIFY10 (Expecting MISCOMPARE) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", + logging(LOG_VERBOSE, "Send VERIFY12 (Expecting %s) LBA:%d " + "blocks:%d vprotect:%d dpo:%d bytchk:%d", + scsi_status_str(status), lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify10_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 successful but should have failed with MISCOMPARE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->sense.key != SCSI_SENSE_MISCOMPARE) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 command returned wrong sense key. MISCOMPARE MISCOMPARE 0x%x expected but got key 0x%x. Sense:%s", SCSI_SENSE_MISCOMPARE, task->sense.key, iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_verify12(lba, datalen, vprotect, dpo, bytchk, blocksize); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY10 returned MISCOMPARE."); - return 0; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("VERIFY12", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -verify10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) +verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send VERIFY10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", + logging(LOG_VERBOSE, "Send VERIFY16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d vprotect:%d dpo:%d bytchk:%d", + scsi_status_str(status), lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify10_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented on target"); + task = scsi_cdb_verify16(lba, datalen, vprotect, dpo, bytchk, blocksize); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("VERIFY16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 successful but should have failed with LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY10 returned LBA_OUT_OF_RANGE."); - return 0; -} - -int -verify10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY10 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify10_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 successful but should have failed with ILLEGAL_REQUEST"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] VERIFY10 should have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY10 returned INVALID_FIELD_IN_CDB."); - return 0; -} - -int -verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY12 LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify12_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 command: failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY12 returned SUCCESS."); - return 0; -} - -int -verify12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY12 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify12_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 successful but should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 after eject failed with the wrong sense code. Should fail with NOT_READY/MEDIUM_NOT_PRESENT* but failed with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY12 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -verify12_miscompare(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY12 (expecting MISCOMPARE) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify12_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 successful but should have failed with MISCOMPARE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->sense.key != SCSI_SENSE_MISCOMPARE) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 command returned wrong sense key. MISCOMPARE MISCOMPARE 0x%x expected but got key 0x%x. Sense:%s", SCSI_SENSE_MISCOMPARE, task->sense.key, iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY12 returned MISCOMPARE."); - return 0; -} - -int -verify12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY12 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify12_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 successful but should have failed with LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY12 returned LBA_OUT_OF_RANGE."); - return 0; -} - -int -verify12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY12 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify12_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 successful but should have failed with ILLEGAL_REQUEST"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] VERIFY12 should have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY12 returned INVALID_FIELD_IN_CDB."); - return 0; -} - -int -verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY16 LBA:%" PRIu64 " blocks:%d vprotect:%d dpo:%d bytchk:%d", lba, datalen / blocksize, vprotect, dpo, bytchk); - task = iscsi_verify16_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 command: failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY16 returned SUCCESS."); - return 0; -} - -int -verify16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify16_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 successful but should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 after eject failed with the wrong sense code. Should fail with NOT_READY/MEDIUM_NOT_PRESENT* but failed with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY16 returned NOT_MEDIUM_NOT_PRESENT."); - return 0; -} - -int -verify16_miscompare(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY16 (Expecting MISCOMPARE) " - "LBA:%" PRIu64 " blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify16_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 successful but should have failed with MISCOMPARE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->sense.key != SCSI_SENSE_MISCOMPARE) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 command returned wrong sense key. MISCOMPARE MISCOMPARE 0x%x expected but got key 0x%x. Sense:%s", SCSI_SENSE_MISCOMPARE, task->sense.key, iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY16 returned MISCOMPARE."); - return 0; -} - -int -verify16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRIu64 " blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify16_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 successful but should have failed with LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY16 returned LBA_OUT_OF_RANGE."); - return 0; -} - -int -verify16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send VERIFY16 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRIu64 " blocks:%d vprotect:%d dpo:%d bytchk:%d", - lba, datalen / blocksize, vprotect, dpo, bytchk); - - task = iscsi_verify16_sync(iscsi, lun, data, datalen, lba, vprotect, dpo, bytchk, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send VERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 successful but should have failed with LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] VERIFY16 should have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] VERIFY16 returned INVALID_FIELD_IN_CDB."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index cf4070e..05825ea 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -308,21 +308,9 @@ int mode_sense(struct iscsi_context *iscsi, int lun); int unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); int unmap_writeprotected(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); int unmap_nomedium(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); -int verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify10_miscompare(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify12_miscompare(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify16_miscompare(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); -int verify16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data); +int verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); int write10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); int write10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 14bc297..847ae6d 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -128,8 +128,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY10 when medium is ejected."); - ret = verify10_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 1, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "VERIFY10"); @@ -138,8 +139,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY12 when medium is ejected."); - ret = verify12_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 1, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "VERIFY102"); @@ -148,8 +150,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY16 when medium is ejected."); - ret = verify16_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 1, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "VERIFY16"); diff --git a/test-tool/test_verify10_0blocks.c b/test-tool/test_verify10_0blocks.c index f30cf85..35e950e 100644 --- a/test-tool/test_verify10_0blocks.c +++ b/test-tool/test_verify10_0blocks.c @@ -31,7 +31,8 @@ test_verify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==0"); ret = verify10(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 1, NULL); + 0, 0, 1, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); @@ -40,19 +41,22 @@ test_verify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks one block past end-of-LUN"); - ret = verify10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 1, NULL); + ret = verify10(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==2^31"); - ret = verify10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 1, NULL); + ret = verify10(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==-1"); - ret = verify10_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 1, NULL); + ret = verify10(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_verify10_beyond_eol.c b/test-tool/test_verify10_beyond_eol.c index db49ac9..5177b95 100644 --- a/test-tool/test_verify10_beyond_eol.c +++ b/test-tool/test_verify10_beyond_eol.c @@ -42,9 +42,9 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); @@ -59,9 +59,9 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -71,8 +71,9 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -82,9 +83,9 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify10_flags.c b/test-tool/test_verify10_flags.c index 993d276..db2988d 100644 --- a/test-tool/test_verify10_flags.c +++ b/test-tool/test_verify10_flags.c @@ -41,7 +41,8 @@ test_verify10_flags(void) logging(LOG_VERBOSE, "Test VERIFY10 with DPO==1"); ret = verify10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 1, 0, buf); + block_size, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); @@ -53,7 +54,8 @@ test_verify10_flags(void) logging(LOG_VERBOSE, "Test VERIFY10 with BYTCHK==1"); ret = verify10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); free(buf); } diff --git a/test-tool/test_verify10_mismatch.c b/test-tool/test_verify10_mismatch.c index f625edc..ea42cf4 100644 --- a/test-tool/test_verify10_mismatch.c +++ b/test-tool/test_verify10_mismatch.c @@ -48,8 +48,9 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10_miscompare(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, 0, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); return; @@ -72,8 +73,9 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10_miscompare(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, num_blocks - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify10_mismatch_no_cmp.c b/test-tool/test_verify10_mismatch_no_cmp.c index e1a4cd2..c0c81da 100644 --- a/test-tool/test_verify10_mismatch_no_cmp.c +++ b/test-tool/test_verify10_mismatch_no_cmp.c @@ -49,7 +49,8 @@ test_verify10_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, buf); + block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); @@ -74,7 +75,8 @@ test_verify10_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify10_simple.c b/test-tool/test_verify10_simple.c index 452cbd9..2f3576e 100644 --- a/test-tool/test_verify10_simple.c +++ b/test-tool/test_verify10_simple.c @@ -43,7 +43,8 @@ test_verify10_simple(void) CU_ASSERT_EQUAL(ret, 0); ret = verify10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); @@ -62,7 +63,8 @@ test_verify10_simple(void) CU_ASSERT_EQUAL(ret, 0); ret = verify10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify10_vrprotect.c b/test-tool/test_verify10_vrprotect.c index 1e4b7a2..e849f0d 100644 --- a/test-tool/test_verify10_vrprotect.c +++ b/test-tool/test_verify10_vrprotect.c @@ -32,7 +32,6 @@ test_verify10_vrprotect(void) int i, ret; unsigned char *buf = alloca(block_size); - logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 with non-zero VRPROTECT"); @@ -45,8 +44,9 @@ test_verify10_vrprotect(void) block_size, 0, 0, 0, 0, 0, buf); CU_ASSERT_EQUAL(ret, 0); - ret = verify10_invalidfieldincdb(iscsic, tgt_lun, 0, block_size, - block_size, i, 0, 1, buf); + ret = verify10(iscsic, tgt_lun, 0, block_size, + block_size, i, 0, 1, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY10. Skipping test"); diff --git a/test-tool/test_verify12_0blocks.c b/test-tool/test_verify12_0blocks.c index b004f57..99cb63e 100644 --- a/test-tool/test_verify12_0blocks.c +++ b/test-tool/test_verify12_0blocks.c @@ -31,7 +31,8 @@ test_verify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==0"); ret = verify12(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 1, NULL); + 0, 0, 1, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -40,19 +41,22 @@ test_verify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks one block past end-of-LUN"); - ret = verify12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 1, NULL); + ret = verify12(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==2^31"); - ret = verify12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 1, NULL); + ret = verify12(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==-1"); - ret = verify12_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 1, NULL); + ret = verify12(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_verify12_beyond_eol.c b/test-tool/test_verify12_beyond_eol.c index ae6d17d..1b3c1c8 100644 --- a/test-tool/test_verify12_beyond_eol.c +++ b/test-tool/test_verify12_beyond_eol.c @@ -42,9 +42,9 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -59,9 +59,9 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -71,8 +71,9 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -82,9 +83,9 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify12_flags.c b/test-tool/test_verify12_flags.c index e3d2999..9233754 100644 --- a/test-tool/test_verify12_flags.c +++ b/test-tool/test_verify12_flags.c @@ -42,7 +42,8 @@ test_verify12_flags(void) logging(LOG_VERBOSE, "Test VERIFY12 with DPO==1"); ret = verify12(iscsic, tgt_lun, 0, block_size, - block_size, 0, 1, 0, buf); + block_size, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -53,6 +54,7 @@ test_verify12_flags(void) logging(LOG_VERBOSE, "Test VERIFY12 with BYTCHK==1"); ret = verify12(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_verify12_mismatch.c b/test-tool/test_verify12_mismatch.c index 144e81b..be3c9c2 100644 --- a/test-tool/test_verify12_mismatch.c +++ b/test-tool/test_verify12_mismatch.c @@ -47,8 +47,9 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12_miscompare(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, 0, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -72,8 +73,9 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12_miscompare(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, num_blocks - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify12_mismatch_no_cmp.c b/test-tool/test_verify12_mismatch_no_cmp.c index ef7e013..28cf446 100644 --- a/test-tool/test_verify12_mismatch_no_cmp.c +++ b/test-tool/test_verify12_mismatch_no_cmp.c @@ -48,7 +48,8 @@ test_verify12_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify12(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, buf); + block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -73,7 +74,8 @@ test_verify12_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify12_simple.c b/test-tool/test_verify12_simple.c index d2e6abd..43369f9 100644 --- a/test-tool/test_verify12_simple.c +++ b/test-tool/test_verify12_simple.c @@ -43,7 +43,8 @@ test_verify12_simple(void) CU_ASSERT_EQUAL(ret, 0); ret = verify12(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); @@ -62,7 +63,8 @@ test_verify12_simple(void) CU_ASSERT_EQUAL(ret, 0); ret = verify12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify12_vrprotect.c b/test-tool/test_verify12_vrprotect.c index 3e1d77a..e13c53e 100644 --- a/test-tool/test_verify12_vrprotect.c +++ b/test-tool/test_verify12_vrprotect.c @@ -44,8 +44,9 @@ test_verify12_vrprotect(void) ret = read10(iscsic, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf); - ret = verify12_invalidfieldincdb(iscsic, tgt_lun, 0, block_size, - block_size, i, 0, 1, buf); + ret = verify12(iscsic, tgt_lun, 0, block_size, + block_size, i, 0, 1, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY12 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY12. Skipping test"); diff --git a/test-tool/test_verify16_0blocks.c b/test-tool/test_verify16_0blocks.c index ccc344c..e6c15f2 100644 --- a/test-tool/test_verify16_0blocks.c +++ b/test-tool/test_verify16_0blocks.c @@ -31,7 +31,8 @@ test_verify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==0"); ret = verify16(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 1, NULL); + 0, 0, 1, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -40,19 +41,22 @@ test_verify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks one block past end-of-LUN"); - ret = verify16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 1, NULL); + ret = verify16(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==2^63"); - ret = verify16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, 0, - block_size, 0, 0, 1, NULL); + ret = verify16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + block_size, 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==-1"); - ret = verify16_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 1, NULL); + ret = verify16(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 1, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_verify16_beyond_eol.c b/test-tool/test_verify16_beyond_eol.c index d105834..721db41 100644 --- a/test-tool/test_verify16_beyond_eol.c +++ b/test-tool/test_verify16_beyond_eol.c @@ -39,9 +39,9 @@ test_verify16_beyond_eol(void) break; } - ret = verify16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -57,9 +57,9 @@ test_verify16_beyond_eol(void) break; } - ret = verify16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, 0x8000000000000000ULL, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -70,8 +70,9 @@ test_verify16_beyond_eol(void) break; } - ret = verify16_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -82,9 +83,10 @@ test_verify16_beyond_eol(void) break; } - ret = verify16_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_LBA_OOB); + CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify16_flags.c b/test-tool/test_verify16_flags.c index ddac339..d8cd38d 100644 --- a/test-tool/test_verify16_flags.c +++ b/test-tool/test_verify16_flags.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2013 Ronnie Sahlberg @@ -42,7 +41,8 @@ test_verify16_flags(void) logging(LOG_VERBOSE, "Test VERIFY16 with DPO==1"); ret = verify16(iscsic, tgt_lun, 0, block_size, - block_size, 0, 1, 0, buf); + block_size, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -53,6 +53,7 @@ test_verify16_flags(void) logging(LOG_VERBOSE, "Test VERIFY16 with BYTCHK==1"); ret = verify16(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_verify16_mismatch.c b/test-tool/test_verify16_mismatch.c index 6203ac5..bcce490 100644 --- a/test-tool/test_verify16_mismatch.c +++ b/test-tool/test_verify16_mismatch.c @@ -48,8 +48,9 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16_miscompare(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, 0, i * block_size, + block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -74,8 +75,9 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16_miscompare(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, num_blocks - i, + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify16_mismatch_no_cmp.c b/test-tool/test_verify16_mismatch_no_cmp.c index 6802883..4b35bb4 100644 --- a/test-tool/test_verify16_mismatch_no_cmp.c +++ b/test-tool/test_verify16_mismatch_no_cmp.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2013 Ronnie Sahlberg @@ -50,7 +49,8 @@ test_verify16_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, buf); + block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -76,7 +76,8 @@ test_verify16_mismatch_no_cmp(void) logging(LOG_VERBOSE, "Flip some bits in the data"); ret = verify16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify16_simple.c b/test-tool/test_verify16_simple.c index c781db2..8978319 100644 --- a/test-tool/test_verify16_simple.c +++ b/test-tool/test_verify16_simple.c @@ -42,7 +42,8 @@ test_verify16_simple(void) block_size, 0, 0, 0, 0, 0, buf); ret = verify16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 1, buf); + block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); @@ -62,7 +63,8 @@ test_verify16_simple(void) CU_ASSERT_EQUAL(ret, 0); ret = verify16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 1, buf); + i * block_size, block_size, 0, 0, 1, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_verify16_vrprotect.c b/test-tool/test_verify16_vrprotect.c index 6642559..dc2d905 100644 --- a/test-tool/test_verify16_vrprotect.c +++ b/test-tool/test_verify16_vrprotect.c @@ -44,8 +44,9 @@ test_verify16_vrprotect(void) ret = read16(iscsic, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf); - ret = verify16_invalidfieldincdb(iscsic, tgt_lun, 0, block_size, - block_size, i, 0, 1, buf); + ret = verify16(iscsic, tgt_lun, 0, block_size, + block_size, i, 0, 1, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support VERIFY16. Skipping test"); From 8ffd78c117e39617c3bbe38993ee4a6d521d266f Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 16 Sep 2014 16:33:13 -0700 Subject: [PATCH 04/53] temp: redo the write10/12/16 commands to the new saner api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 798 ++----------------- test-tool/iscsi-support.h | 18 +- test-tool/test_compareandwrite_miscompare.c | 6 +- test-tool/test_compareandwrite_simple.c | 6 +- test-tool/test_get_lba_status_unmap_single.c | 6 +- test-tool/test_iscsi_datasn_invalid.c | 12 +- test-tool/test_nomedia_sbc.c | 15 +- test-tool/test_orwrite_verify.c | 6 +- test-tool/test_readonly_sbc.c | 15 +- test-tool/test_sanitize_block_erase.c | 3 +- test-tool/test_sanitize_crypto_erase.c | 3 +- test-tool/test_sanitize_overwrite.c | 3 +- test-tool/test_unmap_simple.c | 3 +- test-tool/test_write10_0blocks.c | 18 +- test-tool/test_write10_beyond_eol.c | 23 +- test-tool/test_write10_flags.c | 20 +- test-tool/test_write10_residuals.c | 6 +- test-tool/test_write10_simple.c | 6 +- test-tool/test_write10_wrprotect.c | 7 +- test-tool/test_write12_0blocks.c | 18 +- test-tool/test_write12_beyond_eol.c | 23 +- test-tool/test_write12_flags.c | 20 +- test-tool/test_write12_residuals.c | 6 +- test-tool/test_write12_simple.c | 6 +- test-tool/test_write12_wrprotect.c | 7 +- test-tool/test_write16_0blocks.c | 18 +- test-tool/test_write16_beyond_eol.c | 23 +- test-tool/test_write16_flags.c | 20 +- test-tool/test_write16_residuals.c | 6 +- test-tool/test_write16_simple.c | 6 +- test-tool/test_write16_wrprotect.c | 7 +- test-tool/test_writesame10_unmap.c | 12 +- test-tool/test_writesame10_unmap_until_end.c | 4 +- test-tool/test_writesame16_unmap.c | 17 +- test-tool/test_writesame16_unmap_until_end.c | 5 +- test-tool/test_writeverify10_residuals.c | 6 +- test-tool/test_writeverify12_residuals.c | 6 +- test-tool/test_writeverify16_residuals.c | 6 +- 38 files changed, 269 insertions(+), 921 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index fb95060..8953d02 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -3519,61 +3519,15 @@ verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, i } int -write10(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) +write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITE10 LBA:%d blocks:%d " + logging(LOG_VERBOSE, "Send WRITE10 (Expecting %s) LBA:%d blocks:%d " "wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write10_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE10 returned SUCCESS."); - return 0; -} - -int -write10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE10 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, fua, fua_nv, group); @@ -3582,263 +3536,31 @@ write10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, return -1; } - task = iscsi_write10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE10 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITE10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_write10(lba, datalen, blocksize, wrprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE10 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITE10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -write10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) +write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITE10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE10 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITE10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE10 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -write10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE10 (Expecting WRITE_PROTECTED) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE10 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITE10 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE10 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -write10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE10 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITE10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE10 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -write12(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE12 LBA:%d blocks:%d " + logging(LOG_VERBOSE, "Send WRITE12 (Expecting %s) LBA:%d blocks:%d " "wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write12_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE12 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE12 returned SUCCESS."); - return 0; -} - -int -write12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE12 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, fua, fua_nv, group); @@ -3847,53 +3569,31 @@ write12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, return -1; } - task = iscsi_write12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE12 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITE12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_write12(lba, datalen, blocksize, wrprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE12 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITE12", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -write12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) +write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITE12 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + logging(LOG_VERBOSE, "Send WRITE16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, fua, fua_nv, group); @@ -3902,415 +3602,19 @@ write12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, return -1; } - task = iscsi_write12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + task = scsi_cdb_write16(lba, datalen, blocksize, wrprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITE16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE12 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITE12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE12 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -write12_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE12 (Expecting WRITE_PROTECTED) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE12 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITE12 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE12 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -write12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE12 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE12 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITE12 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE12 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -write16(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE16 LBA:%" PRId64 " blocks:%d " - "wrprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write16_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE16 returned SUCCESS."); - return 0; -} - -int -write16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE16 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRId64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITE16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE16 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -write16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRId64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITE16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE16 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -write16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE16 (Expecting WRITE_PROTECTED) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITE16 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE16 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -write16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITE16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, fua, fua_nv, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_write16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITE16 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITE16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITE16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 05825ea..17ffd17 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -311,21 +311,9 @@ int unmap_nomedium(struct iscsi_context *iscsi, int lun, int anchor, struct unma int verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write12_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int write16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); +int write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); int writesame10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); int writesame10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); diff --git a/test-tool/test_compareandwrite_miscompare.c b/test-tool/test_compareandwrite_miscompare.c index cf88110..63b0d5a 100644 --- a/test-tool/test_compareandwrite_miscompare.c +++ b/test-tool/test_compareandwrite_miscompare.c @@ -54,7 +54,8 @@ test_compareandwrite_miscompare(void) break; } ret = write16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -124,7 +125,8 @@ test_compareandwrite_miscompare(void) break; } ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Change byte 27 from the end to 'C' so that it does not match."); diff --git a/test-tool/test_compareandwrite_simple.c b/test-tool/test_compareandwrite_simple.c index 7e8b4c7..c389ede 100644 --- a/test-tool/test_compareandwrite_simple.c +++ b/test-tool/test_compareandwrite_simple.c @@ -55,7 +55,8 @@ test_compareandwrite_simple(void) break; } ret = write16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -123,7 +124,8 @@ test_compareandwrite_simple(void) break; } ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (i > maxbl) { diff --git a/test-tool/test_get_lba_status_unmap_single.c b/test-tool/test_get_lba_status_unmap_single.c index a41e7d1..dd45312 100644 --- a/test-tool/test_get_lba_status_unmap_single.c +++ b/test-tool/test_get_lba_status_unmap_single.c @@ -50,7 +50,8 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", 256 + lbppb); ret = write10(iscsic, tgt_lun, 0, (256 + lbppb) * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); for (i = 0; i + lbppb <= 256; i += lbppb) { @@ -92,7 +93,8 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", (256 + lbppb)); ret = write10(iscsic, tgt_lun, 0, (256 + lbppb) * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %" PRIu64 " blocks at LBA 0", i); list[0].lba = 0; diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c index 029395a..897975b 100644 --- a/test-tool/test_iscsi_datasn_invalid.c +++ b/test-tool/test_iscsi_datasn_invalid.c @@ -76,7 +76,8 @@ void test_iscsi_datasn_invalid(void) iscsi_set_timeout(iscsic, 3); ret = write10(iscsic, tgt_lun, 100, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -98,7 +99,8 @@ void test_iscsi_datasn_invalid(void) iscsi_set_timeout(iscsic, 3); ret = write10(iscsic, tgt_lun, 100, block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -120,7 +122,8 @@ void test_iscsi_datasn_invalid(void) iscsi_set_timeout(iscsic, 3); ret = write10(iscsic, tgt_lun, 100, block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -143,7 +146,8 @@ void test_iscsi_datasn_invalid(void) iscsi_set_timeout(iscsic, 3); ret = write10(iscsic, tgt_lun, 100, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 847ae6d..0bf27b2 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -166,18 +166,21 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITE10 when medium is ejected."); - ret = write10_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 when medium is ejected."); - ret = write12_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 when medium is ejected."); - ret = write16_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 when medium is ejected."); diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index 71aa02c..7fb6573 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -48,7 +48,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); ret = write10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); @@ -99,7 +100,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index 9844b5e..e7620c9 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -41,18 +41,21 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test WRITE10 fails with WRITE_PROTECTED"); - ret = write10_writeprotected(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 fails with WRITE_PROTECTED"); - ret = write12_writeprotected(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 fails with WRITE_PROTECTED"); - ret = write16_writeprotected(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE_SAME10 fails with WRITE_PROTECTED"); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index e99d5fe..8c59a59 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -196,7 +196,8 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) memset(buf, 'a', 256 * block_size); ret = write16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 754979a..47edb57 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -106,7 +106,8 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) memset(buf, 'a', 256 * block_size); ret = write16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_overwrite.c b/test-tool/test_sanitize_overwrite.c index 963dcbd..4808b4b 100644 --- a/test-tool/test_sanitize_overwrite.c +++ b/test-tool/test_sanitize_overwrite.c @@ -34,7 +34,8 @@ init_lun_with_data(uint64_t lba) memset(buf, 'a', 256 * block_size); ret = write16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index d080ae5..51e786d 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -32,7 +32,8 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) memset(buf, 'a', 256 * block_size); ret = write10(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write10_0blocks.c b/test-tool/test_write10_0blocks.c index 57f6666..351b904 100644 --- a/test-tool/test_write10_0blocks.c +++ b/test-tool/test_write10_0blocks.c @@ -33,7 +33,8 @@ test_write10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==0"); ret = write10(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -47,19 +48,22 @@ test_write10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITE10 0-blocks one block past end-of-LUN"); - ret = write10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write10(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==2^31"); - ret = write10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write10(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==-1"); - ret = write10_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = write10(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write10_beyond_eol.c b/test-tool/test_write10_beyond_eol.c index db4b3c3..ffc6fe2 100644 --- a/test-tool/test_write10_beyond_eol.c +++ b/test-tool/test_write10_beyond_eol.c @@ -44,9 +44,9 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -61,9 +61,9 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -73,8 +73,9 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -84,9 +85,9 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_write10_flags.c b/test-tool/test_write10_flags.c index e4306a4..8faed5f 100644 --- a/test-tool/test_write10_flags.c +++ b/test-tool/test_write10_flags.c @@ -39,8 +39,8 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 with DPO==1"); ret = write10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -51,28 +51,28 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==0"); ret = write10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, buf); + block_size, block_size, 0, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==1"); ret = write10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, buf); + block_size, block_size, 0, 0, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==0 FUA_NV==1"); ret = write10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with DPO==1 FUA==1 FUA_NV==1"); ret = write10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, buf); + block_size, block_size, 0, 1, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index 1e9d1d5..b3ee989 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -242,7 +242,8 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write10(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -316,7 +317,8 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write10(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); diff --git a/test-tool/test_write10_simple.c b/test-tool/test_write10_simple.c index 6ad4726..abe60a4 100644 --- a/test-tool/test_write10_simple.c +++ b/test-tool/test_write10_simple.c @@ -43,7 +43,8 @@ test_write10_simple(void) break; } ret = write10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); @@ -58,7 +59,8 @@ test_write10_simple(void) break; } ret = write10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write10_wrprotect.c b/test-tool/test_write10_wrprotect.c index 2adb17f..451de15 100644 --- a/test-tool/test_write10_wrprotect.c +++ b/test-tool/test_write10_wrprotect.c @@ -44,9 +44,10 @@ test_write10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, buf); + ret = write10(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE10 is not implemented."); CU_PASS("WRITE10 is not implemented."); diff --git a/test-tool/test_write12_0blocks.c b/test-tool/test_write12_0blocks.c index ea720a8..fe13249 100644 --- a/test-tool/test_write12_0blocks.c +++ b/test-tool/test_write12_0blocks.c @@ -38,7 +38,8 @@ test_write12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==0"); ret = write12(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); CU_PASS("WRITE12 is not implemented."); @@ -47,19 +48,22 @@ test_write12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks one block past end-of-LUN"); - ret = write12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write12(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==2^31"); - ret = write12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write12(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==-1"); - ret = write12_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = write12(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write12_beyond_eol.c b/test-tool/test_write12_beyond_eol.c index 405d948..1da9c08 100644 --- a/test-tool/test_write12_beyond_eol.c +++ b/test-tool/test_write12_beyond_eol.c @@ -44,9 +44,9 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); CU_PASS("WRITE12 is not implemented."); @@ -61,9 +61,9 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -73,8 +73,9 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -84,9 +85,9 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_write12_flags.c b/test-tool/test_write12_flags.c index 860ca38..d68947a 100644 --- a/test-tool/test_write12_flags.c +++ b/test-tool/test_write12_flags.c @@ -39,8 +39,8 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 with DPO==1"); ret = write12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); CU_PASS("WRITE12 is not implemented."); @@ -51,28 +51,28 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==0"); ret = write12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, buf); + block_size, block_size, 0, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==1"); ret = write12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, buf); + block_size, block_size, 0, 0, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==0 FUA_NV==1"); ret = write12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with DPO==1 FUA==1 FUA_NV==1"); ret = write12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, buf); + block_size, block_size, 0, 1, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write12_residuals.c b/test-tool/test_write12_residuals.c index 4e278e6..aebccdb 100644 --- a/test-tool/test_write12_residuals.c +++ b/test-tool/test_write12_residuals.c @@ -242,7 +242,8 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write12(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -316,7 +317,8 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write12(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); diff --git a/test-tool/test_write12_simple.c b/test-tool/test_write12_simple.c index c5639d7..266c134 100644 --- a/test-tool/test_write12_simple.c +++ b/test-tool/test_write12_simple.c @@ -42,7 +42,8 @@ test_write12_simple(void) break; } ret = write12(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); CU_PASS("WRITE12 is not implemented."); @@ -57,7 +58,8 @@ test_write12_simple(void) break; } ret = write12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write12_wrprotect.c b/test-tool/test_write12_wrprotect.c index daf1093..7422dad 100644 --- a/test-tool/test_write12_wrprotect.c +++ b/test-tool/test_write12_wrprotect.c @@ -45,9 +45,10 @@ test_write12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write12_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, buf); + ret = write12(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE12 is not implemented."); CU_PASS("WRITE12 is not implemented."); diff --git a/test-tool/test_write16_0blocks.c b/test-tool/test_write16_0blocks.c index fde3006..2b60a6a 100644 --- a/test-tool/test_write16_0blocks.c +++ b/test-tool/test_write16_0blocks.c @@ -34,7 +34,8 @@ test_write16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0"); ret = write16(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -43,19 +44,22 @@ test_write16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN"); - ret = write16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write16(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==2^63"); - ret = write16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = write16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==-1"); - ret = write16_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = write16(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write16_beyond_eol.c b/test-tool/test_write16_beyond_eol.c index 7b16327..6caa71e 100644 --- a/test-tool/test_write16_beyond_eol.c +++ b/test-tool/test_write16_beyond_eol.c @@ -42,9 +42,9 @@ test_write16_beyond_eol(void) break; } - ret = write16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -59,9 +59,9 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, 0x8000000000000000ULL, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -71,8 +71,9 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -82,9 +83,9 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_write16_flags.c b/test-tool/test_write16_flags.c index dadaa11..b7c09c6 100644 --- a/test-tool/test_write16_flags.c +++ b/test-tool/test_write16_flags.c @@ -40,8 +40,8 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 with DPO==1"); ret = write16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -52,28 +52,28 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==0"); ret = write16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, buf); + block_size, block_size, 0, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==1"); ret = write16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, buf); + block_size, block_size, 0, 0, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==0 FUA_NV==1"); ret = write16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with DPO==1 FUA==1 FUA_NV==1"); ret = write16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, buf); + block_size, block_size, 0, 1, 1, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index e9ecb1c..4a9d58c 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -237,7 +237,8 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write16(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -311,7 +312,8 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write16(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); diff --git a/test-tool/test_write16_simple.c b/test-tool/test_write16_simple.c index f55e40b..9504ab4 100644 --- a/test-tool/test_write16_simple.c +++ b/test-tool/test_write16_simple.c @@ -44,7 +44,8 @@ test_write16_simple(void) break; } ret = write16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); @@ -59,7 +60,8 @@ test_write16_simple(void) break; } ret = write16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_write16_wrprotect.c b/test-tool/test_write16_wrprotect.c index bc8e064..27c745d 100644 --- a/test-tool/test_write16_wrprotect.c +++ b/test-tool/test_write16_wrprotect.c @@ -44,9 +44,10 @@ test_write16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, buf); + ret = write16(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE16 is not implemented."); CU_PASS("WRITE16 is not implemented."); diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index bc950d6..69fbc03 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -45,8 +45,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write10(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); @@ -83,8 +83,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); @@ -158,8 +158,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write10(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index 8cbc761..a8308db 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -48,8 +48,8 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); ret = write10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); diff --git a/test-tool/test_writesame16_unmap.c b/test-tool/test_writesame16_unmap.c index 513cb5d..4d2badc 100644 --- a/test-tool/test_writesame16_unmap.c +++ b/test-tool/test_writesame16_unmap.c @@ -47,9 +47,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write16(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); - + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, @@ -85,8 +84,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); @@ -156,8 +155,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write16(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); @@ -207,8 +206,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); ret = write16(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); diff --git a/test-tool/test_writesame16_unmap_until_end.c b/test-tool/test_writesame16_unmap_until_end.c index 71c2347..2ed02a4 100644 --- a/test-tool/test_writesame16_unmap_until_end.c +++ b/test-tool/test_writesame16_unmap_until_end.c @@ -48,9 +48,8 @@ test_writesame16_unmap_until_end(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); ret = write16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); - + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); ret = writesame16(iscsic, tgt_lun, num_blocks - i, 0, i, diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index 881da07..f788121 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -246,7 +246,8 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write10(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -320,7 +321,8 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write10(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index ac7e731..d7509eb 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -246,7 +246,8 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write12(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -320,7 +321,8 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write12(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index dc19f03..d9dafc3 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -247,7 +247,8 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write16(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write one block of 'b' but set iSCSI EDTL to 2 blocks."); @@ -321,7 +322,8 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); ret = write16(iscsic, tgt_lun, 0, 2 * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Write two blocks of 'b' but set iSCSI EDTL to 1 blocks."); From d3f98dfdd5ae303bb96a3b816869c450ed3b0282 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 09:38:33 -0700 Subject: [PATCH 05/53] TESTS: rework WRITEVERIFY* tests to the new API Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 801 ++-------------------- test-tool/iscsi-support.h | 18 +- test-tool/test_nomedia_sbc.c | 15 +- test-tool/test_readonly_sbc.c | 18 +- test-tool/test_writeverify10_0blocks.c | 18 +- test-tool/test_writeverify10_beyond_eol.c | 23 +- test-tool/test_writeverify10_flags.c | 8 +- test-tool/test_writeverify10_residuals.c | 3 +- test-tool/test_writeverify10_simple.c | 6 +- test-tool/test_writeverify10_wrprotect.c | 7 +- test-tool/test_writeverify12_0blocks.c | 18 +- test-tool/test_writeverify12_beyond_eol.c | 23 +- test-tool/test_writeverify12_flags.c | 8 +- test-tool/test_writeverify12_residuals.c | 3 +- test-tool/test_writeverify12_simple.c | 6 +- test-tool/test_writeverify12_wrprotect.c | 7 +- test-tool/test_writeverify16_0blocks.c | 22 +- test-tool/test_writeverify16_beyond_eol.c | 28 +- test-tool/test_writeverify16_flags.c | 8 +- test-tool/test_writeverify16_residuals.c | 3 +- test-tool/test_writeverify16_simple.c | 6 +- test-tool/test_writeverify16_wrprotect.c | 7 +- 22 files changed, 189 insertions(+), 867 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 8953d02..670b7e8 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -4165,60 +4165,17 @@ writesame16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_ int writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) + uint32_t datalen, int blocksize, int wrprotect, + int dpo, int bytchk, int group, unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITEVERIFY10 LBA:%d blocks:%d " - "wrprotect:%d dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify10_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY10 returned SUCCESS."); - return 0; -} - -int -writeverify10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY10 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", + logging(LOG_VERBOSE, "Send WRITEVERIFY10 (Expecting %s) LBA:%d " + "blocks:%d wrprotect:%d dpo:%d bytchk:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, bytchk, group); @@ -4227,263 +4184,34 @@ writeverify10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t l return -1; } - task = iscsi_writeverify10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + task = scsi_cdb_writeverify10(lba, datalen, blocksize, wrprotect, + dpo, bytchk, group); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITEVERIFY10", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY10 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -writeverify10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY10 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -writeverify10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY10 (Expecting WRITE_PROTECTED) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY10 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -writeverify10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify10_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY10 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) + uint32_t datalen, int blocksize, int wrprotect, + int dpo, int bytchk, int group, unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITEVERIFY12 LBA:%d blocks:%d " - "wrprotect:%d dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify12_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY12 returned SUCCESS."); - return 0; -} - -int -writeverify12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY12 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", + logging(LOG_VERBOSE, "Send WRITEVERIFY12 (Expecting %s) LBA:%d " + "blocks:%d wrprotect:%d dpo:%d bytchk:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, bytchk, group); @@ -4492,263 +4220,34 @@ writeverify12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t l return -1; } - task = iscsi_writeverify12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + task = scsi_cdb_writeverify12(lba, datalen, blocksize, wrprotect, + dpo, bytchk, group); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITEVERIFY12", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY12 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -writeverify12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY12 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY12 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -writeverify12_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY12 (Expecting WRITE_PROTECTED) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY12 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -writeverify12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY12 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify12_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY12 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY12 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) + uint32_t datalen, int blocksize, int wrprotect, + int dpo, int bytchk, int group, unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITEVERIFY16 LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify16_sync(iscsi, lun, lba, - data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY16 returned SUCCESS."); - return 0; -} - -int -writeverify16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY16 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", + logging(LOG_VERBOSE, "Send WRITEVERIFY16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d wrprotect:%d dpo:%d bytchk:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, wrprotect, dpo, bytchk, group); @@ -4757,205 +4256,19 @@ writeverify16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t l return -1; } - task = iscsi_writeverify16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + task = scsi_cdb_writeverify16(lba, datalen, blocksize, wrprotect, + dpo, bytchk, group); + assert(task != NULL); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITEVERIFY16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY16 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -writeverify16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY16 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -writeverify16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY16 (Expecting WRITE_PROTECTED) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY16 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -writeverify16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int wrprotect, - int dpo, int bytchk, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITEVERIFY16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d wrprotect:%d " - "dpo:%d bytchk:%d group:%d", - lba, datalen / blocksize, wrprotect, - dpo, bytchk, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writeverify16_sync(iscsi, lun, lba, data, datalen, blocksize, - wrprotect, dpo, bytchk, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITEVERIFY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITEVERIFY16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITEVERIFY16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 17ffd17..b0d8e73 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -324,21 +324,9 @@ int writesame16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba int writesame16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); int writesame16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); int writesame16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify12_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); -int writeverify16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data); +int writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int set_swp(struct iscsi_context *iscsi, int lun); int clear_swp(struct iscsi_context *iscsi, int lun); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 0bf27b2..b6bf964 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -184,8 +184,9 @@ test_nomedia_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 when medium is ejected."); - ret = writeverify10_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "WRITEVERIFY10"); @@ -194,8 +195,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY12 when medium is ejected."); - ret = writeverify12_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "WRITEVERIFY12"); @@ -204,8 +206,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY16 when medium is ejected."); - ret = writeverify16_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "WRITEVERIFY16"); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index e7620c9..c2f45bd 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -111,27 +111,27 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY10 fails with WRITE_PROTECTED"); - ret = writeverify10_writeprotected(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, 0, + block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITEVERIFY10 not supported on target. Skipped."); } CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY12 fails with WRITE_PROTECTED"); - ret = writeverify12_writeprotected(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, 0, + block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITEVERIFY12 not supported on target. Skipped."); } CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY16 fails with WRITE_PROTECTED"); - ret = writeverify16_writeprotected(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, 0, + block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITEVERIFY16 not supported on target. Skipped."); } diff --git a/test-tool/test_writeverify10_0blocks.c b/test-tool/test_writeverify10_0blocks.c index 920fc40..93e98b2 100644 --- a/test-tool/test_writeverify10_0blocks.c +++ b/test-tool/test_writeverify10_0blocks.c @@ -38,7 +38,8 @@ test_writeverify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==0"); ret = writeverify10(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, NULL); + 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); @@ -47,19 +48,22 @@ test_writeverify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks one block past end-of-LUN"); - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, NULL); + ret = writeverify10(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==2^31"); - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 0, 0, NULL); + ret = writeverify10(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==-1"); - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, NULL); + ret = writeverify10(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify10_beyond_eol.c b/test-tool/test_writeverify10_beyond_eol.c index b89b000..0106796 100644 --- a/test-tool/test_writeverify10_beyond_eol.c +++ b/test-tool/test_writeverify10_beyond_eol.c @@ -44,9 +44,9 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); @@ -61,9 +61,9 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -73,8 +73,9 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -84,9 +85,9 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writeverify10_flags.c b/test-tool/test_writeverify10_flags.c index 48a8425..6995887 100644 --- a/test-tool/test_writeverify10_flags.c +++ b/test-tool/test_writeverify10_flags.c @@ -39,8 +39,8 @@ test_writeverify10_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY10 with DPO==1"); ret = writeverify10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); @@ -50,7 +50,7 @@ test_writeverify10_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY10 with BYTCHK==1"); ret = writeverify10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index f788121..85b09bd 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -45,7 +45,8 @@ test_writeverify10_residuals(void) /* check if writeverify10 is supported */ ret = writeverify10(iscsic, tgt_lun, 0, 0, - block_size, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support WRITEVERIFY10. Skipping test"); return; diff --git a/test-tool/test_writeverify10_simple.c b/test-tool/test_writeverify10_simple.c index f44d93a..ccf3cba 100644 --- a/test-tool/test_writeverify10_simple.c +++ b/test-tool/test_writeverify10_simple.c @@ -42,7 +42,8 @@ test_writeverify10_simple(void) break; } ret = writeverify10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITEVERIFY10. Skipping test"); @@ -57,7 +58,8 @@ test_writeverify10_simple(void) break; } ret = writeverify10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify10_wrprotect.c b/test-tool/test_writeverify10_wrprotect.c index 649f042..8e3c738 100644 --- a/test-tool/test_writeverify10_wrprotect.c +++ b/test-tool/test_writeverify10_wrprotect.c @@ -44,9 +44,10 @@ test_writeverify10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, buf); + ret = writeverify10(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); diff --git a/test-tool/test_writeverify12_0blocks.c b/test-tool/test_writeverify12_0blocks.c index 1d8b60d..0564408 100644 --- a/test-tool/test_writeverify12_0blocks.c +++ b/test-tool/test_writeverify12_0blocks.c @@ -38,7 +38,8 @@ test_writeverify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==0"); ret = writeverify12(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, NULL); + 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); @@ -47,19 +48,22 @@ test_writeverify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks one block past end-of-LUN"); - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, NULL); + ret = writeverify12(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==2^31"); - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, - block_size, 0, 0, 0, 0, NULL); + ret = writeverify12(iscsic, tgt_lun, 0x80000000, 0, + block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==-1"); - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, NULL); + ret = writeverify12(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify12_beyond_eol.c b/test-tool/test_writeverify12_beyond_eol.c index 29d900b..69d1e46 100644 --- a/test-tool/test_writeverify12_beyond_eol.c +++ b/test-tool/test_writeverify12_beyond_eol.c @@ -44,9 +44,9 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); @@ -61,9 +61,9 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -73,8 +73,9 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -84,9 +85,9 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writeverify12_flags.c b/test-tool/test_writeverify12_flags.c index 719ca16..cf8b08a 100644 --- a/test-tool/test_writeverify12_flags.c +++ b/test-tool/test_writeverify12_flags.c @@ -39,8 +39,8 @@ test_writeverify12_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY12 with DPO==1"); ret = writeverify12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); @@ -50,7 +50,7 @@ test_writeverify12_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY12 with BYTCHK==1"); ret = writeverify12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index d7509eb..64f1196 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -45,7 +45,8 @@ test_writeverify12_residuals(void) /* check if writeverify12 is supported */ ret = writeverify12(iscsic, tgt_lun, 0, 0, - block_size, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support WRITEVERIFY12. Skipping test"); return; diff --git a/test-tool/test_writeverify12_simple.c b/test-tool/test_writeverify12_simple.c index 1b51bde..38f853b 100644 --- a/test-tool/test_writeverify12_simple.c +++ b/test-tool/test_writeverify12_simple.c @@ -42,7 +42,8 @@ test_writeverify12_simple(void) break; } ret = writeverify12(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); @@ -57,7 +58,8 @@ test_writeverify12_simple(void) break; } ret = writeverify12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify12_wrprotect.c b/test-tool/test_writeverify12_wrprotect.c index 7c44ada..56717ca 100644 --- a/test-tool/test_writeverify12_wrprotect.c +++ b/test-tool/test_writeverify12_wrprotect.c @@ -44,9 +44,10 @@ test_writeverify12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify12_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, buf); + ret = writeverify12(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); diff --git a/test-tool/test_writeverify16_0blocks.c b/test-tool/test_writeverify16_0blocks.c index d2b7780..621f110 100644 --- a/test-tool/test_writeverify16_0blocks.c +++ b/test-tool/test_writeverify16_0blocks.c @@ -34,8 +34,8 @@ test_writeverify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==0"); ret = writeverify16(iscsic, tgt_lun, 0, - 0, block_size, - 0, 0, 0, 0, NULL); + 0, block_size, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); @@ -44,22 +44,22 @@ test_writeverify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks one block past end-of-LUN"); - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - 0, block_size, - 0, 0, 0, 0, NULL); + ret = writeverify16(iscsic, tgt_lun, num_blocks + 1, + 0, block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==2^63"); - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - 0, block_size, - 0, 0, 0, 0, NULL); + ret = writeverify16(iscsic, tgt_lun, 0x8000000000000000ULL, + 0, block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==-1"); - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, -1, - 0, block_size, - 0, 0, 0, 0, NULL); + ret = writeverify16(iscsic, tgt_lun, -1, + 0, block_size, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify16_beyond_eol.c b/test-tool/test_writeverify16_beyond_eol.c index a1db917..e6221c4 100644 --- a/test-tool/test_writeverify16_beyond_eol.c +++ b/test-tool/test_writeverify16_beyond_eol.c @@ -41,10 +41,9 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, - num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); @@ -60,10 +59,9 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, - 0x8000000000000000ULL, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, 0x8000000000000000ULL, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -74,10 +72,9 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, - -1, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, -1, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -88,10 +85,9 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16_lbaoutofrange(iscsic, tgt_lun, - num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writeverify16_flags.c b/test-tool/test_writeverify16_flags.c index b94d539..46547c9 100644 --- a/test-tool/test_writeverify16_flags.c +++ b/test-tool/test_writeverify16_flags.c @@ -39,8 +39,8 @@ test_writeverify16_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY16 with DPO==1"); ret = writeverify16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, buf); + block_size, block_size, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); @@ -50,7 +50,7 @@ test_writeverify16_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY16 with BYTCHK==1"); ret = writeverify16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, buf); + block_size, block_size, 0, 0, 1, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index d9dafc3..f5c696c 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -45,7 +45,8 @@ test_writeverify16_residuals(void) /* check if writeverify16 is supported */ ret = writeverify16(iscsic, tgt_lun, 0, 0, - block_size, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITEVERIFY16. Skipping test"); diff --git a/test-tool/test_writeverify16_simple.c b/test-tool/test_writeverify16_simple.c index 6c864a1..cd8fa1f 100644 --- a/test-tool/test_writeverify16_simple.c +++ b/test-tool/test_writeverify16_simple.c @@ -44,7 +44,8 @@ test_writeverify16_simple(void) } ret = writeverify16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); @@ -60,7 +61,8 @@ test_writeverify16_simple(void) } ret = writeverify16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writeverify16_wrprotect.c b/test-tool/test_writeverify16_wrprotect.c index df46ce5..e8a708c 100644 --- a/test-tool/test_writeverify16_wrprotect.c +++ b/test-tool/test_writeverify16_wrprotect.c @@ -46,9 +46,10 @@ test_writeverify16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, buf); + ret = writeverify16(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); From 8585e4509b72c9d1e8f814d67d53847a75c6a535 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 10:07:10 -0700 Subject: [PATCH 06/53] TESTS: update writesame tests to new API Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 564 ++----------------- test-tool/iscsi-support.h | 12 +- test-tool/test_nomedia_sbc.c | 10 +- test-tool/test_readonly_sbc.c | 22 +- test-tool/test_writesame10_0blocks.c | 22 +- test-tool/test_writesame10_beyond_eol.c | 24 +- test-tool/test_writesame10_simple.c | 9 +- test-tool/test_writesame10_unmap.c | 34 +- test-tool/test_writesame10_unmap_unaligned.c | 4 +- test-tool/test_writesame10_unmap_until_end.c | 4 +- test-tool/test_writesame10_unmap_vpd.c | 5 +- test-tool/test_writesame10_wrprotect.c | 6 +- test-tool/test_writesame16_0blocks.c | 22 +- test-tool/test_writesame16_beyond_eol.c | 24 +- test-tool/test_writesame16_simple.c | 8 +- test-tool/test_writesame16_unmap.c | 44 +- test-tool/test_writesame16_unmap_unaligned.c | 3 +- test-tool/test_writesame16_unmap_until_end.c | 4 +- test-tool/test_writesame16_unmap_vpd.c | 5 +- test-tool/test_writesame16_wrprotect.c | 6 +- 20 files changed, 179 insertions(+), 653 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 670b7e8..7f483bc 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -3618,549 +3618,81 @@ write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, in } int -writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) +writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; - uint64_t realdatalen; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITESAME10 LBA:%d blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame10_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - if (inq_bl->wsnz == 1 && num == 0) { - logging(LOG_NORMAL, "[SKIPPED] Target does not support WRITESAME10 with NUMBER OF LOGICAL BLOCKS == 0"); - scsi_free_scsi_task(task); - return -3; - } - - if (datalen == 0) { - realdatalen = num_blocks; - } else { - realdatalen = datalen; - } - if (inq_bl->max_ws_len > 0 && realdatalen > inq_bl->max_ws_len) { - logging(LOG_NORMAL, "[SKIPPED] Number of WRITESAME10 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH"); - scsi_free_scsi_task(task); - return -4; - } - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME10 returned SUCCESS."); - return 0; -} - -int -writesame10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d " + logging(LOG_VERBOSE, "Send WRITESAME10 (Expecting %s) LBA:%d blocks:%d " "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); + scsi_status_str(status), + lba, num, wrprotect, anchor, unmap_flag, group); if (!data_loss) { printf("--dataloss flag is not set in. Skipping write\n"); return -1; } - task = iscsi_writesame10_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; + task = scsi_cdb_writesame10(wrprotect, anchor, unmap_flag, lba, group, + num, datalen); + assert(task != NULL); + + if (data != NULL) { + task->expxferlen = datalen; + } else { + task->expxferlen = 0; + task->xfer_dir = SCSI_XFER_NONE; } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME10 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITESAME10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -writesame10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) +writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send WRITESAME10 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); + logging(LOG_VERBOSE, "Send WRITESAME16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d wrprotect:%d anchor:%d unmap:%d group:%d", + scsi_status_str(status), + lba, num, wrprotect, anchor, unmap_flag, group); if (!data_loss) { printf("--dataloss flag is not set in. Skipping write\n"); return -1; } - task = iscsi_writesame10_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME10 command: %s", - iscsi_get_error(iscsi)); - return -1; + task = scsi_cdb_writesame16(wrprotect, anchor, unmap_flag, lba, group, + num, datalen); + assert(task != NULL); + + if (data != NULL) { + task->expxferlen = datalen; + } else { + task->expxferlen = 0; + task->xfer_dir = SCSI_XFER_NONE; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented on target"); + + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + + ret = check_result("WRITESAME16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME10 returned ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB."); - return 0; -} - -int -writesame10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME10 (Expecting WRITE_PROTECTED) " - "LBA:%d blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame10_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 failed with wrong sense. " - "Should have failed with DATA_PROTECTION/" - "WRITE_PROTECTED. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME10 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -writesame10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame10_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITESAME10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME10 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - uint64_t realdatalen; - - logging(LOG_VERBOSE, "Send WRITESAME16 LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame16_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - if (inq_bl->wsnz == 1 && num == 0) { - logging(LOG_NORMAL, "[SKIPPED] Target does not support WRITESAME16 with NUMBER OF LOGICAL BLOCKS == 0"); - scsi_free_scsi_task(task); - return -3; - } - - if (datalen == 0) { - realdatalen = num_blocks; - } else { - realdatalen = datalen; - } - if (inq_bl->max_ws_len > 0 && realdatalen > inq_bl->max_ws_len) { - logging(LOG_NORMAL, "[SKIPPED] Number of WRITESAME16 logical blocks to be written exceeds MAXIMUM WRITE SAME LENGTH"); - scsi_free_scsi_task(task); - return -4; - } - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME16 returned SUCCESS."); - return 0; -} - -int -writesame16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame16_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME16 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -writesame16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME16 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame16_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME16 returned ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB."); - return 0; -} - -int -writesame16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME16 (Expecting WRITE_PROTECTED) " - "LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame16_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 failed with wrong sense. " - "Should have failed with DATA_PROTECTION/" - "WRITE_PROTECTED. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME16 returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -writesame16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send WRITESAME16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d " - "wrprotect:%d anchor:%d unmap:%d group:%d", - lba, num, wrprotect, - anchor, unmap_flag, group); - - if (!data_loss) { - printf("--dataloss flag is not set in. Skipping write\n"); - return -1; - } - - task = iscsi_writesame16_sync(iscsi, lun, lba, - data, datalen, num, - anchor, unmap_flag, wrprotect, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send WRITESAME16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] WRITESAME16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] WRITESAME16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index b0d8e73..9d5bf42 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -314,16 +314,8 @@ int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datale int write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame10_writeprotected(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame16_writeprotected(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); -int writesame16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data); +int writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index b6bf964..b1a4429 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -231,8 +231,9 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "[SKIPPED] Test not implemented yet"); logging(LOG_VERBOSE, "Test WRITESAME10 when medium is ejected."); - ret = writesame10_nomedium(iscsic, tgt_lun, 0, block_size, - 1, 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, block_size, + 1, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "WRITESAME10"); @@ -241,8 +242,9 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITESAME16 when medium is ejected."); - ret = writesame16_nomedium(iscsic, tgt_lun, 0, block_size, - 1, 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, block_size, + 1, 0, 0, 0, 0, buf, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "WRITESAME16"); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index c2f45bd..03550f2 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -59,34 +59,36 @@ test_readonly_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE_SAME10 fails with WRITE_PROTECTED"); - ret = writesame10_writeprotected(iscsic, tgt_lun, 0, block_size, 1, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, block_size, 1, + 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITE_SAME10 not supported on target. Skipped."); } CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED"); - ret = writesame16_writeprotected(iscsic, tgt_lun, 0, block_size, 1, - 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, block_size, 1, + 0, 0, 0, 0, buf, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITE_SAME16 not supported on target. Skipped."); } CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME10 UNMAP fails with WRITE_PROTECTED"); - ret = writesame10_writeprotected(iscsic, tgt_lun, 0, - block_size, 1, - 0, 1, 0, 0, NULL); + ret = writesame10(iscsic, tgt_lun, 0, + block_size, 1, 0, 1, 0, 0, NULL, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITE_SAME10 not supported on target. Skipped."); } CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 UNMAP fails with WRITE_PROTECTED"); - ret = writesame16_writeprotected(iscsic, tgt_lun, 0, - block_size, 1, - 0, 1, 0, 0, NULL); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, 1, 0, 1, 0, 0, NULL, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "WRITE_SAME16 not supported on target. Skipped."); } diff --git a/test-tool/test_writesame10_0blocks.c b/test-tool/test_writesame10_0blocks.c index 11ac599..a64815a 100644 --- a/test-tool/test_writesame10_0blocks.c +++ b/test-tool/test_writesame10_0blocks.c @@ -41,8 +41,8 @@ test_writesame10_0blocks(void) logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); ret = writesame10(iscsic, tgt_lun, 0, - block_size, 0, - 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support WRITESAME10. Skipping test"); return; @@ -59,22 +59,22 @@ test_writesame10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks one block past end-of-LUN"); - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - block_size, 0, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, num_blocks + 1, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==2^31"); - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - block_size, 0, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0x80000000, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==-1"); - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, -1, - block_size, 0, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, -1, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writesame10_beyond_eol.c b/test-tool/test_writesame10_beyond_eol.c index 5eb4b60..ae415a8 100644 --- a/test-tool/test_writesame10_beyond_eol.c +++ b/test-tool/test_writesame10_beyond_eol.c @@ -43,9 +43,9 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, num_blocks - i + 1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, num_blocks - i + 1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support WRITESAME10. Skipping test"); return; @@ -56,27 +56,27 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0x80000000, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, -1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, -1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test WRITESAME10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, num_blocks - 1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writesame10_simple.c b/test-tool/test_writesame10_simple.c index 3a9c5c3..460ac34 100644 --- a/test-tool/test_writesame10_simple.c +++ b/test-tool/test_writesame10_simple.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2013 Ronnie Sahlberg @@ -42,8 +41,8 @@ test_writesame10_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { ret = writesame10(iscsic, tgt_lun, 0, - block_size, i, - 0, 0, 0, 0, buf); + block_size, i, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support WRITESAME10. Skipping test"); return; @@ -54,8 +53,8 @@ test_writesame10_simple(void) logging(LOG_VERBOSE, "Test WRITESAME10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { ret = writesame10(iscsic, tgt_lun, num_blocks - i, - block_size, i, - 0, 0, 0, 0, buf); + block_size, i, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index 69fbc03..bf86961 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -52,8 +52,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); ret = writesame10(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -90,8 +90,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); ret = writesame10(iscsic, tgt_lun, num_blocks - i, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -116,9 +116,9 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Verify that WRITESAME10 ANCHOR==1 + UNMAP==0 is " "invalid"); - ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 1, 0, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, + block_size, 1, 1, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -127,14 +127,14 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); ret = writesame10(iscsic, tgt_lun, 0, - block_size, 1, - 1, 1, 0, 0, buf); + block_size, 1, 1, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0 no " "ANC_SUP so expecting to fail"); - ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 1, 1, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, + block_size, 1, 1, 1, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); } CU_ASSERT_EQUAL(ret, 0); @@ -165,8 +165,8 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); ret = writesame10(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -193,9 +193,9 @@ test_writesame10_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); - ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, + block_size, i, 0, 1, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writesame10_unmap_unaligned.c b/test-tool/test_writesame10_unmap_unaligned.c index 9085500..9936751 100644 --- a/test-tool/test_writesame10_unmap_unaligned.c +++ b/test-tool/test_writesame10_unmap_unaligned.c @@ -42,8 +42,8 @@ test_writesame10_unmap_unaligned(void) for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10 at LBA:%d", lbppb - i, i); ret = writesame10(iscsic, tgt_lun, i, - block_size, lbppb - i, - 0, 1, 0, 0, buf); + block_size, lbppb - i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index a8308db..e3751eb 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -54,8 +54,8 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); ret = writesame10(iscsic, tgt_lun, num_blocks - i, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { diff --git a/test-tool/test_writesame10_unmap_vpd.c b/test-tool/test_writesame10_unmap_vpd.c index 98a1308..01eb714 100644 --- a/test-tool/test_writesame10_unmap_vpd.c +++ b/test-tool/test_writesame10_unmap_vpd.c @@ -43,9 +43,8 @@ test_writesame10_unmap_vpd(void) logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME10"); memset(buf, 0, block_size); ret = writesame10(iscsic, tgt_lun, 0, - block_size, 1, - 0, 1, 0, 0, buf); - + block_size, 1, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret != 0) { logging(LOG_VERBOSE, "WRITESAME10 UNMAP is not available. " "Verify that VPD settings reflect this."); diff --git a/test-tool/test_writesame10_wrprotect.c b/test-tool/test_writesame10_wrprotect.c index 579457a..6f0f5d8 100644 --- a/test-tool/test_writesame10_wrprotect.c +++ b/test-tool/test_writesame10_wrprotect.c @@ -45,9 +45,9 @@ test_writesame10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 0, 0, i, 0, buf); + ret = writesame10(iscsic, tgt_lun, 0, + block_size, 1, 0, 0, i, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME10 is not implemented."); CU_PASS("WRITESAME10 is not implemented."); diff --git a/test-tool/test_writesame16_0blocks.c b/test-tool/test_writesame16_0blocks.c index 3223f6b..16e46ab 100644 --- a/test-tool/test_writesame16_0blocks.c +++ b/test-tool/test_writesame16_0blocks.c @@ -35,8 +35,8 @@ test_writesame16_0blocks(void) logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); ret = writesame16(iscsic, tgt_lun, 0, - block_size, 0, - 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); @@ -54,22 +54,22 @@ test_writesame16_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN"); - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - block_size, inq_bl->wsnz, - 0, 0, 0, 0, NULL); + ret = writesame16(iscsic, tgt_lun, num_blocks + 1, + block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63"); - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - block_size, inq_bl->wsnz, - 0, 0, 0, 0, NULL); + ret = writesame16(iscsic, tgt_lun, 0x8000000000000000ULL, + block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1"); - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, -1, - block_size, inq_bl->wsnz, - 0, 0, 0, 0, NULL); + ret = writesame16(iscsic, tgt_lun, -1, + block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writesame16_beyond_eol.c b/test-tool/test_writesame16_beyond_eol.c index ca5dfb7..bfe445e 100644 --- a/test-tool/test_writesame16_beyond_eol.c +++ b/test-tool/test_writesame16_beyond_eol.c @@ -38,9 +38,9 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, num_blocks - i + 1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, num_blocks - i + 1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); @@ -52,27 +52,27 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0x8000000000000000ULL, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, -1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, -1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test WRITESAME16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame16_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - block_size, i, - 0, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, num_blocks - 1, + block_size, i, 0, 0, 0, 0, buf, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_writesame16_simple.c b/test-tool/test_writesame16_simple.c index c9ac093..3eba474 100644 --- a/test-tool/test_writesame16_simple.c +++ b/test-tool/test_writesame16_simple.c @@ -41,8 +41,8 @@ test_writesame16_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { ret = writesame16(iscsic, tgt_lun, 0, - block_size, i, - 0, 0, 0, 0, buf); + block_size, i, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); @@ -54,8 +54,8 @@ test_writesame16_simple(void) logging(LOG_VERBOSE, "Test WRITESAME16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { ret = writesame16(iscsic, tgt_lun, num_blocks - i, - block_size, i, - 0, 0, 0, 0, buf); + block_size, i, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writesame16_unmap.c b/test-tool/test_writesame16_unmap.c index 4d2badc..498c9a5 100644 --- a/test-tool/test_writesame16_unmap.c +++ b/test-tool/test_writesame16_unmap.c @@ -52,8 +52,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); @@ -91,8 +91,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, num_blocks - i, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -113,9 +113,9 @@ test_writesame16_unmap(void) } logging(LOG_VERBOSE, "Verify that WRITESAME16 ANCHOR==1 + UNMAP==0 is invalid"); - ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 1, 0, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, 1, 1, 0, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -124,13 +124,13 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, - block_size, 1, - 1, 1, 0, 0, buf); + block_size, 1, 1, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0 no ANC_SUP so expecting to fail"); - ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 1, 1, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, 1, 1, 1, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); } CU_ASSERT_EQUAL(ret, 0); @@ -162,8 +162,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -188,9 +188,9 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, i, 0, 1, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } @@ -213,8 +213,8 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + block_size, i, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16->lbprz) { @@ -239,9 +239,9 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, i, - 0, 1, 0, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, i, 0, 1, 0, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_writesame16_unmap_unaligned.c b/test-tool/test_writesame16_unmap_unaligned.c index 41d8ab5..8696fe3 100644 --- a/test-tool/test_writesame16_unmap_unaligned.c +++ b/test-tool/test_writesame16_unmap_unaligned.c @@ -42,7 +42,8 @@ test_writesame16_unmap_unaligned(void) for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16 at LBA:%d", lbppb - i, i); ret = writesame16(iscsic, tgt_lun, i, 0, lbppb - i, - 0, 1, 0, 0, NULL); + 0, 1, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); diff --git a/test-tool/test_writesame16_unmap_until_end.c b/test-tool/test_writesame16_unmap_until_end.c index 2ed02a4..c29c08a 100644 --- a/test-tool/test_writesame16_unmap_until_end.c +++ b/test-tool/test_writesame16_unmap_until_end.c @@ -52,8 +52,8 @@ test_writesame16_unmap_until_end(void) EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); ret = writesame16(iscsic, tgt_lun, num_blocks - i, - 0, i, - 0, 1, 0, 0, NULL); + 0, i, 0, 1, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); diff --git a/test-tool/test_writesame16_unmap_vpd.c b/test-tool/test_writesame16_unmap_vpd.c index 4489eea..90a533d 100644 --- a/test-tool/test_writesame16_unmap_vpd.c +++ b/test-tool/test_writesame16_unmap_vpd.c @@ -44,9 +44,8 @@ test_writesame16_unmap_vpd(void) logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME16"); memset(buf, 0, block_size); ret = writesame16(iscsic, tgt_lun, 0, - block_size, 1, - 0, 1, 0, 0, buf); - + block_size, 1, 0, 1, 0, 0, buf, + EXPECT_STATUS_GOOD); if (ret != 0) { logging(LOG_VERBOSE, "WRITESAME16 UNMAP is not available. " "Verify that VPD settings reflect this."); diff --git a/test-tool/test_writesame16_wrprotect.c b/test-tool/test_writesame16_wrprotect.c index 8128ef5..55c3b7e 100644 --- a/test-tool/test_writesame16_wrprotect.c +++ b/test-tool/test_writesame16_wrprotect.c @@ -45,9 +45,9 @@ test_writesame16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, 1, - 0, 0, i, 0, buf); + ret = writesame16(iscsic, tgt_lun, 0, + block_size, 1, 0, 0, i, 0, buf, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITESAME16. Skipping test"); From 4b2e9bd417e462b50c0efd09a4689b1ef43ece10 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 10:33:54 -0700 Subject: [PATCH 07/53] TESTS: update the prefetch tests to the new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 246 +++---------------------- test-tool/iscsi-support.h | 8 +- test-tool/test_nomedia_sbc.c | 5 +- test-tool/test_prefetch10_0blocks.c | 16 +- test-tool/test_prefetch10_beyond_eol.c | 16 +- test-tool/test_prefetch10_flags.c | 12 +- test-tool/test_prefetch10_simple.c | 6 +- test-tool/test_prefetch16_0blocks.c | 16 +- test-tool/test_prefetch16_beyond_eol.c | 17 +- test-tool/test_prefetch16_flags.c | 12 +- test-tool/test_prefetch16_simple.c | 6 +- 11 files changed, 85 insertions(+), 275 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 7f483bc..232d8e3 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1917,241 +1917,49 @@ int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int immed, int group) +prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send PREFETCH10 LBA:%d blocks:%d" - " immed:%d group:%d", - lba, num, immed, group); - - task = iscsi_prefetch10_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH10 returned SUCCESS."); - return 0; -} - -int -prefetch10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - int num, int immed, int group) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send PREFETCH10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d immed:%d group:%d", + logging(LOG_VERBOSE, "Send PREFETCH10 (Expecting %s) LBA:%d blocks:%d" + " immed:%d group:%d", + scsi_status_str(status), lba, num, immed, group); - task = iscsi_prefetch10_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH10 returned SUCCESS. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] PREFETCH10 failed with the wrong sense code. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_prefetch10(lba, num, immed, group); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH10 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("PREFETCH10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -prefetch10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - int num, int immed, int group) +prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send PREFETCH10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d immed:%d group:%d", + logging(LOG_VERBOSE, "Send PREFETCH16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d immed:%d group:%d", + scsi_status_str(status), lba, num, immed, group); - task = iscsi_prefetch10_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH10 command: %s", - iscsi_get_error(iscsi)); - return -1; - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented on target"); + task = scsi_cdb_prefetch16(lba, num, immed, group); + assert(task != NULL); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("PREFETCH16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH10 returned SUCCESS. Should have failed with NOT_READY/MEDIUM_NOT_PRESENT."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] PREFETCH10 failed with the wrong sense code. Should have failed with NOT_READY/MEDIUM_NOT_PRESENT but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH10 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int immed, int group) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send PREFETCH16 LBA:%" PRIu64 " blocks:%d" - " immed:%d group:%d", - lba, num, immed, group); - - task = iscsi_prefetch16_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH16 returned SUCCESS."); - return 0; -} - -int -prefetch16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, - int num, int immed, int group) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send PREFETCH16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRIu64 " blocks:%d immed:%d group:%d", - lba, num, immed, group); - - task = iscsi_prefetch16_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH16 returned SUCCESS. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] PREFETCH16 failed with the wrong sense code. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH16 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -prefetch16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, - int num, int immed, int group) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send PREFETCH16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " blocks:%d immed:%d group:%d", - lba, num, immed, group); - - task = iscsi_prefetch16_sync(iscsi, lun, lba, num, immed, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send PREFETCH16 command: %s", - iscsi_get_error(iscsi)); - return -1; - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] PREFETCH16 returned SUCCESS. Should have failed with NOT_READY/MEDIUM_NOT_PRESENT."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] PREFETCH16 failed with the wrong sense code. Should have failed with NOT_READY/MEDIUM_NOT_PRESENT but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] PREFETCH16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 9d5bf42..4603ea4 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -256,12 +256,8 @@ int get_lba_status(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t int get_lba_status_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); -int prefetch10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); -int prefetch10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group); -int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group); -int prefetch16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group); -int prefetch16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group); +int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int preventallow(struct iscsi_context *iscsi, int lun, int prevent); int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); int read6_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index b1a4429..c2995f0 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -110,7 +110,8 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH10 when medium is ejected."); - ret = prefetch10_nomedium(iscsic, tgt_lun, 0, 1, 1, 0); + ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); + if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "PREFETCH10"); @@ -119,7 +120,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH16 when medium is ejected."); - ret = prefetch16_nomedium(iscsic, tgt_lun, 0, 1, 1, 0); + ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "PREFETCH16"); diff --git a/test-tool/test_prefetch10_0blocks.c b/test-tool/test_prefetch10_0blocks.c index 43c076a..f16a27b 100644 --- a/test-tool/test_prefetch10_0blocks.c +++ b/test-tool/test_prefetch10_0blocks.c @@ -30,8 +30,8 @@ test_prefetch10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==0"); - ret = prefetch10(iscsic, tgt_lun, 0, - 0, 0, 0); + ret = prefetch10(iscsic, tgt_lun, 0, 0, 0, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); CU_PASS("PREFETCH10 is not implemented."); @@ -45,19 +45,19 @@ test_prefetch10_0blocks(void) } logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks one block past end-of-LUN"); - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - 0, 0, 0); + ret = prefetch10(iscsic, tgt_lun, num_blocks + 1, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==2^31"); - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - 0, 0, 0); + ret = prefetch10(iscsic, tgt_lun, 0x80000000, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==-1"); - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, -1, - 0, 0, 0); + ret = prefetch10(iscsic, tgt_lun, -1, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_beyond_eol.c b/test-tool/test_prefetch10_beyond_eol.c index 6c90c09..e3d6a0b 100644 --- a/test-tool/test_prefetch10_beyond_eol.c +++ b/test-tool/test_prefetch10_beyond_eol.c @@ -37,8 +37,8 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, num_blocks + 1 - i, i, 0, 0, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); CU_PASS("PREFETCH10 is not implemented."); @@ -50,24 +50,24 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, 0x80000000, i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, -1, - i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, -1, i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test PREFETCH10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, num_blocks - 1, i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_prefetch10_flags.c b/test-tool/test_prefetch10_flags.c index 93396f2..7071b26 100644 --- a/test-tool/test_prefetch10_flags.c +++ b/test-tool/test_prefetch10_flags.c @@ -34,8 +34,8 @@ test_prefetch10_flags(void) logging(LOG_VERBOSE, "Test PREFETCH10 flags"); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED==1"); - ret = prefetch10(iscsic, tgt_lun, 0, - 1, 1, 0); + ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); CU_PASS("PREFETCH10 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch10_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with GROUP==3"); - ret = prefetch10(iscsic, tgt_lun, 0, - 1, 0, 3); + ret = prefetch10(iscsic, tgt_lun, 0, 1, 0, 3, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED=1 and GROUP==3"); - ret = prefetch10(iscsic, tgt_lun, 0, - 1, 1, 3); + ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 3, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_simple.c b/test-tool/test_prefetch10_simple.c index 90dc6c0..eb5020b 100644 --- a/test-tool/test_prefetch10_simple.c +++ b/test-tool/test_prefetch10_simple.c @@ -33,7 +33,8 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, 0, i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, 0, i, 0, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); CU_PASS("PREFETCH10 is not implemented."); @@ -45,7 +46,8 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, num_blocks - i, i, 0, 0); + ret = prefetch10(iscsic, tgt_lun, num_blocks - i, i, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_prefetch16_0blocks.c b/test-tool/test_prefetch16_0blocks.c index 905cd78..d175a88 100644 --- a/test-tool/test_prefetch16_0blocks.c +++ b/test-tool/test_prefetch16_0blocks.c @@ -30,8 +30,8 @@ test_prefetch16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==0"); - ret = prefetch16(iscsic, tgt_lun, 0, - 0, 0, 0); + ret = prefetch16(iscsic, tgt_lun, 0, 0, 0, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); CU_PASS("PREFETCH16 is not implemented."); @@ -40,19 +40,19 @@ test_prefetch16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks one block past end-of-LUN"); - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, - 0, 0, 0); + ret = prefetch16(iscsic, tgt_lun, num_blocks + 1, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==2^63"); - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - 0, 0, 0); + ret = prefetch16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==-1"); - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, -1, - 0, 0, 0); + ret = prefetch16(iscsic, tgt_lun, -1, 0, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_beyond_eol.c b/test-tool/test_prefetch16_beyond_eol.c index 43b5751..7adcd6f 100644 --- a/test-tool/test_prefetch16_beyond_eol.c +++ b/test-tool/test_prefetch16_beyond_eol.c @@ -32,8 +32,8 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, num_blocks + 1 - i, i, 0, 0, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); CU_PASS("PREFETCH16 is not implemented."); @@ -45,24 +45,25 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, 0x8000000000000000ULL, + i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, -1, - i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, -1, i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test PREFETCH16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch16_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, num_blocks - 1, i, 0, 0, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_prefetch16_flags.c b/test-tool/test_prefetch16_flags.c index 7240bde..d8db486 100644 --- a/test-tool/test_prefetch16_flags.c +++ b/test-tool/test_prefetch16_flags.c @@ -34,8 +34,8 @@ test_prefetch16_flags(void) logging(LOG_VERBOSE, "Test PREFETCH16 flags"); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED==1"); - ret = prefetch16(iscsic, tgt_lun, 0, - 1, 1, 0); + ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); CU_PASS("PREFETCH16 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch16_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with GROUP==3"); - ret = prefetch16(iscsic, tgt_lun, 0, - 1, 0, 3); + ret = prefetch16(iscsic, tgt_lun, 0, 1, 0, 3, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED=1 and GROUP==3"); - ret = prefetch16(iscsic, tgt_lun, 0, - 1, 1, 3); + ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 3, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_simple.c b/test-tool/test_prefetch16_simple.c index dab69de..f31ab35 100644 --- a/test-tool/test_prefetch16_simple.c +++ b/test-tool/test_prefetch16_simple.c @@ -33,7 +33,8 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, 0, i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, 0, i, 0, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); CU_PASS("PREFETCH16 is not implemented."); @@ -45,7 +46,8 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, num_blocks - i, i, 0, 0); + ret = prefetch16(iscsic, tgt_lun, num_blocks - i, i, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } From 28b0a0ab111be7cf440630caea0267fcb4e7c477 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 13:03:23 -0700 Subject: [PATCH 08/53] TESTS: update the READ tests to the new API Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 650 ++----------------- test-tool/iscsi-support.h | 18 +- test-tool/test_compareandwrite_miscompare.c | 6 +- test-tool/test_compareandwrite_simple.c | 6 +- test-tool/test_mandatory_sbc.c | 6 +- test-tool/test_nomedia_sbc.c | 15 +- test-tool/test_orwrite_verify.c | 12 +- test-tool/test_read10_0blocks.c | 18 +- test-tool/test_read10_beyond_eol.c | 23 +- test-tool/test_read10_flags.c | 20 +- test-tool/test_read10_rdprotect.c | 7 +- test-tool/test_read10_simple.c | 6 +- test-tool/test_read12_0blocks.c | 18 +- test-tool/test_read12_beyond_eol.c | 23 +- test-tool/test_read12_flags.c | 20 +- test-tool/test_read12_rdprotect.c | 7 +- test-tool/test_read12_simple.c | 6 +- test-tool/test_read16_0blocks.c | 18 +- test-tool/test_read16_beyond_eol.c | 39 +- test-tool/test_read16_flags.c | 20 +- test-tool/test_read16_rdprotect.c | 7 +- test-tool/test_read16_simple.c | 7 +- test-tool/test_sanitize_block_erase.c | 3 +- test-tool/test_sanitize_crypto_erase.c | 3 +- test-tool/test_sanitize_overwrite.c | 3 +- test-tool/test_sanitize_reset.c | 5 +- test-tool/test_unmap_simple.c | 6 +- test-tool/test_verify10_flags.c | 3 +- test-tool/test_verify10_mismatch.c | 6 +- test-tool/test_verify10_mismatch_no_cmp.c | 6 +- test-tool/test_verify10_simple.c | 6 +- test-tool/test_verify10_vrprotect.c | 3 +- test-tool/test_verify12_flags.c | 5 +- test-tool/test_verify12_mismatch.c | 8 +- test-tool/test_verify12_mismatch_no_cmp.c | 8 +- test-tool/test_verify12_simple.c | 6 +- test-tool/test_verify12_vrprotect.c | 4 +- test-tool/test_verify16_flags.c | 4 +- test-tool/test_verify16_mismatch.c | 6 +- test-tool/test_verify16_mismatch_no_cmp.c | 6 +- test-tool/test_verify16_simple.c | 7 +- test-tool/test_verify16_vrprotect.c | 4 +- test-tool/test_write10_residuals.c | 6 +- test-tool/test_write12_residuals.c | 6 +- test-tool/test_write16_residuals.c | 6 +- test-tool/test_writesame10_unmap.c | 15 +- test-tool/test_writesame10_unmap_until_end.c | 3 +- test-tool/test_writesame16_unmap.c | 16 +- test-tool/test_writesame16_unmap_until_end.c | 3 +- test-tool/test_writeverify10_residuals.c | 6 +- test-tool/test_writeverify12_residuals.c | 6 +- test-tool/test_writeverify16_residuals.c | 6 +- 52 files changed, 324 insertions(+), 803 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 232d8e3..61ff4de 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -62,6 +62,9 @@ int invalid_cdb_ascqs[1] = { int write_protect_ascqs[1] = { SCSI_SENSE_ASCQ_WRITE_PROTECTED }; +int sanitize_ascqs[1] = { + SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS +}; struct scsi_inquiry_standard *inq; struct scsi_inquiry_logical_block_provisioning *inq_lbp; @@ -2114,653 +2117,96 @@ int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, - unsigned char *data) + unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READ10 LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ10 returned SUCCESS."); - return 0; -} - -int -read10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ10 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + logging(LOG_VERBOSE, "Send READ10 (Expecting %s) LBA:%d" + " blocks:%d rdprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, rdprotect, dpo, fua, fua_nv, group); - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ10 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] READ10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_read10(lba, datalen, blocksize, rdprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); - if (data != NULL) { + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("READ10", iscsi, task, status, key, ascq, num_ascq); + if (data) { memcpy(data, task->datain.data, task->datain.size); } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ10 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -read10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ10 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ10 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); + if (task) { scsi_free_scsi_task(task); - return -1; } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] READ10 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ10 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -read10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ10 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] READ10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ10 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, - unsigned char *data) + unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READ12 LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read12_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ12 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ12 returned SUCCESS."); - return 0; -} - -int -read12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ12 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + logging(LOG_VERBOSE, "Send READ12 (Expecting %s) LBA:%d" + " blocks:%d rdprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, rdprotect, dpo, fua, fua_nv, group); - task = iscsi_read12_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ12 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] READ12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_read12(lba, datalen, blocksize, rdprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); - if (data != NULL) { + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("READ12", iscsi, task, status, key, ascq, num_ascq); + if (data) { memcpy(data, task->datain.data, task->datain.size); } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ12 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -read12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ12 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read12_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ12 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] READ12 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ12 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -read12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ12 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read12_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ12 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ12 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] READ12 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ12 returned MEDIUM_NOT_PRESENT*."); - return 0; + return ret; } int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, - unsigned char *data) + unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READ16 LBA:%" PRId64 " blocks:%d " - "rdprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read16_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READ16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented and SBC-3 is not claimed."); - return -2; - } - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ16 returned SUCCESS."); - return 0; -} - -int -read16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ16 (Expecting INVALID_FIELD_IN_CDB) " - "LBA:%" PRId64 " blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", + logging(LOG_VERBOSE, "Send READ16 (Expecting %s) LBA:%" PRIu64 + " blocks:%d rdprotect:%d dpo:%d fua:%d fua_nv:%d group:%d", + scsi_status_str(status), lba, datalen / blocksize, rdprotect, dpo, fua, fua_nv, group); - task = iscsi_read16_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READ16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented and SBC-3 is not claimed."); - return -2; - } - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ16 successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] READ16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_read16(lba, datalen, blocksize, rdprotect, + dpo, fua, fua_nv, group); + assert(task != NULL); - if (data != NULL) { + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("READ16", iscsi, task, status, key, ascq, num_ascq); + if (data) { memcpy(data, task->datain.data, task->datain.size); } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ16 returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; -} - -int -read16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ16 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%" PRId64 " blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read16_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (task) { scsi_free_scsi_task(task); - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READ16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented and SBC-3 is not claimed."); - return -2; - } } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ16 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] READ16 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ16 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int -read16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ16 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRId64 " blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read16_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READ16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented and SBC-3 is not claimed."); - return -2; - } - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ16 successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] READ16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ16 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -read16_sanitize(struct iscsi_context *iscsi, int lun, uint64_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ16 (Expecting SANITIZE_IN_PROGRESS) " - "LBA:%" PRId64 " blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read16_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ16 successful but should " - "have failed with NOT_READY/SANITIZE_IN_PROGRESS"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || task->sense.ascq != SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS) { - logging(LOG_NORMAL, "[FAILED] READ16 Should have failed " - "with NOT_READY/SANITIZE_IN_PROGRESS But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ16 returned SANITIZE_IN_PROGRESS"); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 4603ea4..db36c19 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -35,11 +35,13 @@ extern const char *tgt_url; #define EXPECT_INVALID_FIELD_IN_CDB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, invalid_cdb_ascqs, 1 #define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, 0, 0 #define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 1 +#define EXPECT_SANITIZE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, sanitize_ascqs, 1 int no_medium_ascqs[3]; int lba_oob_ascqs[1]; int invalid_cdb_ascqs[1]; int write_protect_ascqs[1]; +int sanitize_ascqs[1]; extern int loglevel; #define LOG_SILENT 0 @@ -262,19 +264,9 @@ int preventallow(struct iscsi_context *iscsi, int lun, int prevent); int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); int read6_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); struct scsi_task *read10_task(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read10_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read10_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read12_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read12_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read12_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read16_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read16_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read16_sanitize(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); +int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi); int readcapacity10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi); int readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len); diff --git a/test-tool/test_compareandwrite_miscompare.c b/test-tool/test_compareandwrite_miscompare.c index 63b0d5a..750cc7c 100644 --- a/test-tool/test_compareandwrite_miscompare.c +++ b/test-tool/test_compareandwrite_miscompare.c @@ -101,7 +101,8 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are still unchanged as 'A'", i); ret = read16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); for (j = 0; j < i * block_size; j++) { @@ -159,7 +160,8 @@ test_compareandwrite_miscompare(void) "they are still unchanged as 'A'", i, num_blocks - i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); for (j = 0; j < i * block_size; j++) { diff --git a/test-tool/test_compareandwrite_simple.c b/test-tool/test_compareandwrite_simple.c index c389ede..bcee524 100644 --- a/test-tool/test_compareandwrite_simple.c +++ b/test-tool/test_compareandwrite_simple.c @@ -99,7 +99,8 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are all 'B'", i); ret = read16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); for (j = 0; j < i * block_size; j++) { @@ -153,7 +154,8 @@ test_compareandwrite_simple(void) " and verify they are all 'B'", i, num_blocks - i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); for (j = 0; j < i * block_size; j++) { diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index 6012955..daa0afe 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -52,13 +52,15 @@ test_mandatory_sbc(void) logging(LOG_VERBOSE, "Test READ10."); ret = read10(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READ16. the device claims SBC-3 support."); ret = read16(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index c2995f0..47f63ec 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -69,18 +69,21 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test READ10 when medium is ejected."); - ret = read10_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 when medium is ejected."); - ret = read12_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 when medium is ejected."); - ret = read16_nomedium(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10 when medium is ejected."); diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index 7fb6573..ad31849 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -66,7 +66,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Read %d blocks back", i); ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, readbuf); + block_size, 0, 0, 0, 0, 0, readbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the blocks are all 0xa5"); @@ -82,7 +83,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Read %d blocks back", i); ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, readbuf); + block_size, 0, 0, 0, 0, 0, readbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the blocks are all 0xff"); @@ -113,7 +115,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Read %d blocks back", i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, readbuf); + block_size, 0, 0, 0, 0, 0, readbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the blocks are all 0xa5"); @@ -129,7 +132,8 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Read %d blocks back", i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, - block_size, 0, 0, 0, 0, 0, readbuf); + block_size, 0, 0, 0, 0, 0, readbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the blocks are all 0xff"); diff --git a/test-tool/test_read10_0blocks.c b/test-tool/test_read10_0blocks.c index 376fbcd..b7dc994 100644 --- a/test-tool/test_read10_0blocks.c +++ b/test-tool/test_read10_0blocks.c @@ -31,7 +31,8 @@ test_read10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==0"); ret = read10(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (num_blocks > 0x80000000) { @@ -40,19 +41,22 @@ test_read10_0blocks(void) } logging(LOG_VERBOSE, "Test READ10 0-blocks one block past end-of-LUN"); - ret = read10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==2^31"); - ret = read10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, 0x80000000, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==-1"); - ret = read10_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read10_beyond_eol.c b/test-tool/test_read10_beyond_eol.c index 213cc83..621e14d 100644 --- a/test-tool/test_read10_beyond_eol.c +++ b/test-tool/test_read10_beyond_eol.c @@ -40,9 +40,9 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -52,9 +52,9 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -64,8 +64,9 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -75,9 +76,9 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read10_flags.c b/test-tool/test_read10_flags.c index c303db7..09b584b 100644 --- a/test-tool/test_read10_flags.c +++ b/test-tool/test_read10_flags.c @@ -37,35 +37,35 @@ test_read10_flags(void) logging(LOG_VERBOSE, "Test READ10 with DPO==1"); ret = read10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, NULL); + block_size, block_size, 0, 1, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==0"); ret = read10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, NULL); + block_size, block_size, 0, 0, 1, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==1"); ret = read10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, NULL); + block_size, block_size, 0, 0, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==0 FUA_NV==1"); ret = read10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, NULL); + block_size, block_size, 0, 0, 0, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with DPO==1 FUA==1 FUA_NV==1"); ret = read10(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, NULL); + block_size, block_size, 0, 1, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read10_rdprotect.c b/test-tool/test_read10_rdprotect.c index 77f475d..0b0ebc0 100644 --- a/test-tool/test_read10_rdprotect.c +++ b/test-tool/test_read10_rdprotect.c @@ -42,9 +42,10 @@ test_read10_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, NULL); + ret = read10(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } return; diff --git a/test-tool/test_read10_simple.c b/test-tool/test_read10_simple.c index 663a2e2..68a10a7 100644 --- a/test-tool/test_read10_simple.c +++ b/test-tool/test_read10_simple.c @@ -38,7 +38,8 @@ test_read10_simple(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -49,7 +50,8 @@ test_read10_simple(void) break; } ret = read10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, NULL); + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read12_0blocks.c b/test-tool/test_read12_0blocks.c index be18734..88b0811 100644 --- a/test-tool/test_read12_0blocks.c +++ b/test-tool/test_read12_0blocks.c @@ -31,7 +31,8 @@ test_read12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==0"); ret = read12(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); CU_PASS("READ12 is not implemented."); @@ -45,19 +46,22 @@ test_read12_0blocks(void) } logging(LOG_VERBOSE, "Test READ12 0-blocks one block past end-of-LUN"); - ret = read12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==2^31"); - ret = read12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, 0x80000000, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==-1"); - ret = read12_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read12_beyond_eol.c b/test-tool/test_read12_beyond_eol.c index 5de1699..87232ca 100644 --- a/test-tool/test_read12_beyond_eol.c +++ b/test-tool/test_read12_beyond_eol.c @@ -40,9 +40,9 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); CU_PASS("READ12 is not implemented."); @@ -57,9 +57,9 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12_lbaoutofrange(iscsic, tgt_lun, 0x80000000, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, 0x80000000, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -69,8 +69,9 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -80,9 +81,9 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read12_flags.c b/test-tool/test_read12_flags.c index d643f6f..7bac8b5 100644 --- a/test-tool/test_read12_flags.c +++ b/test-tool/test_read12_flags.c @@ -37,8 +37,8 @@ test_read12_flags(void) logging(LOG_VERBOSE, "Test READ12 with DPO==1"); ret = read12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, NULL); + block_size, block_size, 0, 1, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); CU_PASS("READ12 is not implemented."); @@ -49,28 +49,28 @@ test_read12_flags(void) logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==0"); ret = read12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, NULL); + block_size, block_size, 0, 0, 1, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==1"); ret = read12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, NULL); + block_size, block_size, 0, 0, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==0 FUA_NV==1"); ret = read12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, NULL); + block_size, block_size, 0, 0, 0, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with DPO==1 FUA==1 FUA_NV==1"); ret = read12(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, NULL); + block_size, block_size, 0, 1, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read12_rdprotect.c b/test-tool/test_read12_rdprotect.c index 6f9709c..b01c6e3 100644 --- a/test-tool/test_read12_rdprotect.c +++ b/test-tool/test_read12_rdprotect.c @@ -41,9 +41,10 @@ test_read12_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read12_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, NULL); + ret = read12(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); CU_PASS("READ12 is not implemented."); diff --git a/test-tool/test_read12_simple.c b/test-tool/test_read12_simple.c index ce886cf..93518fb 100644 --- a/test-tool/test_read12_simple.c +++ b/test-tool/test_read12_simple.c @@ -38,7 +38,8 @@ test_read12_simple(void) break; } ret = read12(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ12 is not implemented."); CU_PASS("READ12 is not implemented."); @@ -54,7 +55,8 @@ test_read12_simple(void) break; } ret = read12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, NULL); + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read16_0blocks.c b/test-tool/test_read16_0blocks.c index 9541136..62fb146 100644 --- a/test-tool/test_read16_0blocks.c +++ b/test-tool/test_read16_0blocks.c @@ -33,7 +33,8 @@ test_read16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==0"); ret = read16(iscsic, tgt_lun, 0, 0, block_size, - 0, 0, 0, 0, 0, NULL); + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented on this target and it does not claim SBC-3 support."); CU_PASS("READ16 is not implemented and no SBC-3 support claimed."); @@ -42,19 +43,22 @@ test_read16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks one block past end-of-LUN"); - ret = read16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, num_blocks + 1, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==2^63"); - ret = read16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, 0, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==-1"); - ret = read16_lbaoutofrange(iscsic, tgt_lun, -1, 0, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, -1, 0, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read16_beyond_eol.c b/test-tool/test_read16_beyond_eol.c index b488513..418de91 100644 --- a/test-tool/test_read16_beyond_eol.c +++ b/test-tool/test_read16_beyond_eol.c @@ -49,9 +49,9 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented on this target and it does not claim SBC-3 support."); CU_PASS("READ16 is not implemented and no SBC-3 support claimed."); @@ -67,9 +67,9 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, 0x8000000000000000ULL, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -81,10 +81,10 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, - 1ULL << (64 - ilog2(block_size)), - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, + 1ULL << (64 - ilog2(block_size)), + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -96,10 +96,10 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, - 1ULL << (63 - ilog2(block_size)), - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, + 1ULL << (63 - ilog2(block_size)), + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -110,8 +110,9 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, -1, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, -1, i * block_size, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -122,9 +123,9 @@ test_read16_beyond_eol(void) break; } - ret = read16_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read16_flags.c b/test-tool/test_read16_flags.c index 101c79b..436ebe6 100644 --- a/test-tool/test_read16_flags.c +++ b/test-tool/test_read16_flags.c @@ -37,8 +37,8 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 with DPO==1"); ret = read16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 0, 0, 0, NULL); + block_size, block_size, 0, 1, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented on this target and it does not claim SBC-3 support."); CU_PASS("READ16 is not implemented and no SBC-3 support claimed."); @@ -49,28 +49,28 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==0"); ret = read16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 0, 0, NULL); + block_size, block_size, 0, 0, 1, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==1"); ret = read16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 1, 1, 0, NULL); + block_size, block_size, 0, 0, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==0 FUA_NV==1"); ret = read16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 0, 0, 1, 0, NULL); + block_size, block_size, 0, 0, 0, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with DPO==1 FUA==1 FUA_NV==1"); ret = read16(iscsic, tgt_lun, 0, - block_size, block_size, - 0, 1, 1, 1, 0, NULL); + block_size, block_size, 0, 1, 1, 1, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read16_rdprotect.c b/test-tool/test_read16_rdprotect.c index 0abeee6..800372b 100644 --- a/test-tool/test_read16_rdprotect.c +++ b/test-tool/test_read16_rdprotect.c @@ -41,9 +41,10 @@ test_read16_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read16_invalidfieldincdb(iscsic, tgt_lun, 0, - block_size, block_size, - i, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, 0, + block_size, block_size, + i, 0, 0, 0, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ16 is not im lemented on this target and it does not claim SBC-3 support."); CU_PASS("READ16 is not implemented and no SBC-3 support claimed."); diff --git a/test-tool/test_read16_simple.c b/test-tool/test_read16_simple.c index ad92ec8..e91f241 100644 --- a/test-tool/test_read16_simple.c +++ b/test-tool/test_read16_simple.c @@ -40,7 +40,8 @@ test_read16_simple(void) } ret = read16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, NULL); + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ16 is not implemented on this target and it does not claim SBC-3 support."); CU_PASS("READ16 is not implemented and no SBC-3 support claimed."); @@ -57,8 +58,8 @@ test_read16_simple(void) } ret = read16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, NULL); - + i * block_size, block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index 8c59a59..9bf9183 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -208,7 +208,8 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) unsigned char *rbuf = alloca(256 * block_size); ret = read16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, rbuf); + block_size, 0, 0, 0, 0, 0, rbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16 == NULL) { diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 47edb57..7412189 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -118,7 +118,8 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) unsigned char *rbuf = alloca(256 * block_size); ret = read16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, rbuf); + block_size, 0, 0, 0, 0, 0, rbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (!memcmp(buf, rbuf, 256 * block_size)) { diff --git a/test-tool/test_sanitize_overwrite.c b/test-tool/test_sanitize_overwrite.c index 4808b4b..cdbfc4c 100644 --- a/test-tool/test_sanitize_overwrite.c +++ b/test-tool/test_sanitize_overwrite.c @@ -47,7 +47,8 @@ check_lun_is_wiped(uint64_t lba, char c) unsigned char *zbuf = alloca(256 * block_size); ret = read16(iscsic, tgt_lun, lba, 256 * block_size, - block_size, 0, 0, 0, 0, 0, rbuf); + block_size, 0, 0, 0, 0, 0, rbuf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); memset(zbuf, c, 256 * block_size); diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index adc48be..d8c5808 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -96,8 +96,9 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that READ16 fails with " "SANITIZE_IN_PROGRESS"); - ret = read16_sanitize(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, NULL); + ret = read16(iscsic, tgt_lun, 0, block_size, + block_size, 0, 0, 0, 0, 0, NULL, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that INQUIRY is still allowed while " diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index 51e786d..711e3b0 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -69,7 +69,8 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "Read blocks 0-%d", i); ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16 && rc16->lbprz) { @@ -102,7 +103,8 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "Read blocks 0-%d", i); ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (rc16 && rc16->lbprz) { diff --git a/test-tool/test_verify10_flags.c b/test-tool/test_verify10_flags.c index db2988d..7a6dd45 100644 --- a/test-tool/test_verify10_flags.c +++ b/test-tool/test_verify10_flags.c @@ -35,7 +35,8 @@ test_verify10_flags(void) logging(LOG_VERBOSE, "Test VERIFY10 flags"); ret = read10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch.c b/test-tool/test_verify10_mismatch.c index ea42cf4..b50f757 100644 --- a/test-tool/test_verify10_mismatch.c +++ b/test-tool/test_verify10_mismatch.c @@ -41,7 +41,8 @@ test_verify10_mismatch(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ @@ -66,7 +67,8 @@ test_verify10_mismatch(void) break; } ret = read10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify10_mismatch_no_cmp.c b/test-tool/test_verify10_mismatch_no_cmp.c index c0c81da..dca8641 100644 --- a/test-tool/test_verify10_mismatch_no_cmp.c +++ b/test-tool/test_verify10_mismatch_no_cmp.c @@ -41,7 +41,8 @@ test_verify10_mismatch_no_cmp(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ @@ -67,7 +68,8 @@ test_verify10_mismatch_no_cmp(void) break; } ret = read10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify10_simple.c b/test-tool/test_verify10_simple.c index 2f3576e..631c376 100644 --- a/test-tool/test_verify10_simple.c +++ b/test-tool/test_verify10_simple.c @@ -39,7 +39,8 @@ test_verify10_simple(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify10(iscsic, tgt_lun, 0, i * block_size, @@ -59,7 +60,8 @@ test_verify10_simple(void) break; } ret = read10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify10(iscsic, tgt_lun, num_blocks - i, diff --git a/test-tool/test_verify10_vrprotect.c b/test-tool/test_verify10_vrprotect.c index e849f0d..1408d51 100644 --- a/test-tool/test_verify10_vrprotect.c +++ b/test-tool/test_verify10_vrprotect.c @@ -41,7 +41,8 @@ test_verify10_vrprotect(void) logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { ret = read10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify10(iscsic, tgt_lun, 0, block_size, diff --git a/test-tool/test_verify12_flags.c b/test-tool/test_verify12_flags.c index 9233754..25f61d7 100644 --- a/test-tool/test_verify12_flags.c +++ b/test-tool/test_verify12_flags.c @@ -35,8 +35,9 @@ test_verify12_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 flags"); - ret = read10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = read12(iscsic, tgt_lun, 0, block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_mismatch.c b/test-tool/test_verify12_mismatch.c index be3c9c2..7de0de8 100644 --- a/test-tool/test_verify12_mismatch.c +++ b/test-tool/test_verify12_mismatch.c @@ -40,8 +40,9 @@ test_verify12_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = read12(iscsic, tgt_lun, 0, i * block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); /* flip a random byte in the data */ buf[offset] ^= 'X'; @@ -66,7 +67,8 @@ test_verify12_mismatch(void) break; } ret = read12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify12_mismatch_no_cmp.c b/test-tool/test_verify12_mismatch_no_cmp.c index 28cf446..70e9f07 100644 --- a/test-tool/test_verify12_mismatch_no_cmp.c +++ b/test-tool/test_verify12_mismatch_no_cmp.c @@ -40,8 +40,9 @@ test_verify12_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + ret = read12(iscsic, tgt_lun, 0, i * block_size, + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); /* flip a random byte in the data */ buf[offset] ^= 'X'; @@ -66,7 +67,8 @@ test_verify12_mismatch_no_cmp(void) break; } ret = read12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify12_simple.c b/test-tool/test_verify12_simple.c index 43369f9..f806da4 100644 --- a/test-tool/test_verify12_simple.c +++ b/test-tool/test_verify12_simple.c @@ -39,7 +39,8 @@ test_verify12_simple(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify12(iscsic, tgt_lun, 0, i * block_size, @@ -59,7 +60,8 @@ test_verify12_simple(void) break; } ret = read12(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify12(iscsic, tgt_lun, num_blocks - i, diff --git a/test-tool/test_verify12_vrprotect.c b/test-tool/test_verify12_vrprotect.c index e13c53e..2badd62 100644 --- a/test-tool/test_verify12_vrprotect.c +++ b/test-tool/test_verify12_vrprotect.c @@ -42,8 +42,8 @@ test_verify12_vrprotect(void) for (i = 1; i < 8; i++) { ret = read10(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); - + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); ret = verify12(iscsic, tgt_lun, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_verify16_flags.c b/test-tool/test_verify16_flags.c index d8cd38d..7091633 100644 --- a/test-tool/test_verify16_flags.c +++ b/test-tool/test_verify16_flags.c @@ -36,8 +36,8 @@ test_verify16_flags(void) logging(LOG_VERBOSE, "Test VERIFY16 flags"); ret = read16(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); - + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Test VERIFY16 with DPO==1"); ret = verify16(iscsic, tgt_lun, 0, block_size, diff --git a/test-tool/test_verify16_mismatch.c b/test-tool/test_verify16_mismatch.c index bcce490..c15d0be 100644 --- a/test-tool/test_verify16_mismatch.c +++ b/test-tool/test_verify16_mismatch.c @@ -42,7 +42,8 @@ test_verify16_mismatch(void) } ret = read16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); /* flip a random byte in the data */ buf[offset] ^= 'X'; @@ -68,7 +69,8 @@ test_verify16_mismatch(void) } ret = read16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify16_mismatch_no_cmp.c b/test-tool/test_verify16_mismatch_no_cmp.c index 4b35bb4..ee3268e 100644 --- a/test-tool/test_verify16_mismatch_no_cmp.c +++ b/test-tool/test_verify16_mismatch_no_cmp.c @@ -42,7 +42,8 @@ test_verify16_mismatch_no_cmp(void) } ret = read16(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); /* flip a random byte in the data */ buf[offset] ^= 'X'; @@ -68,7 +69,8 @@ test_verify16_mismatch_no_cmp(void) } ret = read16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); /* flip a random byte in the data */ diff --git a/test-tool/test_verify16_simple.c b/test-tool/test_verify16_simple.c index 8978319..715086a 100644 --- a/test-tool/test_verify16_simple.c +++ b/test-tool/test_verify16_simple.c @@ -39,8 +39,8 @@ test_verify16_simple(void) break; } ret = read10(iscsic, tgt_lun, 0, i * block_size, - block_size, 0, 0, 0, 0, 0, buf); - + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); ret = verify16(iscsic, tgt_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); @@ -59,7 +59,8 @@ test_verify16_simple(void) } ret = read16(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, 0, 0, 0, 0, 0, buf); + i * block_size, block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); ret = verify16(iscsic, tgt_lun, num_blocks - i, diff --git a/test-tool/test_verify16_vrprotect.c b/test-tool/test_verify16_vrprotect.c index dc2d905..f4ff94a 100644 --- a/test-tool/test_verify16_vrprotect.c +++ b/test-tool/test_verify16_vrprotect.c @@ -42,8 +42,8 @@ test_verify16_vrprotect(void) logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { ret = read16(iscsic, tgt_lun, 0, block_size, - block_size, 0, 0, 0, 0, 0, buf); - + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); ret = verify16(iscsic, tgt_lun, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index b3ee989..3fc6b42 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -290,7 +290,8 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read10(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -365,7 +366,8 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read10(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); diff --git a/test-tool/test_write12_residuals.c b/test-tool/test_write12_residuals.c index aebccdb..c56f406 100644 --- a/test-tool/test_write12_residuals.c +++ b/test-tool/test_write12_residuals.c @@ -290,7 +290,8 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read12(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -365,7 +366,8 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read12(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index 4a9d58c..cde543e 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -285,7 +285,8 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read16(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -360,7 +361,8 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read16(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index bf86961..42d62b1 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -63,8 +63,9 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); ret = read10(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < block_size * i; j++) { if (buf[j] != 0) { CU_ASSERT_EQUAL(buf[j], 0); @@ -101,8 +102,9 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); ret = read10(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < block_size * i; j++) { if (buf[j] != 0) { CU_ASSERT_EQUAL(buf[j], 0); @@ -176,8 +178,9 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); ret = read10(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < block_size * i; j++) { if (buf[j] != 0) { CU_ASSERT_EQUAL(buf[j], 0); diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index e3751eb..69cde77 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -66,7 +66,8 @@ test_writesame10_unmap_until_end(void) "are now zero", i); ret = read10(iscsic, tgt_lun, num_blocks - i, i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } diff --git a/test-tool/test_writesame16_unmap.c b/test-tool/test_writesame16_unmap.c index 498c9a5..1668402 100644 --- a/test-tool/test_writesame16_unmap.c +++ b/test-tool/test_writesame16_unmap.c @@ -68,7 +68,8 @@ test_writesame16_unmap(void) "are now zero", i); ret = read16(iscsic, tgt_lun, 0, i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } @@ -102,7 +103,8 @@ test_writesame16_unmap(void) "are now zero", i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } @@ -173,8 +175,9 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); ret = read16(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } @@ -224,8 +227,9 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); ret = read16(iscsic, tgt_lun, 0, - i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + i * block_size, block_size, + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } diff --git a/test-tool/test_writesame16_unmap_until_end.c b/test-tool/test_writesame16_unmap_until_end.c index c29c08a..3df8365 100644 --- a/test-tool/test_writesame16_unmap_until_end.c +++ b/test-tool/test_writesame16_unmap_until_end.c @@ -69,7 +69,8 @@ test_writesame16_unmap_until_end(void) "are now zero", i); ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, block_size, - 0, 0, 0, 0, 0, buf); + 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); for (j = 0; j < i; j++) { CU_ASSERT_EQUAL(memcmp(buf + j*block_size, zeroBlock, block_size), 0); } diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index 85b09bd..e4af7c1 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -295,7 +295,8 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read10(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -370,7 +371,8 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read10(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index 64f1196..f8f174b 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -295,7 +295,8 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read12(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -370,7 +371,8 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read12(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index f5c696c..b6e62ef 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -296,7 +296,8 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read16(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); @@ -371,7 +372,8 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Read the two blocks"); ret = read16(iscsic, tgt_lun, 0, 2* block_size, - block_size, 0, 0, 0, 0, 0, buf); + block_size, 0, 0, 0, 0, 0, buf, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that the first block was changed to 'b'"); From f1d198c684c5aae27332c9ace2d4a609e0c622c2 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 13:41:59 -0700 Subject: [PATCH 09/53] TESTS: update startstopunit to use new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 101 +++------------------ test-tool/iscsi-support.h | 6 +- test-tool/test_nomedia_sbc.c | 6 +- test-tool/test_preventallow_2_itnexuses.c | 9 +- test-tool/test_preventallow_cold_reset.c | 12 ++- test-tool/test_preventallow_eject.c | 12 ++- test-tool/test_preventallow_itnexus_loss.c | 12 ++- test-tool/test_preventallow_logout.c | 12 ++- test-tool/test_preventallow_lun_reset.c | 13 ++- test-tool/test_preventallow_warm_reset.c | 12 ++- test-tool/test_sanitize_reset.c | 3 +- test-tool/test_startstopunit_noloej.c | 27 ++++-- test-tool/test_startstopunit_pwrcnd.c | 6 +- test-tool/test_startstopunit_simple.c | 12 ++- 14 files changed, 108 insertions(+), 135 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 61ff4de..97b9ad9 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -65,6 +65,9 @@ int write_protect_ascqs[1] = { int sanitize_ascqs[1] = { SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS }; +int removal_ascqs[1] = { + SCSI_SENSE_ASCQ_MEDIUM_REMOVAL_PREVENTED +}; struct scsi_inquiry_standard *inq; struct scsi_inquiry_logical_block_provisioning *inq_lbp; @@ -1347,101 +1350,27 @@ int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int return 0; } -int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start) +int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send STARTSTOPUNIT IMMED:%d PCM:%d PC:%d NO_FLUSH:%d LOEJ:%d START:%d", immed, pcm, pc, no_flush, loej, start); - task = iscsi_startstopunit_sync(iscsi, lun, immed, pcm, pc, no_flush, - loej, start); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send STARTSTOPUNIT command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] STARTSTOPUNIT command: failed with sense. %s", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] STARTSTOPUNIT returned SUCCESS."); - return 0; -} - -int startstopunit_preventremoval(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send STARTSTOPUNIT (Expecting MEDIUM_REMOVAL_PREVENTED) " - "IMMED:%d PCM:%d PC:%d NO_FLUSH:%d LOEJ:%d START:%d", + logging(LOG_VERBOSE, "Send STARTSTOPUNIT (Expecting %s) IMMED:%d " + "PCM:%d PC:%d NO_FLUSH:%d LOEJ:%d START:%d", + scsi_status_str(status), immed, pcm, pc, no_flush, loej, start); - task = iscsi_startstopunit_sync(iscsi, lun, immed, pcm, pc, no_flush, - loej, start); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send STARTSTOPUNIT command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] STARTSTOPUNIT successful but should have failed with ILLEGAL_REQUEST/MEDIUM_REMOVAL_PREVENTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_REMOVAL_PREVENTED) { - logging(LOG_NORMAL, "[FAILED] STARTSTOPUNIT Should have failed " - "with ILLEGAL_REQUEST/MEDIUM_REMOVAL_PREVENTED But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] STARTSTOPUNIT returned MEDIUM_REMOVAL_PREVENTED."); - return 0; -} + task = scsi_cdb_startstopunit(immed, pcm, pc, no_flush, loej, start); + assert(task != NULL); -int startstopunit_sanitize(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start) -{ - struct scsi_task *task; + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); - logging(LOG_VERBOSE, "Send STARTSTOPUNIT (Expecting SANITIZE_IN_PROGRESS) " - "IMMED:%d PCM:%d PC:%d NO_FLUSH:%d LOEJ:%d START:%d", - immed, pcm, pc, no_flush, loej, start); - - task = iscsi_startstopunit_sync(iscsi, lun, immed, pcm, pc, no_flush, - loej, start); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send STARTSTOPUNIT command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] STARTSTOPUNIT successful but should have failed with NOT_READY/SANITIZE_IN_PROGRESS"); + ret = check_result("STARTSTOPUNIT", iscsi, task, status, key, ascq, + num_ascq); + if (task) { scsi_free_scsi_task(task); - return -1; } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || task->sense.ascq != SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS) { - logging(LOG_NORMAL, "[FAILED] STARTSTOPUNIT Should have failed " - "with NOT_READY/SANITIZE_IN_PROGRESS But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] STARTSTOPUNIT returned SANITIZE_IN_PROGRESS."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index db36c19..9662e55 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -36,12 +36,14 @@ extern const char *tgt_url; #define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, 0, 0 #define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 1 #define EXPECT_SANITIZE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, sanitize_ascqs, 1 +#define EXPECT_REMOVAL_PREVENTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, removal_ascqs, 1 int no_medium_ascqs[3]; int lba_oob_ascqs[1]; int invalid_cdb_ascqs[1]; int write_protect_ascqs[1]; int sanitize_ascqs[1]; +int removal_ascqs[1]; extern int loglevel; #define LOG_SILENT 0 @@ -280,9 +282,7 @@ int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start); -int startstopunit_sanitize(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start); -int startstopunit_preventremoval(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start); +int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed); int synchronizecache10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed); int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 47f63ec..6f4a147 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -43,7 +43,8 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Eject the medium."); - ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY when medium is ejected."); @@ -270,6 +271,7 @@ test_nomedia_sbc(void) finished: logging(LOG_VERBOSE, "Load the medium again."); - ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_2_itnexuses.c b/test-tool/test_preventallow_2_itnexuses.c index 49af325..e7a3f31 100644 --- a/test-tool/test_preventallow_2_itnexuses.c +++ b/test-tool/test_preventallow_2_itnexuses.c @@ -40,7 +40,8 @@ test_preventallow_2_itnexuses(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -55,7 +56,8 @@ test_preventallow_2_itnexuses(void) } logging(LOG_VERBOSE, "Try to eject the medium on the second connection"); - ret = startstopunit_preventremoval(iscsic2, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic2, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +73,8 @@ test_preventallow_2_itnexuses(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_cold_reset.c b/test-tool/test_preventallow_cold_reset.c index 817b841..87ee6f1 100644 --- a/test-tool/test_preventallow_cold_reset.c +++ b/test-tool/test_preventallow_cold_reset.c @@ -40,7 +40,8 @@ test_preventallow_cold_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -56,7 +57,8 @@ test_preventallow_cold_reset(void) logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -64,7 +66,8 @@ test_preventallow_cold_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -74,7 +77,8 @@ test_preventallow_cold_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_eject.c b/test-tool/test_preventallow_eject.c index 26da530..7fb6635 100644 --- a/test-tool/test_preventallow_eject.c +++ b/test-tool/test_preventallow_eject.c @@ -40,7 +40,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -52,7 +53,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -64,7 +66,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to load the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT flag"); @@ -72,7 +75,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium again"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_itnexus_loss.c b/test-tool/test_preventallow_itnexus_loss.c index 3c108a8..de9ed18 100644 --- a/test-tool/test_preventallow_itnexus_loss.c +++ b/test-tool/test_preventallow_itnexus_loss.c @@ -40,7 +40,8 @@ test_preventallow_itnexus_loss(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -59,7 +60,8 @@ test_preventallow_itnexus_loss(void) } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -67,7 +69,8 @@ test_preventallow_itnexus_loss(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -77,7 +80,8 @@ test_preventallow_itnexus_loss(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_logout.c b/test-tool/test_preventallow_logout.c index e5cc02a..607477b 100644 --- a/test-tool/test_preventallow_logout.c +++ b/test-tool/test_preventallow_logout.c @@ -40,7 +40,8 @@ test_preventallow_logout(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -60,7 +61,8 @@ test_preventallow_logout(void) } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -68,7 +70,8 @@ test_preventallow_logout(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -78,7 +81,8 @@ test_preventallow_logout(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_lun_reset.c b/test-tool/test_preventallow_lun_reset.c index fa1aa03..6ad6fab 100644 --- a/test-tool/test_preventallow_lun_reset.c +++ b/test-tool/test_preventallow_lun_reset.c @@ -40,7 +40,8 @@ test_preventallow_lun_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -56,7 +57,8 @@ test_preventallow_lun_reset(void) logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -64,7 +66,8 @@ test_preventallow_lun_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -74,7 +77,7 @@ test_preventallow_lun_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - } diff --git a/test-tool/test_preventallow_warm_reset.c b/test-tool/test_preventallow_warm_reset.c index 7f9edc3..d39e82a 100644 --- a/test-tool/test_preventallow_warm_reset.c +++ b/test-tool/test_preventallow_warm_reset.c @@ -40,7 +40,8 @@ test_preventallow_warm_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit_preventremoval(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); @@ -56,7 +57,8 @@ test_preventallow_warm_reset(void) logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); @@ -64,7 +66,8 @@ test_preventallow_warm_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -74,7 +77,8 @@ test_preventallow_warm_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1); + ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index d8c5808..ff49752 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -91,7 +91,8 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that STARTSTOPUNIT fails with " "SANITIZE_IN_PROGRESS"); - ret = startstopunit_sanitize(iscsic, tgt_lun, 1, 0, 1, 0, 1, 0); + ret = startstopunit(iscsic, tgt_lun, 1, 0, 1, 0, 1, 0, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that READ16 fails with " diff --git a/test-tool/test_startstopunit_noloej.c b/test-tool/test_startstopunit_noloej.c index 475e4ce..eca4f5a 100644 --- a/test-tool/test_startstopunit_noloej.c +++ b/test-tool/test_startstopunit_noloej.c @@ -40,7 +40,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==0"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 0, 0, 0); + 0, 0, 0, 0, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -49,7 +50,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==1"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 0, 0, 1); + 0, 0, 0, 0, 0, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -58,7 +60,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==0"); ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 0, 0, 0); + 1, 0, 0, 0, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -67,7 +70,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==1"); ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 0, 0, 1); + 1, 0, 0, 0, 0, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -76,7 +80,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==0"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 1, 0, 0); + 0, 0, 0, 1, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -85,7 +90,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==1"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 1, 0, 1); + 0, 0, 0, 1, 0, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -94,7 +100,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==0"); ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 1, 0, 0); + 1, 0, 0, 1, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -103,7 +110,8 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==1"); ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 1, 0, 1); + 1, 0, 0, 1, 0, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -112,5 +120,6 @@ test_startstopunit_noloej(void) logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1); + startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_pwrcnd.c b/test-tool/test_startstopunit_pwrcnd.c index f6a9342..1abf681 100644 --- a/test-tool/test_startstopunit_pwrcnd.c +++ b/test-tool/test_startstopunit_pwrcnd.c @@ -41,7 +41,8 @@ test_startstopunit_pwrcnd(void) logging(LOG_VERBOSE, "Test that media is not ejected when PC!=0"); for (i = 1; i < 16; i++) { ret = startstopunit(iscsic, tgt_lun, - 1, 0, i, 0, 1, 0); + 1, 0, i, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); @@ -50,5 +51,6 @@ test_startstopunit_pwrcnd(void) } logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1); + startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_simple.c b/test-tool/test_startstopunit_simple.c index c7774fb..7326a39 100644 --- a/test-tool/test_startstopunit_simple.c +++ b/test-tool/test_startstopunit_simple.c @@ -42,7 +42,8 @@ test_startstopunit_simple(void) } ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 0, 1, 0); + 1, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); if (!inq->rmb) { CU_ASSERT_NOT_EQUAL(ret, 0); return; @@ -57,7 +58,8 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); ret = startstopunit(iscsic, tgt_lun, - 1, 0, 0, 0, 1, 1); + 1, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can read from the media."); @@ -68,7 +70,8 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test we can eject removable the media with IMMED==1"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 0, 1, 0); + 0, 0, 0, 0, 1, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -79,7 +82,8 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); ret = startstopunit(iscsic, tgt_lun, - 0, 0, 0, 0, 1, 1); + 0, 0, 0, 0, 1, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can access the media again."); From fe11a6178b939e337eadd8636c20e58e283e46c6 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 13:58:21 -0700 Subject: [PATCH 10/53] TESTS: add ASCQ check to miscompare Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 3 +++ test-tool/iscsi-support.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 97b9ad9..09fd025 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -68,6 +68,9 @@ int sanitize_ascqs[1] = { int removal_ascqs[1] = { SCSI_SENSE_ASCQ_MEDIUM_REMOVAL_PREVENTED }; +int miscompare_ascqs[1] = { + SCSI_SENSE_ASCQ_MISCOMPARE_DURING_VERIFY +}; struct scsi_inquiry_standard *inq; struct scsi_inquiry_logical_block_provisioning *inq_lbp; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 9662e55..cc3b775 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -33,7 +33,7 @@ extern const char *tgt_url; #define EXPECT_NO_MEDIUM SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, no_medium_ascqs, 3 #define EXPECT_LBA_OOB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, lba_oob_ascqs, 1 #define EXPECT_INVALID_FIELD_IN_CDB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, invalid_cdb_ascqs, 1 -#define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, 0, 0 +#define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, miscompare_ascqs, 1 #define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 1 #define EXPECT_SANITIZE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, sanitize_ascqs, 1 #define EXPECT_REMOVAL_PREVENTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, removal_ascqs, 1 @@ -44,6 +44,7 @@ int invalid_cdb_ascqs[1]; int write_protect_ascqs[1]; int sanitize_ascqs[1]; int removal_ascqs[1]; +int miscompare_ascqs[1]; extern int loglevel; #define LOG_SILENT 0 From 3ee39643329bb3d342c8b6f049aec5b40dd54256 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 14:13:14 -0700 Subject: [PATCH 11/53] TESTS: change testunitready to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 121 +++------------------ test-tool/iscsi-support.h | 5 +- test-tool/test_iscsi_cmdsn_toohigh.c | 6 +- test-tool/test_iscsi_cmdsn_toolow.c | 6 +- test-tool/test_mandatory_sbc.c | 3 +- test-tool/test_nomedia_sbc.c | 3 +- test-tool/test_preventallow_2_itnexuses.c | 3 +- test-tool/test_preventallow_cold_reset.c | 8 +- test-tool/test_preventallow_eject.c | 6 +- test-tool/test_preventallow_itnexus_loss.c | 6 +- test-tool/test_preventallow_logout.c | 6 +- test-tool/test_preventallow_lun_reset.c | 8 +- test-tool/test_preventallow_warm_reset.c | 8 +- test-tool/test_sanitize_reset.c | 6 +- test-tool/test_startstopunit_noloej.c | 24 ++-- test-tool/test_startstopunit_pwrcnd.c | 3 +- test-tool/test_startstopunit_simple.c | 12 +- test-tool/test_testunitready_simple.c | 3 +- 18 files changed, 87 insertions(+), 150 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 09fd025..35d20a4 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1377,34 +1377,24 @@ int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int } int -testunitready(struct iscsi_context *iscsi, int lun) +testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send TESTUNITREADY"); - task = iscsi_testunitready_sync(iscsi, lun); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send TESTUNITREADY command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_TIMEOUT) { - logging(LOG_NORMAL, - "TESTUNITREADY timed out"); + logging(LOG_VERBOSE, "Send TESTUNITREADY (Expecting %s)", + scsi_status_str(status)); + + task = scsi_cdb_testunitready(); + assert(task != NULL); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("TESTUNITREADY", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -1; } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] TESTUNITREADY command: failed with sense. %s", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] TESTUNITREADY returned SUCCESS."); - return 0; + return ret; } int @@ -1439,91 +1429,6 @@ out: return ret; } -int -testunitready_nomedium(struct iscsi_context *iscsi, int lun) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send TESTUNITREADY (Expecting MEDIUM_NOT_PRESENT)"); - task = iscsi_testunitready_sync(iscsi, lun); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send TESTUNITREADY " - "command: %s", iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] TESTUNITREADY command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] TESTUNITREADY Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] TESTUNITREADY returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -testunitready_sanitize(struct iscsi_context *iscsi, int lun) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send TESTUNITREADY (Expecting SANITIZE_IN_PROGRESS)"); - task = iscsi_testunitready_sync(iscsi, lun); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send TESTUNITREADY " - "command: %s", iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] TESTUNITREADY command successful. But should have failed with NOT_READY/SANITIZE_IN_PROGRESS"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || task->sense.ascq != SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS) { - logging(LOG_NORMAL, "[FAILED] TESTUNITREADY Should have failed " - "with NOT_READY/SANITIZE_IN_PROGRESS But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] TESTUNITREADY returned SANITIZE_IN_PROGRESS."); - return 0; -} - -int -testunitready_conflict(struct iscsi_context *iscsi, int lun) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send TESTUNITREADY (Expecting RESERVATION_CONFLICT)"); - task = iscsi_testunitready_sync(iscsi, lun); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send TESTUNITREADY " - "command: %s", iscsi_get_error(iscsi)); - return -1; - } - if (task->status != SCSI_STATUS_RESERVATION_CONFLICT) { - logging(LOG_NORMAL, "[FAILED] Expected RESERVATION CONFLICT"); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] TESTUNITREADY returned RESERVATION_CONFLICT."); - return 0; -} - /* * Returns -1 if allocating a SCSI task failed or if a communication error * occurred and a SCSI status if a SCSI response has been received. diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index cc3b775..52b8c31 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -289,10 +289,7 @@ int synchronizecache10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t l int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed); int synchronizecache16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed); int testunitready_clear_ua(struct iscsi_context *iscsi, int lun); -int testunitready(struct iscsi_context *iscsi, int lun); -int testunitready_nomedium(struct iscsi_context *iscsi, int lun); -int testunitready_conflict(struct iscsi_context *iscsi, int lun); -int testunitready_sanitize(struct iscsi_context *iscsi, int lun); +int testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int mode_sense(struct iscsi_context *iscsi, int lun); int unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); int unmap_writeprotected(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); diff --git a/test-tool/test_iscsi_cmdsn_toohigh.c b/test-tool/test_iscsi_cmdsn_toohigh.c index 7d24a1a..f2db7f3 100644 --- a/test-tool/test_iscsi_cmdsn_toohigh.c +++ b/test-tool/test_iscsi_cmdsn_toohigh.c @@ -64,7 +64,8 @@ void test_iscsi_cmdsn_toohigh(void) iscsi_set_noautoreconnect(iscsic, 1); iscsi_set_timeout(iscsic, 3); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { logging(LOG_VERBOSE, "[SUCCESS] We did not receive a reply"); @@ -75,7 +76,8 @@ void test_iscsi_cmdsn_toohigh(void) iscsi_set_noautoreconnect(iscsic, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_iscsi_cmdsn_toolow.c b/test-tool/test_iscsi_cmdsn_toolow.c index 33257ba..a1eaea8 100644 --- a/test-tool/test_iscsi_cmdsn_toolow.c +++ b/test-tool/test_iscsi_cmdsn_toolow.c @@ -64,7 +64,8 @@ void test_iscsi_cmdsn_toolow(void) iscsi_set_noautoreconnect(iscsic, 1); iscsi_set_timeout(iscsic, 3); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { logging(LOG_VERBOSE, "[SUCCESS] We did not receive a reply"); @@ -76,7 +77,8 @@ void test_iscsi_cmdsn_toolow(void) iscsi_set_noautoreconnect(iscsic, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index daa0afe..987ec07 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -65,6 +65,7 @@ test_mandatory_sbc(void) } logging(LOG_VERBOSE, "Test TESTUNITREADY."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 6f4a147..a7484a9 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -48,7 +48,8 @@ test_nomedia_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY when medium is ejected."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE10 when medium is ejected."); diff --git a/test-tool/test_preventallow_2_itnexuses.c b/test-tool/test_preventallow_2_itnexuses.c index e7a3f31..2b14acc 100644 --- a/test-tool/test_preventallow_2_itnexuses.c +++ b/test-tool/test_preventallow_2_itnexuses.c @@ -45,7 +45,8 @@ test_preventallow_2_itnexuses(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Create a second connection to the target"); diff --git a/test-tool/test_preventallow_cold_reset.c b/test-tool/test_preventallow_cold_reset.c index 87ee6f1..a374cdb 100644 --- a/test-tool/test_preventallow_cold_reset.c +++ b/test-tool/test_preventallow_cold_reset.c @@ -45,14 +45,15 @@ test_preventallow_cold_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Perform cold reset on target"); ret = iscsi_task_mgmt_target_cold_reset_sync(iscsic); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun) != 0); + while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); CU_ASSERT_EQUAL(ret, 0); @@ -62,7 +63,8 @@ test_preventallow_cold_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); diff --git a/test-tool/test_preventallow_eject.c b/test-tool/test_preventallow_eject.c index 7fb6635..d110064 100644 --- a/test-tool/test_preventallow_eject.c +++ b/test-tool/test_preventallow_eject.c @@ -45,7 +45,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); @@ -58,7 +59,8 @@ test_preventallow_eject(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Set the PREVENT flag"); diff --git a/test-tool/test_preventallow_itnexus_loss.c b/test-tool/test_preventallow_itnexus_loss.c index de9ed18..d649c77 100644 --- a/test-tool/test_preventallow_itnexus_loss.c +++ b/test-tool/test_preventallow_itnexus_loss.c @@ -45,7 +45,8 @@ test_preventallow_itnexus_loss(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -65,7 +66,8 @@ test_preventallow_itnexus_loss(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); diff --git a/test-tool/test_preventallow_logout.c b/test-tool/test_preventallow_logout.c index 607477b..130916d 100644 --- a/test-tool/test_preventallow_logout.c +++ b/test-tool/test_preventallow_logout.c @@ -45,7 +45,8 @@ test_preventallow_logout(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -66,7 +67,8 @@ test_preventallow_logout(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); diff --git a/test-tool/test_preventallow_lun_reset.c b/test-tool/test_preventallow_lun_reset.c index 6ad6fab..625ea1a 100644 --- a/test-tool/test_preventallow_lun_reset.c +++ b/test-tool/test_preventallow_lun_reset.c @@ -45,7 +45,8 @@ test_preventallow_lun_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -53,7 +54,7 @@ test_preventallow_lun_reset(void) ret = iscsi_task_mgmt_lun_reset_sync(iscsic, tgt_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun) != 0); + while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); @@ -62,7 +63,8 @@ test_preventallow_lun_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); diff --git a/test-tool/test_preventallow_warm_reset.c b/test-tool/test_preventallow_warm_reset.c index d39e82a..02cc71b 100644 --- a/test-tool/test_preventallow_warm_reset.c +++ b/test-tool/test_preventallow_warm_reset.c @@ -45,7 +45,8 @@ test_preventallow_warm_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -53,7 +54,7 @@ test_preventallow_warm_reset(void) ret = iscsi_task_mgmt_target_warm_reset_sync(iscsic); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun) != 0); + while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); @@ -62,7 +63,8 @@ test_preventallow_warm_reset(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index ff49752..e329472 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -86,7 +86,8 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that the SANITIZE has started and that " "TESTUNITREADY fails with SANITIZE_IN_PROGRESS"); - ret = testunitready_sanitize(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that STARTSTOPUNIT fails with " @@ -155,7 +156,8 @@ test_sanitize_reset(void) } logging(LOG_VERBOSE, "Verify that the SANITIZE is still going."); - ret = testunitready_sanitize(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until the SANITIZE operation has finished"); diff --git a/test-tool/test_startstopunit_noloej.c b/test-tool/test_startstopunit_noloej.c index eca4f5a..efb4869 100644 --- a/test-tool/test_startstopunit_noloej.c +++ b/test-tool/test_startstopunit_noloej.c @@ -45,7 +45,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==1"); @@ -55,7 +56,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==0"); @@ -65,7 +67,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==1"); @@ -75,7 +78,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==0"); @@ -85,7 +89,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==1"); @@ -95,7 +100,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==0"); @@ -105,7 +111,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==1"); @@ -115,7 +122,8 @@ test_startstopunit_noloej(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_startstopunit_pwrcnd.c b/test-tool/test_startstopunit_pwrcnd.c index 1abf681..f571ce9 100644 --- a/test-tool/test_startstopunit_pwrcnd.c +++ b/test-tool/test_startstopunit_pwrcnd.c @@ -46,7 +46,8 @@ test_startstopunit_pwrcnd(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_startstopunit_simple.c b/test-tool/test_startstopunit_simple.c index 7326a39..be391fc 100644 --- a/test-tool/test_startstopunit_simple.c +++ b/test-tool/test_startstopunit_simple.c @@ -52,7 +52,8 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); @@ -63,7 +64,8 @@ test_startstopunit_simple(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can read from the media."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +78,8 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready_nomedium(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); @@ -87,6 +90,7 @@ test_startstopunit_simple(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can access the media again."); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_testunitready_simple.c b/test-tool/test_testunitready_simple.c index d01e521..443949a 100644 --- a/test-tool/test_testunitready_simple.c +++ b/test-tool/test_testunitready_simple.c @@ -30,6 +30,7 @@ test_testunitready_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test TESTUNITREADY"); - ret = testunitready(iscsic, tgt_lun); + ret = testunitready(iscsic, tgt_lun, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } From 1c14b9b911b084c4e35bafc1ad0268cf55aaaf63 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 14:19:24 -0700 Subject: [PATCH 12/53] TESTS: update read6 to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 88 +++++-------------------------- test-tool/iscsi-support.h | 3 +- test-tool/test_read6_beyond_eol.c | 18 +++---- test-tool/test_read6_simple.c | 6 ++- 4 files changed, 28 insertions(+), 87 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 35d20a4..b2e6e30 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1835,90 +1835,30 @@ preventallow(struct iscsi_context *iscsi, int lun, int prevent) int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, - unsigned char *data) + uint32_t datalen, int blocksize, + unsigned char *data, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READ6 LBA:%d blocks:%d", + logging(LOG_VERBOSE, "Send READ6 (Expecting %s) LBA:%d blocks:%d", + scsi_status_str(status), lba, datalen / blocksize); - task = iscsi_read6_sync(iscsi, lun, lba, datalen, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ6 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ6 is not implemented."); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ6 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_read6(lba, datalen, blocksize); + assert(task != NULL); - if (data != NULL) { + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("READ6", iscsi, task, status, key, ascq, num_ascq); + if (data) { memcpy(data, task->datain.data, task->datain.size); } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ6 returned SUCCESS."); - return 0; -} - -int -read6_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ6 (Expecting LBA_OUT_OF_RANGE) " - "LBA:%d blocks:%d", - lba, datalen / blocksize); - - task = iscsi_read6_sync(iscsi, lun, lba, datalen, blocksize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ6 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (task) { scsi_free_scsi_task(task); - logging(LOG_NORMAL, "[SKIPPED] READ6 is not implemented."); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READ6 successful but should " - "have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] READ6 failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "LBA_OUT_OF_RANGE. Sense:%s\n", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READ6 returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; + return ret; } struct scsi_task* diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 52b8c31..2666db7 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -264,8 +264,7 @@ int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int preventallow(struct iscsi_context *iscsi, int lun, int prevent); -int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); -int read6_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data); +int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); struct scsi_task *read10_task(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_read6_beyond_eol.c b/test-tool/test_read6_beyond_eol.c index e4ac0e2..eaeeb52 100644 --- a/test-tool/test_read6_beyond_eol.c +++ b/test-tool/test_read6_beyond_eol.c @@ -38,9 +38,9 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 1-255 blocks one block beyond the end"); for (i = 1; i <= 255; i++) { - ret = read6_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1 - i, - i * block_size, block_size, - NULL); + ret = read6(iscsic, tgt_lun, num_blocks + 1 - i, + i * block_size, block_size, NULL, + EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ6 is not implemented."); CU_PASS("READ6 is not implemented."); @@ -52,18 +52,18 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 1-255 blocks at LBA==0x1fffff"); for (i = 1; i <= 255; i++) { - ret = read6_lbaoutofrange(iscsic, tgt_lun, 0x1fffff, - i * block_size, block_size, - NULL); + ret = read6(iscsic, tgt_lun, 0x1fffff, + i * block_size, block_size, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test READ6 2-255 blocks all but one block beyond the end"); for (i = 2; i <= 255; i++) { - ret = read6_lbaoutofrange(iscsic, tgt_lun, num_blocks - 1, - i * block_size, block_size, - NULL); + ret = read6(iscsic, tgt_lun, num_blocks - 1, + i * block_size, block_size, NULL, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_read6_simple.c b/test-tool/test_read6_simple.c index fd25195..6930400 100644 --- a/test-tool/test_read6_simple.c +++ b/test-tool/test_read6_simple.c @@ -35,7 +35,8 @@ test_read6_simple(void) logging(LOG_VERBOSE, "Test READ6 of 1-255 blocks at the start of the LUN"); for (i = 1; i <= 255; i++) { ret = read6(iscsic, tgt_lun, 0, i * block_size, - block_size, NULL); + block_size, NULL, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ6 is not implemented."); CU_PASS("READ6 is not implemented."); @@ -51,7 +52,8 @@ test_read6_simple(void) } else { for (i = 1; i <= 255; i++) { ret = read6(iscsic, tgt_lun, num_blocks - i, - i * block_size, block_size, NULL); + i * block_size, block_size, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } } From 44d88e3bc6bef767cecaf01c139ef2da9eb39fb8 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 14:27:00 -0700 Subject: [PATCH 13/53] TESTS: update synchronizecache to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 168 ++++++----------------------------- test-tool/iscsi-support.h | 6 +- test-tool/test_nomedia_sbc.c | 6 +- 3 files changed, 33 insertions(+), 147 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index b2e6e30..259a09e 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1036,163 +1036,49 @@ verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) } int -synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int sync_nv, int immed) +synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE10 LBA:%d blocks:%d" - " sync_nv:%d immed:%d", + logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE10 (Expecting %s) LBA:%d" + " blocks:%d sync_nv:%d immed:%d", + scsi_status_str(status), lba, num, sync_nv, immed); - task = iscsi_synchronizecache10_sync(iscsi, lun, lba, num, - sync_nv, immed); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send SYNCHRONIZECAHCE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] SYNCHRONIZECAHCE10 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECACHE10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_synchronizecache10(lba, num_blocks, sync_nv, immed); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SYNCHRONIZECAHCE10 returned SUCCESS."); - return 0; + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("SYNCHRONIZECACHE10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -synchronizecache10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int sync_nv, int immed) +synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE10 (Expecting MEDIUM_NOT_PRESENT) LBA:%d blocks:%d" - " sync_nv:%d immed:%d", + logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE16 (Expecting %s) LBA:%" + PRIu64 " blocks:%d sync_nv:%d immed:%d", + scsi_status_str(status), lba, num, sync_nv, immed); - task = iscsi_synchronizecache10_sync(iscsi, lun, lba, num, - sync_nv, immed); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send SYNCHRONIZECAHCE10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] SYNCHRONIZECAHCE10 is not implemented on target"); + task = scsi_cdb_synchronizecache16(lba, num_blocks, sync_nv, immed); + assert(task != NULL); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("SYNCHRONIZECACHE16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECACHE10 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECAHCE10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SYNCHRONIZECAHCE10 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int sync_nv, int immed) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE16 LBA:%" PRIu64 " blocks:%d" - " sync_nv:%d immed:%d", - lba, num, sync_nv, immed); - - task = iscsi_synchronizecache16_sync(iscsi, lun, lba, num, - sync_nv, immed); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send SYNCHRONIZECAHCE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] SYNCHRONIZECAHCE16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECACHE16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SYNCHRONIZECAHCE16 returned SUCCESS."); - return 0; -} - -int -synchronizecache16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int sync_nv, int immed) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send SYNCHRONIZECACHE16 (Expecting MEDIUM_NOT_PRESENT) LBA:%" PRIu64 " blocks:%d" - " sync_nv:%d immed:%d", - lba, num, sync_nv, immed); - - task = iscsi_synchronizecache16_sync(iscsi, lun, lba, num, - sync_nv, immed); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send SYNCHRONIZECAHCE16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] SYNCHRONIZECAHCE16 is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECACHE16 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] SYNCHRONIZECACHE16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SYNCHRONIZECAHCE16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data) diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 2666db7..88676bc 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -283,10 +283,8 @@ int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed); -int synchronizecache10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed); -int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed); -int synchronizecache16_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed); +int synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int testunitready_clear_ua(struct iscsi_context *iscsi, int lun); int testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int mode_sense(struct iscsi_context *iscsi, int lun); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index a7484a9..a19f138 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -53,7 +53,8 @@ test_nomedia_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE10 when medium is ejected."); - ret = synchronizecache10_nomedium(iscsic, tgt_lun, 0, 1, 1, 1); + ret = synchronizecache10(iscsic, tgt_lun, 0, 1, 1, 1, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "SYNCHRONIZECACHE10"); @@ -62,7 +63,8 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE16 when medium is ejected."); - ret = synchronizecache16_nomedium(iscsic, tgt_lun, 0, 1, 1, 1); + ret = synchronizecache16(iscsic, tgt_lun, 0, 1, 1, 1, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "SYNCHRONIZECACHE16"); From 46eaa7dcc388934ad7e9b5e37dbbcfed245a56dc Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 14:38:40 -0700 Subject: [PATCH 14/53] TESTS: convert compareandwrite to new api Signed-off-by: Ronnie Sahlberg --- lib/libiscsi.def | 1 + lib/libiscsi.syms | 1 + test-tool/iscsi-support.c | 151 +++----------------- test-tool/iscsi-support.h | 4 +- test-tool/test_compareandwrite_miscompare.c | 27 ++-- test-tool/test_compareandwrite_simple.c | 23 +-- 6 files changed, 54 insertions(+), 153 deletions(-) diff --git a/lib/libiscsi.def b/lib/libiscsi.def index 5695b94..cbca74d 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -155,6 +155,7 @@ iscsi_writesame10_task iscsi_writesame16_sync iscsi_writesame16_task scsi_association_to_str +scsi_cdb_compareandwrite scsi_cdb_inquiry scsi_cdb_get_lba_status scsi_cdb_modeselect6 diff --git a/lib/libiscsi.syms b/lib/libiscsi.syms index 685a168..f57cc65 100644 --- a/lib/libiscsi.syms +++ b/lib/libiscsi.syms @@ -153,6 +153,7 @@ iscsi_writesame10_task iscsi_writesame16_sync iscsi_writesame16_task scsi_association_to_str +scsi_cdb_compareandwrite scsi_cdb_inquiry scsi_cdb_get_lba_status scsi_cdb_modeselect6 diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 259a09e..2fcc0b8 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1334,147 +1334,38 @@ int mode_sense(struct iscsi_context *iscsi, int lun) } int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, - unsigned char *data, uint32_t len, int blocksize, - int wrprotect, int dpo, - int fua, int group_number) + unsigned char *data, uint32_t datalen, int blocksize, + int wrprotect, int dpo, + int fua, int group_number, + int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct iscsi_data d; + int ret; - logging(LOG_VERBOSE, "Send COMPARE_AND_WRITE LBA:%" PRIu64 - " LEN:%d WRPROTECT:%d", - lba, len, wrprotect); + logging(LOG_VERBOSE, "Send COMPAREANDWRITE (Expecting %s) LBA:%" + PRIu64 " LEN:%d WRPROTECT:%d", + scsi_status_str(status), + lba, datalen, wrprotect); - task = iscsi_compareandwrite_sync(iscsi, lun, lba, - data, len, blocksize, - wrprotect, dpo, fua, 0, group_number); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send COMPARE_AND_WRITE " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] COMPARE_AND_WRITE is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] COMPARE_AND_WRITE command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); + if (!data_loss) { + printf("--dataloss flag is not set in. Skipping write\n"); return -1; } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] COMPARE_AND_WRITE returned SUCCESS."); - return 0; -} + task = scsi_cdb_compareandwrite(lba, datalen, blocksize, wrprotect, + dpo, fua, 0, group_number); + assert(task != NULL); -int compareandwrite_miscompare(struct iscsi_context *iscsi, int lun, - uint64_t lba, unsigned char *data, - uint32_t len, int blocksize, - int wrprotect, int dpo, - int fua, int group_number) -{ - struct scsi_task *task; + d.data = data; + d.size = datalen; + task = iscsi_scsi_command_sync(iscsi, lun, task, &d); - logging(LOG_VERBOSE, "Send COMPARE_AND_WRITE LBA:%" PRIu64 - " LEN:%d WRPROTECT:%d (expecting MISCOMPARE)", - lba, len, wrprotect); - - task = iscsi_compareandwrite_sync(iscsi, lun, lba, - data, len, blocksize, - wrprotect, dpo, fua, 0, group_number); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send COMPARE_AND_WRITE " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] COMPARE_AND_WRITE is not " - "implemented on target"); + ret = check_result("COMPAREANDWRITE", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] COMPARE_AND_WRITE successful " - "but should have failed with MISCOMPARE."); - scsi_free_scsi_task(task); - return -1; - } - - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_MISCOMPARE - || task->sense.ascq != SCSI_SENSE_ASCQ_MISCOMPARE_DURING_VERIFY) { - logging(LOG_NORMAL, "[FAILED] COMPARE_AND_WRITE failed with " - "the wrong sense code. Should have failed with " - "MISCOMPARE/MISCOMPARE_DURING_VERIFY but failed with " - "sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] COMPARE_AND_WRITE returned MISCOMPARE."); - return 0; -} - -int compareandwrite_invalidfieldincdb(struct iscsi_context *iscsi, int lun, - uint64_t lba, unsigned char *data, - uint32_t len, int blocksize, - int wrprotect, int dpo, - int fua, int group_number) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send COMPARE_AND_WRITE LBA:%" PRIu64 - " LEN:%d WRPROTECT:%d (expecting INVALID_FIELD_IN_CDB)", - lba, len, wrprotect); - - task = iscsi_compareandwrite_sync(iscsi, lun, lba, - data, len, blocksize, - wrprotect, dpo, fua, 0, group_number); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send COMPARE_AND_WRITE " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] COMPARE_AND_WRITE is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] COMPARE_AND_WRITE successful " - "but should have failed with MISCOMPARE."); - scsi_free_scsi_task(task); - return -1; - } - - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] COMPARE_AND_WRITE failed with " - "the wrong sense code. Should have failed with " - "INVALID_FIELD_IN_CDB but failed with " - "sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] COMPARE_AND_WRITE returned INVALID_FIELD_IN_CDB."); - return 0; + return ret; } struct scsi_task *get_lba_status_task(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len) diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 88676bc..dc40b03 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -254,9 +254,7 @@ int verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) int inquiry(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize, struct scsi_task **save_task); int inquiry_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize); struct scsi_task *get_lba_status_task(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); -int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number); -int compareandwrite_invalidfieldincdb(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number); -int compareandwrite_miscompare(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number); +int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int get_lba_status(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len, enum scsi_provisioning_type *provisioning0); int get_lba_status_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); diff --git a/test-tool/test_compareandwrite_miscompare.c b/test-tool/test_compareandwrite_miscompare.c index 750cc7c..65d4138 100644 --- a/test-tool/test_compareandwrite_miscompare.c +++ b/test-tool/test_compareandwrite_miscompare.c @@ -72,9 +72,10 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite_invalidfieldincdb(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, - 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, 0, + buf, 2 * i * block_size, + block_size, 0, 0, 0, 0, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support " "COMPARE_AND_WRITE. Skipping test"); @@ -89,8 +90,10 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); - ret = compareandwrite_miscompare(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, 0, + buf, 2 * i * block_size, block_size, + 0, 0, 0, 0, + EXPECT_MISCOMPARE); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support " "COMPARE_AND_WRITE. Skipping test"); @@ -139,9 +142,10 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite_invalidfieldincdb(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, - 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, 0, + buf, 2 * i * block_size, + block_size, 0, 0, 0, 0, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); continue; @@ -151,9 +155,10 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); - ret = compareandwrite_miscompare(iscsic, tgt_lun, - num_blocks - i, - buf, 2 * i * block_size, block_size, 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, num_blocks - i, + buf, 2 * i * block_size, block_size, + 0, 0, 0, 0, + EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 diff --git a/test-tool/test_compareandwrite_simple.c b/test-tool/test_compareandwrite_simple.c index bcee524..5a6b346 100644 --- a/test-tool/test_compareandwrite_simple.c +++ b/test-tool/test_compareandwrite_simple.c @@ -69,9 +69,10 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite_invalidfieldincdb(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, - 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, 0, + buf, 2 * i * block_size, + block_size, 0, 0, 0, 0, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support " "COMPARE_AND_WRITE. Skipping test"); @@ -87,8 +88,9 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); ret = compareandwrite(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, - 0, 0, 0, 0); + buf, 2 * i * block_size, block_size, + 0, 0, 0, 0, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support " "COMPARE_AND_WRITE. Skipping test"); @@ -134,9 +136,10 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite_invalidfieldincdb(iscsic, tgt_lun, 0, - buf, 2 * i * block_size, block_size, - 0, 0, 0, 0); + ret = compareandwrite(iscsic, tgt_lun, 0, + buf, 2 * i * block_size, + block_size, 0, 0, 0, 0, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); continue; @@ -147,7 +150,9 @@ test_compareandwrite_simple(void) "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); ret = compareandwrite(iscsic, tgt_lun, num_blocks - i, - buf, 2 * i * block_size, block_size, 0, 0, 0, 0); + buf, 2 * i * block_size, block_size, + 0, 0, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 From fd21a8f2c4304cd0e168ca20f4bbfb4a19b58fb9 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 14:50:44 -0700 Subject: [PATCH 15/53] TESTS: convert readcapacity to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 170 +++-------------------- test-tool/iscsi-support.h | 6 +- test-tool/test_mandatory_sbc.c | 6 +- test-tool/test_nomedia_sbc.c | 6 +- test-tool/test_readcapacity10_simple.c | 4 +- test-tool/test_readcapacity16_alloclen.c | 3 +- test-tool/test_readcapacity16_simple.c | 3 +- 7 files changed, 39 insertions(+), 159 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 2fcc0b8..e22e621 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1764,171 +1764,47 @@ read16(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi) +readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READCAPACITY10 LBA:%d pmi:%d", + logging(LOG_VERBOSE, "Send READCAPACITY10 (Expecting %s) LBA:%d" + " pmi:%d", + scsi_status_str(status), lba, pmi); - task = iscsi_readcapacity10_sync(iscsi, lun, lba, pmi); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READCAPACITY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY10 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_readcapacity10(lba, pmi); + assert(task != NULL); - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READCAPACITY10 returned SUCCESS."); - return 0; + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("READCAPACITY10", iscsi, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; } int -readcapacity10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi) +readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send READCAPACITY10 (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%d pmi:%d", - lba, pmi); - - task = iscsi_readcapacity10_sync(iscsi, lun, lba, pmi); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READCAPACITY10 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY10 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY10 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READCAPACITY10 returned MEDIUM_NOT_PRESENT."); - return 0; -} - -int -readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len) -{ - struct scsi_task *task; - - - logging(LOG_VERBOSE, "Send READCAPACITY16 alloc_len:%d", alloc_len); + logging(LOG_VERBOSE, "Send READCAPACITY16 (Expecting %s)", + scsi_status_str(status)); task = scsi_cdb_serviceactionin16(SCSI_READCAPACITY16, alloc_len); - if (task == NULL) { - logging(LOG_NORMAL, "Out-of-memory: Failed to create " - "READCAPACITY16 cdb."); - return -1; - } + assert(task != NULL); + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READCAPACITY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - scsi_free_scsi_task(task); - if (inq->protect) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 is not " - "available but INQ->PROTECT is set. " - "ReadCapacity16 is mandatory when INQ->PROTECT " - "is set."); - return -1; - } - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented and SBC-3 is not claimed."); - return -2; - } - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READCAPACITY16 returned SUCCESS."); - return 0; -} - -int -readcapacity16_nomedium(struct iscsi_context *iscsi, int lun, int alloc_len) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READCAPACITY16 (Expecting MEDIUM_NOT_PRESENT) " - "alloc_len:%d", alloc_len); - - task = scsi_cdb_serviceactionin16(SCSI_READCAPACITY16, alloc_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READCAPACITY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READCAPACITY16 command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + ret = check_result("READCAPACITY16", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - if (sbc3_support) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 is not available but the device claims SBC-3 support."); - return -1; - } else { - logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented and SBC-3 is not claimed."); - return -2; - } } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 command successful. But should have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] READCAPACITY16 Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] READCAPACITY16 returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index dc40b03..4bbb2a3 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -267,10 +267,8 @@ struct scsi_task *read10_task(struct iscsi_context *iscsi, int lun, uint32_t lba int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi); -int readcapacity10_nomedium(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi); -int readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len); -int readcapacity16_nomedium(struct iscsi_context *iscsi, int lun, int alloc_len); +int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int report_supported_opcodes(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task); int report_supported_opcodes_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task); int release6(struct iscsi_context *iscsi, int lun); diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index 987ec07..77e4adb 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -41,12 +41,14 @@ test_mandatory_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10."); - ret = readcapacity10(iscsic, tgt_lun, 0, 0); + ret = readcapacity10(iscsic, tgt_lun, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READCAPACITY16. The device claims SBC-3 support."); - ret = readcapacity16(iscsic, tgt_lun, 15); + ret = readcapacity16(iscsic, tgt_lun, 15, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index a19f138..82c6987 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -91,11 +91,13 @@ test_nomedia_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10 when medium is ejected."); - ret = readcapacity10_nomedium(iscsic, tgt_lun, 0, 0); + ret = readcapacity10(iscsic, tgt_lun, 0, 0, + EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY16 when medium is ejected."); - ret = readcapacity16_nomedium(iscsic, tgt_lun, 15); + ret = readcapacity16(iscsic, tgt_lun, 15, + EXPECT_NO_MEDIUM); if (ret == -2) { if (sbc3_support) { logging(LOG_NORMAL, "[FAILED] READCAPACITY16 is not available but the device claims SBC-3 support."); diff --git a/test-tool/test_readcapacity10_simple.c b/test-tool/test_readcapacity10_simple.c index abfcbaf..8a2d52f 100644 --- a/test-tool/test_readcapacity10_simple.c +++ b/test-tool/test_readcapacity10_simple.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2013 by Ronnie Sahlberg @@ -35,6 +34,7 @@ test_readcapacity10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic READCAPACITY10"); - ret = readcapacity10(iscsic, tgt_lun, 0, 0); + ret = readcapacity10(iscsic, tgt_lun, 0, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_readcapacity16_alloclen.c b/test-tool/test_readcapacity16_alloclen.c index 17b275e..6587e39 100644 --- a/test-tool/test_readcapacity16_alloclen.c +++ b/test-tool/test_readcapacity16_alloclen.c @@ -35,7 +35,8 @@ test_readcapacity16_alloclen(void) logging(LOG_VERBOSE, "Test that READCAPACITY16 with alloc_len 0-15 is not an error"); for (i = 0; i < 16; i++) { - ret = readcapacity16(iscsic, tgt_lun, i); + ret = readcapacity16(iscsic, tgt_lun, i, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim SBC-3 support."); CU_PASS("READCAPACITY16 is not implemented and no SBC-3 support claimed."); diff --git a/test-tool/test_readcapacity16_simple.c b/test-tool/test_readcapacity16_simple.c index 82b4348..fb7ce4d 100644 --- a/test-tool/test_readcapacity16_simple.c +++ b/test-tool/test_readcapacity16_simple.c @@ -34,7 +34,8 @@ test_readcapacity16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that READCAPACITY16 works"); - ret = readcapacity16(iscsic, tgt_lun, 16); + ret = readcapacity16(iscsic, tgt_lun, 16, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim support."); CU_PASS("READCAPACITY16 is not implemented and no SBC-3 support claimed."); From 9e75b10103ceab83a18204e267fb43d99cdaa689 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 15:42:30 -0700 Subject: [PATCH 16/53] TESTS: change get_lba_status to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 171 ++----------------- test-tool/iscsi-support.h | 5 +- test-tool/test_get_lba_status_beyond_eol.c | 9 +- test-tool/test_get_lba_status_simple.c | 6 +- test-tool/test_get_lba_status_unmap_single.c | 61 ++++++- test-tool/test_nomedia_sbc.c | 3 +- test-tool/test_sanitize_block_erase.c | 5 +- 7 files changed, 84 insertions(+), 176 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index e22e621..ecafee2 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1368,169 +1368,28 @@ int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, return ret; } -struct scsi_task *get_lba_status_task(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len) +int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send GET_LBA_STATUS LBA:%" PRIu64 " alloc_len:%d", + logging(LOG_VERBOSE, "Send GET_LBA_STATUS (Expecting %s) LBA:%" PRIu64 + " alloc_len:%d", + scsi_status_str(status), lba, len); - task = iscsi_get_lba_status_sync(iscsi, lun, lba, len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send GET_LBA_STATUS " - "command: %s", - iscsi_get_error(iscsi)); - return NULL; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] GET_LBA_STATUS is not " - "implemented on target"); + task = scsi_cdb_get_lba_status(lba, len); + assert(task != NULL); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("GET_LBA_STATUS", iscsi, task, status, key, ascq, num_ascq); + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); - return NULL; } - - logging(LOG_VERBOSE, "[OK] GET_LBA_STATUS returned SUCCESS."); - return task; -} - -int get_lba_status(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len, - enum scsi_provisioning_type *provisioning0) -{ - struct scsi_task *task; - struct scsi_get_lba_status *lbas = NULL; - struct scsi_lba_status_descriptor *lbasd = NULL; - - logging(LOG_VERBOSE, "Send GET_LBA_STATUS LBA:%" PRIu64 " alloc_len:%d", - lba, len); - - task = iscsi_get_lba_status_sync(iscsi, lun, lba, len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send GET_LBA_STATUS " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] GET_LBA_STATUS is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS command: " - "failed with sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - lbas = scsi_datain_unmarshall(task); - if (lbas == NULL) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS command: " - "failed to unmarschall data."); - scsi_free_scsi_task(task); - return -1; - } - lbasd = &lbas->descriptors[0]; - if (lbasd->lba != lba) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS command: " - "lba offset in first descriptor does not match request (0x%" PRIx64 " != 0x%" PRIx64 ").", - lbasd->lba, lba); - scsi_free_scsi_task(task); - return -1; - } - if (provisioning0 != NULL) { - *provisioning0 = lbasd->provisioning; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] GET_LBA_STATUS returned SUCCESS."); - return 0; -} - -int get_lba_status_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send GET_LBA_STATUS (Expecting LBA_OUT_OF_RANGE) LBA:%" PRIu64 " alloc_len:%d", - lba, len); - - task = iscsi_get_lba_status_sync(iscsi, lun, lba, len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send GET_LBA_STATUS " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] GET_LBA_STATUS is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS returned SUCCESS. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_LBA_OUT_OF_RANGE) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS failed with the wrong sense code. Should have failed with ILLEGAL_REQUEST/LBA_OUT_OF_RANGE but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] GET_LBA_STATUS returned ILLEGAL_REQUEST/LBA_OUT_OF_RANGE."); - return 0; -} - -int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send GET_LBA_STATUS (Expecting MEDIUM_NOT_PRESENT) " - "LBA:%" PRIu64 " alloc_len:%d", - lba, len); - - task = iscsi_get_lba_status_sync(iscsi, lun, lba, len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send GET_LBA_STATUS " - "command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] GET_LBA_STATUS is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS returned SUCCESS. Should have failed with MEDIUM_NOT_PRESENT."); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] GET_LBA_STATUS failed with the wrong sense code. Should have failed with NOT_READY/MEDIUM_NOT_PRESENT but failed with sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] GET_LBA_STATUS returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 4bbb2a3..181d92a 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -253,11 +253,8 @@ int verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); int verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); int inquiry(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize, struct scsi_task **save_task); int inquiry_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize); -struct scsi_task *get_lba_status_task(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int get_lba_status(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len, enum scsi_provisioning_type *provisioning0); -int get_lba_status_lbaoutofrange(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); -int get_lba_status_nomedium(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t len); +int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **task, int lun, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_get_lba_status_beyond_eol.c b/test-tool/test_get_lba_status_beyond_eol.c index 202fbfa..d7910ad 100644 --- a/test-tool/test_get_lba_status_beyond_eol.c +++ b/test-tool/test_get_lba_status_beyond_eol.c @@ -33,7 +33,8 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS one block beyond the end of the LUN"); - ret = get_lba_status_lbaoutofrange(iscsic, tgt_lun, num_blocks + 1, 24); + ret = get_lba_status(iscsic, NULL, tgt_lun, num_blocks + 1, 24, + EXPECT_LBA_OOB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); return; @@ -42,11 +43,13 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA 2^63"); - ret = get_lba_status_lbaoutofrange(iscsic, tgt_lun, 0x8000000000000000ULL, 24); + ret = get_lba_status(iscsic, NULL, tgt_lun, 0x8000000000000000ULL, 24, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA -1"); - ret = get_lba_status_lbaoutofrange(iscsic, tgt_lun, 0xffffffffffffffffULL, 24); + ret = get_lba_status(iscsic, NULL, tgt_lun, 0xffffffffffffffffULL, 24, + EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_get_lba_status_simple.c b/test-tool/test_get_lba_status_simple.c index 52b0f97..8d12fab 100644 --- a/test-tool/test_get_lba_status_simple.c +++ b/test-tool/test_get_lba_status_simple.c @@ -33,7 +33,8 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(iscsic, tgt_lun, 0, 24, NULL); + ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); return; @@ -47,7 +48,8 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(iscsic, tgt_lun, num_blocks - i, 24, NULL); + ret = get_lba_status(iscsic, NULL, tgt_lun, num_blocks - i, 24, + EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); return; diff --git a/test-tool/test_get_lba_status_unmap_single.c b/test-tool/test_get_lba_status_unmap_single.c index dd45312..2892f8f 100644 --- a/test-tool/test_get_lba_status_unmap_single.c +++ b/test-tool/test_get_lba_status_unmap_single.c @@ -25,7 +25,6 @@ #include "iscsi-support.h" #include "iscsi-test-cu.h" - void test_get_lba_status_unmap_single(void) { @@ -33,7 +32,9 @@ test_get_lba_status_unmap_single(void) uint64_t i; unsigned char *buf = alloca(257 * block_size); struct unmap_list list[1]; - enum scsi_provisioning_type provisioning; + struct scsi_task *t = NULL; + struct scsi_get_lba_status *lbas = NULL; + struct scsi_lba_status_descriptor *lbasd = NULL; CHECK_FOR_DATALOSS; CHECK_FOR_THIN_PROVISIONING; @@ -64,7 +65,8 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i); - ret = get_lba_status(iscsic, tgt_lun, i, 24, NULL); + ret = get_lba_status(iscsic, NULL, tgt_lun, i, 24, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); return; @@ -75,15 +77,36 @@ test_get_lba_status_unmap_single(void) } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + lbppb); - ret = get_lba_status(iscsic, tgt_lun, i + lbppb, 24, &provisioning); + ret = get_lba_status(iscsic, &t, tgt_lun, i + lbppb, 24, + EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); return; } - if (provisioning != SCSI_PROVISIONING_TYPE_MAPPED) { + if (t == NULL) { + CU_FAIL("[FAILED] GET_LBA_STATUS task is NULL"); + return; + } + lbas = scsi_datain_unmarshall(t); + if (lbas == NULL) { + CU_FAIL("[FAILED] GET_LBA_STATUS command: failed " + "to unmarshall data."); + scsi_free_scsi_task(t); + return; + } + lbasd = &lbas->descriptors[0]; + if (lbasd->lba != i + lbppb) { + CU_FAIL("[FAILED] GET_LBA_STATUS command: " + "lba offset in first descriptor does not " + "match request."); + scsi_free_scsi_task(t); + return; + } + if (lbasd->provisioning != SCSI_PROVISIONING_TYPE_MAPPED) { CU_FAIL("[FAILED] LBA should be mapped but isn't"); return; } + scsi_free_scsi_task(t); } logging(LOG_VERBOSE, LOG_BLANK_LINE); @@ -104,7 +127,8 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Read the status of the block at LBA:0"); - ret = get_lba_status(iscsic, tgt_lun, 0, 24, NULL); + ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); return; @@ -114,14 +138,35 @@ test_get_lba_status_unmap_single(void) return; } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + 1); - ret = get_lba_status(iscsic, tgt_lun, i + 1, 24, &provisioning); + ret = get_lba_status(iscsic, &t, tgt_lun, i + 1, 24, + EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); return; } - if (provisioning != SCSI_PROVISIONING_TYPE_MAPPED) { + if (t == NULL) { + CU_FAIL("[FAILED] GET_LBA_STATUS task is NULL"); + return; + } + lbas = scsi_datain_unmarshall(t); + if (lbas == NULL) { + CU_FAIL("[FAILED] GET_LBA_STATUS command: failed " + "to unmarshall data."); + scsi_free_scsi_task(t); + return; + } + lbasd = &lbas->descriptors[0]; + if (lbasd->lba != i + lbppb) { + CU_FAIL("[FAILED] GET_LBA_STATUS command: " + "lba offset in first descriptor does not " + "match request."); + scsi_free_scsi_task(t); + return; + } + if (lbasd->provisioning != SCSI_PROVISIONING_TYPE_MAPPED) { CU_FAIL("[FAILED] LBA should be mapped but isn't"); return; } + scsi_free_scsi_task(t); } } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 82c6987..d2a5484 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -110,7 +110,8 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test GET_LBA_STATUS when medium is ejected."); - ret = get_lba_status_nomedium(iscsic, tgt_lun, 0, 24); + ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "GET_LBA_STATUS"); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index 9bf9183..fd15fe1 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -103,12 +103,13 @@ static void check_unmap(void) { int i; - struct scsi_task *task_ret; + struct scsi_task *task_ret = NULL; struct scsi_get_lba_status *lbas; uint64_t lba; logging(LOG_VERBOSE, "Read LBA mapping from the target"); - task_ret = get_lba_status_task(iscsic, tgt_lun, 0, 256); + get_lba_status(iscsic, &task_ret, tgt_lun, 0, 256, + EXPECT_STATUS_GOOD); if (task_ret == NULL) { logging(LOG_VERBOSE, "[FAILED] Failed to read LBA mapping " "from the target."); From 832d88797a58af67ffd12277fe1d1faad4c5a49b Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 15:59:17 -0700 Subject: [PATCH 17/53] TESTS: remove the read10_task helper Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 36 +++----------------- test-tool/iscsi-support.h | 3 +- test-tool/test_mandatory_sbc.c | 2 +- test-tool/test_nomedia_sbc.c | 2 +- test-tool/test_orwrite_verify.c | 4 +-- test-tool/test_read10_0blocks.c | 8 ++--- test-tool/test_read10_beyond_eol.c | 8 ++--- test-tool/test_read10_flags.c | 10 +++--- test-tool/test_read10_rdprotect.c | 2 +- test-tool/test_read10_simple.c | 4 +-- test-tool/test_sanitize_block_erase.c | 7 ++-- test-tool/test_sanitize_crypto_erase.c | 7 ++-- test-tool/test_unmap_simple.c | 4 +-- test-tool/test_verify10_flags.c | 2 +- test-tool/test_verify10_mismatch.c | 4 +-- test-tool/test_verify10_mismatch_no_cmp.c | 4 +-- test-tool/test_verify10_simple.c | 4 +-- test-tool/test_verify10_vrprotect.c | 2 +- test-tool/test_verify12_simple.c | 2 +- test-tool/test_verify12_vrprotect.c | 2 +- test-tool/test_verify16_simple.c | 2 +- test-tool/test_write10_residuals.c | 4 +-- test-tool/test_writesame10_unmap.c | 6 ++-- test-tool/test_writesame10_unmap_until_end.c | 2 +- test-tool/test_writeverify10_residuals.c | 4 +-- 25 files changed, 55 insertions(+), 80 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index ecafee2..d26bfe7 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1497,37 +1497,9 @@ read6(struct iscsi_context *iscsi, int lun, uint32_t lba, return ret; } -struct scsi_task* -read10_task(struct iscsi_context *iscsi, int lun, uint32_t lba, - uint32_t datalen, int blocksize, int rdprotect, - int dpo, int fua, int fua_nv, int group, - unsigned char *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send READ10 LBA:%d blocks:%d rdprotect:%d " - "dpo:%d fua:%d fua_nv:%d group:%d", - lba, datalen / blocksize, rdprotect, - dpo, fua, fua_nv, group); - - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blocksize, - rdprotect, dpo, fua, fua_nv, group); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); - return NULL; - } - - if (data != NULL) { - memcpy(data, task->datain.data, task->datain.size); - } - - logging(LOG_VERBOSE, "[OK] READ10 returned SUCCESS."); - return task; -} - int -read10(struct iscsi_context *iscsi, int lun, uint32_t lba, +read10(struct iscsi_context *iscsi, struct scsi_task **out_task, + int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, @@ -1552,7 +1524,9 @@ read10(struct iscsi_context *iscsi, int lun, uint32_t lba, if (data) { memcpy(data, task->datain.data, task->datain.size); } - if (task) { + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } return ret; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 181d92a..5cca4af 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -260,8 +260,7 @@ int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_block int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int preventallow(struct iscsi_context *iscsi, int lun, int prevent); int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -struct scsi_task *read10_task(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data); -int read10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read10(struct iscsi_context *iscsi, struct scsi_task **task, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index 77e4adb..e3b8238 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -53,7 +53,7 @@ test_mandatory_sbc(void) } logging(LOG_VERBOSE, "Test READ10."); - ret = read10(iscsic, tgt_lun, 0, block_size, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index d2a5484..f17230c 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -73,7 +73,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test READ10 when medium is ejected."); - ret = read10(iscsic, tgt_lun, 0, block_size, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index ad31849..b6f6245 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -65,7 +65,7 @@ test_orwrite_verify(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -82,7 +82,7 @@ test_orwrite_verify(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_0blocks.c b/test-tool/test_read10_0blocks.c index b7dc994..973efba 100644 --- a/test-tool/test_read10_0blocks.c +++ b/test-tool/test_read10_0blocks.c @@ -30,7 +30,7 @@ test_read10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==0"); - ret = read10(iscsic, tgt_lun, 0, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -41,21 +41,21 @@ test_read10_0blocks(void) } logging(LOG_VERBOSE, "Test READ10 0-blocks one block past end-of-LUN"); - ret = read10(iscsic, tgt_lun, num_blocks + 1, 0, + ret = read10(iscsic, NULL, tgt_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==2^31"); - ret = read10(iscsic, tgt_lun, 0x80000000, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==-1"); - ret = read10(iscsic, tgt_lun, -1, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_beyond_eol.c b/test-tool/test_read10_beyond_eol.c index 621e14d..4fdae75 100644 --- a/test-tool/test_read10_beyond_eol.c +++ b/test-tool/test_read10_beyond_eol.c @@ -40,7 +40,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks + 1 - i, + ret = read10(iscsic, NULL,tgt_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -52,7 +52,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0x80000000, + ret = read10(iscsic, NULL, tgt_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -64,7 +64,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, -1, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +76,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks - 1, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_flags.c b/test-tool/test_read10_flags.c index 09b584b..b467278 100644 --- a/test-tool/test_read10_flags.c +++ b/test-tool/test_read10_flags.c @@ -36,35 +36,35 @@ test_read10_flags(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test READ10 with DPO==1"); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==0"); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==1"); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==0 FUA_NV==1"); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with DPO==1 FUA==1 FUA_NV==1"); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_rdprotect.c b/test-tool/test_read10_rdprotect.c index 0b0ebc0..c8fff2f 100644 --- a/test-tool/test_read10_rdprotect.c +++ b/test-tool/test_read10_rdprotect.c @@ -42,7 +42,7 @@ test_read10_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read10_simple.c b/test-tool/test_read10_simple.c index 68a10a7..b0d06c0 100644 --- a/test-tool/test_read10_simple.c +++ b/test-tool/test_read10_simple.c @@ -37,7 +37,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL,tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index fd15fe1..a32723c 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -30,11 +30,12 @@ static void check_wabereq(void) { - struct scsi_task *task_ret; + struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - task_ret = read10_task(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + read10(iscsic, &task_ret, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task_ret->status, SCSI_STATUS_CANCELLED); diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 7412189..9b0dd4b 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -30,11 +30,12 @@ static void check_wacereq(void) { - struct scsi_task *task_ret; + struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - task_ret = read10_task(iscsic, tgt_lun, 0, block_size, block_size, - 0, 0, 0, 0, 0, NULL); + read10(iscsic, &task_ret, tgt_lun, 0, block_size, block_size, + 0, 0, 0, 0, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task_ret->status, SCSI_STATUS_CANCELLED); diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index 711e3b0..a30400a 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -68,7 +68,7 @@ test_unmap_simple(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -102,7 +102,7 @@ test_unmap_simple(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_flags.c b/test-tool/test_verify10_flags.c index 7a6dd45..bcbe1d8 100644 --- a/test-tool/test_verify10_flags.c +++ b/test-tool/test_verify10_flags.c @@ -34,7 +34,7 @@ test_verify10_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 flags"); - ret = read10(iscsic, tgt_lun, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch.c b/test-tool/test_verify10_mismatch.c index b50f757..cd2bca2 100644 --- a/test-tool/test_verify10_mismatch.c +++ b/test-tool/test_verify10_mismatch.c @@ -40,7 +40,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -66,7 +66,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch_no_cmp.c b/test-tool/test_verify10_mismatch_no_cmp.c index dca8641..d3bbb25 100644 --- a/test-tool/test_verify10_mismatch_no_cmp.c +++ b/test-tool/test_verify10_mismatch_no_cmp.c @@ -40,7 +40,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -67,7 +67,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_simple.c b/test-tool/test_verify10_simple.c index 631c376..7ce8826 100644 --- a/test-tool/test_verify10_simple.c +++ b/test-tool/test_verify10_simple.c @@ -38,7 +38,7 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -59,7 +59,7 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_vrprotect.c b/test-tool/test_verify10_vrprotect.c index 1408d51..c1459b5 100644 --- a/test-tool/test_verify10_vrprotect.c +++ b/test-tool/test_verify10_vrprotect.c @@ -40,7 +40,7 @@ test_verify10_vrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, tgt_lun, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_simple.c b/test-tool/test_verify12_simple.c index f806da4..10132c6 100644 --- a/test-tool/test_verify12_simple.c +++ b/test-tool/test_verify12_simple.c @@ -38,7 +38,7 @@ test_verify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_vrprotect.c b/test-tool/test_verify12_vrprotect.c index 2badd62..b7130e4 100644 --- a/test-tool/test_verify12_vrprotect.c +++ b/test-tool/test_verify12_vrprotect.c @@ -41,7 +41,7 @@ test_verify12_vrprotect(void) logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, tgt_lun, 0, block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); ret = verify12(iscsic, tgt_lun, 0, block_size, diff --git a/test-tool/test_verify16_simple.c b/test-tool/test_verify16_simple.c index 715086a..542fb5a 100644 --- a/test-tool/test_verify16_simple.c +++ b/test-tool/test_verify16_simple.c @@ -38,7 +38,7 @@ test_verify16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, tgt_lun, 0, i * block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); ret = verify16(iscsic, tgt_lun, 0, i * block_size, diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index 3fc6b42..9963a1a 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -289,7 +289,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, tgt_lun, 0, 2* block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -365,7 +365,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, tgt_lun, 0, 2* block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index 42d62b1..ebb9369 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -62,7 +62,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -101,7 +101,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -177,7 +177,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, tgt_lun, 0, + ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index 69cde77..2a4a805 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -64,7 +64,7 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, tgt_lun, num_blocks - i, + ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index e4af7c1..0462105 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -294,7 +294,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, tgt_lun, 0, 2* block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -370,7 +370,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, tgt_lun, 0, 2* block_size, + ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); From 398f03205dab61ddd5b1bf6cc9ba1320baa8219f Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 17:33:14 -0700 Subject: [PATCH 18/53] TESTS: update unmap to new api Signed-off-by: Ronnie Sahlberg --- lib/libiscsi.def | 1 + lib/libiscsi.syms | 1 + test-tool/iscsi-support.c | 141 ++++++------------- test-tool/iscsi-support.h | 5 +- test-tool/test_get_lba_status_unmap_single.c | 6 +- test-tool/test_nomedia_sbc.c | 3 +- test-tool/test_readonly_sbc.c | 6 +- test-tool/test_unmap_0blocks.c | 16 ++- test-tool/test_unmap_simple.c | 6 +- test-tool/test_unmap_vpd.c | 4 +- 10 files changed, 72 insertions(+), 117 deletions(-) diff --git a/lib/libiscsi.def b/lib/libiscsi.def index cbca74d..df17bdc 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -210,6 +210,7 @@ scsi_get_uint16 scsi_get_uint32 scsi_get_uint64 scsi_inquiry_pagecode_to_str +scsi_malloc scsi_modesense_dataout_marshall scsi_modesense_get_page scsi_protocol_identifier_to_str diff --git a/lib/libiscsi.syms b/lib/libiscsi.syms index f57cc65..533cb71 100644 --- a/lib/libiscsi.syms +++ b/lib/libiscsi.syms @@ -208,6 +208,7 @@ scsi_get_uint16 scsi_get_uint32 scsi_get_uint64 scsi_inquiry_pagecode_to_str +scsi_malloc scsi_modesense_dataout_marshall scsi_modesense_get_page scsi_protocol_identifier_to_str diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index d26bfe7..fcac5fe 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1840,120 +1840,63 @@ reserve6_conflict(struct iscsi_context *iscsi, int lun) } int -unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len) +unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + struct scsi_iovec *iov; + unsigned char *data; + int xferlen; + int i; + int ret; - logging(LOG_VERBOSE, "Send UNMAP list_len:%d anchor:%d", list_len, anchor); - task = iscsi_unmap_sync(iscsi, lun, anchor, 0, list, list_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send UNMAP command: %s", - iscsi_get_error(iscsi)); + logging(LOG_VERBOSE, "Send UNMAP (Expecting %s) list_len:%d anchor:%d", + scsi_status_str(status), + list_len, anchor); + + if (!data_loss) { + printf("--dataloss flag is not set in. Skipping unmap\n"); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] UNMAP is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] UNMAP command: failed with sense. %s", iscsi_get_error(iscsi)); + + xferlen = 8 + list_len * 16; + + task = scsi_cdb_unmap(anchor, 0, xferlen); + assert(task != NULL); + + data = scsi_malloc(task, xferlen); + if (data == NULL) { + logging(LOG_NORMAL, "Out-of-memory: Failed to create " + "unmap parameters."); scsi_free_scsi_task(task); return -1; } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] UNMAP returned SUCCESS."); - return 0; -} - -int -unmap_writeprotected(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send UNMAP (Expecting WRITE_PROTECTED) " - "list_len:%d anchor:%d", list_len, anchor); - - task = iscsi_unmap_sync(iscsi, lun, anchor, 0, list, list_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send UNMAP command: %s", - iscsi_get_error(iscsi)); - return -1; + scsi_set_uint16(&data[0], xferlen - 2); + scsi_set_uint16(&data[2], xferlen - 8); + for (i = 0; i < list_len; i++) { + scsi_set_uint32(&data[8 + 16 * i], list[i].lba >> 32); + scsi_set_uint32(&data[8 + 16 * i + 4], list[i].lba & 0xffffffff); + scsi_set_uint32(&data[8 + 16 * i + 8], list[i].num); } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] UNMAP is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] UNMAP successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); + + iov = scsi_malloc(task, sizeof(struct scsi_iovec)); + if (iov == NULL) { + logging(LOG_NORMAL, "Out-of-memory: Failed to create " + "iov array."); scsi_free_scsi_task(task); return -1; } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] UNMAP failed with wrong sense. " - "Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); + iov->iov_base = data; + iov->iov_len = xferlen; + scsi_task_set_iov_out(task, iov, 1); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("UNMAP", iscsi, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -1; } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] UNMAP returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - -int -unmap_nomedium(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send UNMAP (Expecting MEDIUM_NOT_PRESENT) " - "list_len:%d anchor:%d", list_len, anchor); - - task = iscsi_unmap_sync(iscsi, lun, anchor, 0, list, list_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send UNMAP command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] UNMAP is not implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] UNMAP successful but should " - "have failed with NOT_READY/MEDIUM_NOT_PRESENT*"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_NOT_READY - || (task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN - && task->sense.ascq != SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED)) { - logging(LOG_NORMAL, "[FAILED] UNMAP Should have failed " - "with NOT_READY/MEDIUM_NOT_PRESENT* But failed " - "with %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] UNMAP returned MEDIUM_NOT_PRESENT."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 5cca4af..3396f25 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -2,6 +2,7 @@ iscsi-test tool support Copyright (C) 2012 by Lee Duncan + Copyright (C) 2014 by Ronnie sahlberg This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -280,9 +281,7 @@ int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int n int testunitready_clear_ua(struct iscsi_context *iscsi, int lun); int testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int mode_sense(struct iscsi_context *iscsi, int lun); -int unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); -int unmap_writeprotected(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); -int unmap_nomedium(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len); +int unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_get_lba_status_unmap_single.c b/test-tool/test_get_lba_status_unmap_single.c index 2892f8f..0c8b4f9 100644 --- a/test-tool/test_get_lba_status_unmap_single.c +++ b/test-tool/test_get_lba_status_unmap_single.c @@ -60,7 +60,8 @@ test_get_lba_status_unmap_single(void) PRIu64 " (number of logical blocks: %d)", i, lbppb); list[0].lba = i; list[0].num = lbppb; - ret = unmap(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:%" @@ -122,7 +123,8 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Unmap %" PRIu64 " blocks at LBA 0", i); list[0].lba = 0; list[0].num = i; - ret = unmap(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:0"); diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index f17230c..42f95e4 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -266,7 +266,8 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "Test UNMAP when medium is ejected."); list[0].lba = 0; list[0].num = lbppb; - ret = unmap_nomedium(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "UNMAP"); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index 03550f2..d15e301 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -97,7 +97,8 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one physical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = lbppb; - ret = unmap_writeprotected(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); } @@ -106,7 +107,8 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one logical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = 1; - ret = unmap_writeprotected(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); } diff --git a/test-tool/test_unmap_0blocks.c b/test-tool/test_unmap_0blocks.c index 63bf1dd..400840b 100644 --- a/test-tool/test_unmap_0blocks.c +++ b/test-tool/test_unmap_0blocks.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2013 Ronnie Sahlberg @@ -41,7 +40,8 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[0].lba = i; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -49,14 +49,16 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, i); + ret = unmap(iscsic, tgt_lun, 0, list, i, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at end-of-LUN"); list[0].lba = num_blocks; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -65,12 +67,14 @@ test_unmap_0blocks(void) list[i].lba = i/2; list[i].num = 0; } - ret = unmap(iscsic, tgt_lun, 0, list, 256); + ret = unmap(iscsic, tgt_lun, 0, list, 256, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test UNMAP without any descriptors."); - ret = unmap(iscsic, tgt_lun, 0, list, 0); + ret = unmap(iscsic, tgt_lun, 0, list, 0, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index a30400a..1dfb4e2 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -64,7 +64,8 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "UNMAP blocks 0-%d", i); list[0].lba = 0; list[0].num = i; - ret = unmap(iscsic, tgt_lun, 0, list, 1); + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); @@ -98,7 +99,8 @@ test_unmap_simple(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 1; - ret = unmap(iscsic, tgt_lun, 0, list, i + 1); + ret = unmap(iscsic, tgt_lun, 0, list, i + 1, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); diff --git a/test-tool/test_unmap_vpd.c b/test-tool/test_unmap_vpd.c index 26e15b5..203e88a 100644 --- a/test-tool/test_unmap_vpd.c +++ b/test-tool/test_unmap_vpd.c @@ -40,8 +40,8 @@ test_unmap_vpd(void) logging(LOG_VERBOSE, "Check if UNMAP is available."); list[0].lba = 0; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1); - + ret = unmap(iscsic, tgt_lun, 0, list, 1, + EXPECT_STATUS_GOOD); if (ret != 0) { logging(LOG_VERBOSE, "UNMAP is not available. Verify that VPD " "settings reflect this."); From 9be6ddaf093a90e25acc5322c434c138d591ab7d Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 17:49:16 -0700 Subject: [PATCH 19/53] TESTS: update inquiry to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 71 +++++----------------- test-tool/iscsi-support.h | 3 +- test-tool/test_inquiry_alloc_length.c | 10 +-- test-tool/test_inquiry_block_limits.c | 12 ++-- test-tool/test_inquiry_evpd.c | 3 +- test-tool/test_inquiry_mandatory_vpd_sbc.c | 12 ++-- test-tool/test_inquiry_standard.c | 3 +- test-tool/test_inquiry_supported_vpd.c | 11 ++-- test-tool/test_mandatory_sbc.c | 3 +- test-tool/test_sanitize_reset.c | 3 +- 10 files changed, 47 insertions(+), 84 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index fcac5fe..1a2f4fa 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -2264,69 +2264,28 @@ writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -inquiry(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize, struct scsi_task **save_task) +inquiry(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send INQUIRY evpd:%d page_code:%02x alloc_len:%d", + logging(LOG_VERBOSE, "Send INQUIRY (Expecting %s) evpd:%d " + "page_code:%02x alloc_len:%d", + scsi_status_str(status), evpd, page_code, maxsize); - task = iscsi_inquiry_sync(iscsi, lun, evpd, page_code, maxsize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send INQUIRY command: " - "%s", iscsi_get_error(iscsi)); - return -1; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] INQUIRY command: failed with " - "sense. %s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - if (save_task != NULL) { - *save_task = task; - } else { + task = scsi_cdb_inquiry(evpd, page_code, maxsize); + assert(task != NULL); + + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("INQUIRY", iscsi, task, status, key, ascq, num_ascq); + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } - - logging(LOG_VERBOSE, "[OK] INQUIRY returned SUCCESS."); - return 0; -} - -int -inquiry_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send INQUIRY (Expecting INVALID_FIELD_IN_CDB) evpd:%d page_code:%02x alloc_len:%d", - evpd, page_code, maxsize); - task = iscsi_inquiry_sync(iscsi, lun, evpd, page_code, maxsize); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send INQUIRY command: " - "%s", iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] INQUIRY successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] INQUIRY failed with wrong sense. " - "Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] INQUIRY returned ILLEGAL_REQUEST/INVALID_FIELD_IB_CDB."); - return 0; + return ret; } struct scsi_command_descriptor * diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 3396f25..cf974dd 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -252,8 +252,7 @@ int verify_read_works(struct iscsi_context *iscsi, int lun, unsigned char *buf); int verify_write_works(struct iscsi_context *iscsi, int lun, unsigned char *buf); int verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); int verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); -int inquiry(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize, struct scsi_task **save_task); -int inquiry_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize); +int inquiry(struct iscsi_context *iscsi, struct scsi_task **task, int lun, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **task, int lun, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_inquiry_alloc_length.c b/test-tool/test_inquiry_alloc_length.c index 0d761cd..3854a40 100644 --- a/test-tool/test_inquiry_alloc_length.c +++ b/test-tool/test_inquiry_alloc_length.c @@ -34,14 +34,14 @@ test_inquiry_alloc_length(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test of the INQUIRY allocation length"); - logging(LOG_VERBOSE, "Verify we can read standard INQUIRY page with alloc length from 5-255"); for (i = 5; i < 256 ; i++) { if (task != NULL) { scsi_free_scsi_task(task); task = NULL; } - ret = inquiry(iscsic, tgt_lun, 0, 0, i, &task); + ret = inquiry(iscsic, &task, tgt_lun, 0, 0, i, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Verify we got at least 36 bytes of data when reading with alloc length 255"); @@ -83,11 +83,13 @@ test_inquiry_alloc_length(void) logging(LOG_VERBOSE, "Version is SPC-3 or later. Read INQUIRY data using 16-bit allocation length"); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 511 (low order byte is 0xff)"); - ret = inquiry(iscsic, tgt_lun, 0, 0, 511, &task); + ret = inquiry(iscsic, &task, tgt_lun, 0, 0, 511, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 512 (low order byte is 0x00)"); - ret = inquiry(iscsic, tgt_lun, 0, 0, 512, &task2); + ret = inquiry(iscsic, &task2, tgt_lun, 0, 0, 512, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "INQUIRY data should be the same when allocation length is 511 and 512 bytes"); diff --git a/test-tool/test_inquiry_block_limits.c b/test-tool/test_inquiry_block_limits.c index 3b2d108..bc22d70 100644 --- a/test-tool/test_inquiry_block_limits.c +++ b/test-tool/test_inquiry_block_limits.c @@ -39,9 +39,9 @@ test_inquiry_block_limits(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Block device. Verify that we can read Block Limits VPD"); - ret = inquiry(iscsic, tgt_lun, - 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, - 64, &bl_task); + ret = inquiry(iscsic, &bl_task, tgt_lun, + 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { logging(LOG_NORMAL, "[FAILURE] failed to send inquiry."); @@ -107,9 +107,9 @@ test_inquiry_block_limits(void) * MAXIMUM UNMAP BLOCK DESCRIPTOR COUNT */ logging(LOG_VERBOSE, "Try reading the logical block provisioning VPD"); - ret = inquiry(iscsic, tgt_lun, - 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, - 64, &lbp_task); + ret = inquiry(iscsic, &lbp_task, tgt_lun, + 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64, + EXPECT_STATUS_GOOD); if (ret == 0) { lbp = scsi_datain_unmarshall(lbp_task); if (lbp == NULL) { diff --git a/test-tool/test_inquiry_evpd.c b/test-tool/test_inquiry_evpd.c index e791f1a..7a4475b 100644 --- a/test-tool/test_inquiry_evpd.c +++ b/test-tool/test_inquiry_evpd.c @@ -33,6 +33,7 @@ test_inquiry_evpd(void) logging(LOG_VERBOSE, "Test of the INQUIRY EVPD bit"); logging(LOG_VERBOSE, "Verify that INQUIRY with EVPD==0 and PC!=0 is an error"); - ret = inquiry_invalidfieldincdb(iscsic, tgt_lun, 0, 1, 256); + ret = inquiry(iscsic, NULL, tgt_lun, 0, 1, 256, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_inquiry_mandatory_vpd_sbc.c b/test-tool/test_inquiry_mandatory_vpd_sbc.c index 00926aa..7df0b48 100644 --- a/test-tool/test_inquiry_mandatory_vpd_sbc.c +++ b/test-tool/test_inquiry_mandatory_vpd_sbc.c @@ -36,14 +36,14 @@ test_inquiry_mandatory_vpd_sbc(void) logging(LOG_VERBOSE, "SUPPORTED_VPD_PAGES is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(iscsic, tgt_lun, - 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, - 255, NULL); + ret = inquiry(iscsic, NULL, tgt_lun, + 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "DEVICE_IDENTIFICATION is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(iscsic, tgt_lun, - 1, SCSI_INQUIRY_PAGECODE_DEVICE_IDENTIFICATION, - 255, NULL); + ret = inquiry(iscsic, NULL, tgt_lun, + 1, SCSI_INQUIRY_PAGECODE_DEVICE_IDENTIFICATION, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_inquiry_standard.c b/test-tool/test_inquiry_standard.c index 76d33c7..c2c1257 100644 --- a/test-tool/test_inquiry_standard.c +++ b/test-tool/test_inquiry_standard.c @@ -35,7 +35,8 @@ test_inquiry_standard(void) logging(LOG_VERBOSE, "Verify we can read standard INQUIRY page"); /* 260 bytes is the maximum possible size of the standard vpd */ - ret = inquiry(iscsic, tgt_lun, 0, 0, 260, &task); + ret = inquiry(iscsic, &task, tgt_lun, 0, 0, 260, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we got at least 36 bytes of data"); diff --git a/test-tool/test_inquiry_supported_vpd.c b/test-tool/test_inquiry_supported_vpd.c index cc21efa..7a92d89 100644 --- a/test-tool/test_inquiry_supported_vpd.c +++ b/test-tool/test_inquiry_supported_vpd.c @@ -34,9 +34,9 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Test INQUIRY supported VPD pages"); logging(LOG_VERBOSE, "Verify we can read the SUPPORTED VPD page"); - ret = inquiry(iscsic, tgt_lun, - 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, - 255, &task); + ret = inquiry(iscsic, &task, tgt_lun, + 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we got at least 4 bytes of data"); @@ -56,9 +56,8 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Verify we can read page 0x%02x", sup_inq->pages[i]); - ret = inquiry(iscsic, tgt_lun, - 1, sup_inq->pages[i], - 255, NULL); + ret = inquiry(iscsic, NULL, tgt_lun, 1, sup_inq->pages[i], 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index e3b8238..8c33127 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -37,7 +37,8 @@ test_mandatory_sbc(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test INQUIRY."); - ret = inquiry(iscsic, tgt_lun, 0, 0, 255, NULL); + ret = inquiry(iscsic, NULL, tgt_lun, 0, 0, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10."); diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index e329472..0a92b0f 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -105,7 +105,8 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that INQUIRY is still allowed while " "SANITIZE is in progress"); - ret = inquiry(iscsic, tgt_lun, 0, 0, 255, NULL); + ret = inquiry(iscsic, NULL, tgt_lun, 0, 0, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); From f015ab095ad7fe38efc0ea2b8a409a72ef71b690 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 17 Sep 2014 18:00:10 -0700 Subject: [PATCH 20/53] TESTS: update reportsupportedopcodes to new api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 90 ++++--------------- test-tool/iscsi-support.h | 3 +- ...est_report_supported_opcodes_one_command.c | 35 ++++---- .../test_report_supported_opcodes_rctd.c | 12 ++- .../test_report_supported_opcodes_servactv.c | 6 +- .../test_report_supported_opcodes_simple.c | 6 +- 6 files changed, 52 insertions(+), 100 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 1a2f4fa..9be0b2a 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1674,89 +1674,29 @@ release6(struct iscsi_context *iscsi, int lun) return res; } -int report_supported_opcodes(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task) +int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send REPORT_SUPPORTED_OPCODE RCTD:%d OPTIONS:%d " - "OPCODE:0x%02x SA:%d ALLOC_LEN:%d", + logging(LOG_VERBOSE, "Send REPORT_SUPPORTED_OPCODE (Expecting %s) " + "RCTD:%d OPTIONS:%d OPCODE:0x%02x SA:%d ALLOC_LEN:%d", + scsi_status_str(status), rctd, options, opcode, sa, alloc_len); - task = iscsi_report_supported_opcodes_sync(iscsi, lun, - rctd, options, opcode, sa, alloc_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send " - "REPORT_SUPPORTED_OPCODES command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] REPORT_SUPPORTED_OPCODES is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] REPORT_SUPPORTED_OPCODES " - "command: failed with sense. %s", - iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } + task = scsi_cdb_report_supported_opcodes(rctd, options, opcode, sa, + alloc_len); + assert(task != NULL); - if (save_task != NULL) { - *save_task = task; - } else { + task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + + ret = check_result("INQUIRY", iscsi, task, status, key, ascq, num_ascq); + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } - - logging(LOG_VERBOSE, "[OK] REPORT_SUPPORTED_OPCODES returned SUCCESS."); - return 0; -} - -int report_supported_opcodes_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send REPORT_SUPPORTED_OPCODE (expecting INVALID_FIELD_IN_CDB) RCTD:%d OPTIONS:%d " - "OPCODE:0x%02x SA:%d ALLOC_LEN:%d", - rctd, options, opcode, sa, alloc_len); - - task = iscsi_report_supported_opcodes_sync(iscsi, lun, - rctd, options, opcode, sa, alloc_len); - if (task == NULL) { - logging(LOG_NORMAL, "[FAILED] Failed to send " - "REPORT_SUPPORTED_OPCODES command: %s", - iscsi_get_error(iscsi)); - return -1; - } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { - logging(LOG_NORMAL, "[SKIPPED] REPORT_SUPPORTED_OPCODES is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { - logging(LOG_NORMAL, "[FAILED] REPORT_SUPPORTED_OPCODES should have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB. Sense:%s", iscsi_get_error(iscsi)); - scsi_free_scsi_task(task); - return -1; - } - - if (save_task != NULL) { - *save_task = task; - } else { - scsi_free_scsi_task(task); - } - - logging(LOG_VERBOSE, "[OK] REPORT_SUPPORTED_OPCODES returned " - "INVALID_FIELD_IN_CDB."); - return 0; + return ret; } int diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index cf974dd..33a150e 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -265,8 +265,7 @@ int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int report_supported_opcodes(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task); -int report_supported_opcodes_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int rctd, int options, int opcode, int sa, int alloc_len, struct scsi_task **save_task); +int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **save_task, int lun, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int release6(struct iscsi_context *iscsi, int lun); int reserve6(struct iscsi_context *iscsi, int lun); int reserve6_conflict(struct iscsi_context *iscsi, int lun); diff --git a/test-tool/test_report_supported_opcodes_one_command.c b/test-tool/test_report_supported_opcodes_one_command.c index b49f11c..b38e264 100644 --- a/test-tool/test_report_supported_opcodes_one_command.c +++ b/test-tool/test_report_supported_opcodes_one_command.c @@ -39,9 +39,10 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "Fetch list of all supported opcodes"); - ret = report_supported_opcodes(iscsic, tgt_lun, - 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, - 65535, &rso_task); + ret = report_supported_opcodes(iscsic, &rso_task, tgt_lun, + 0, SCSI_REPORT_SUPPORTING_OPS_ALL, + 0, 0, 65535, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); @@ -67,22 +68,23 @@ test_report_supported_opcodes_one_command(void) if (rsoc->descriptors[i].servactv) { logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 001b should fail"); - ret = report_supported_opcodes_invalidfieldincdb( - iscsic, tgt_lun, + ret = report_supported_opcodes(iscsic, NULL, tgt_lun, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, - 65535, NULL); + 65535, + EXPECT_INVALID_FIELD_IN_CDB); } else { logging(LOG_VERBOSE, "This opcode does not have " "service actions. Reporting Options 001b " "should work"); ret = report_supported_opcodes( - iscsic, tgt_lun, + iscsic, NULL, tgt_lun, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, - 65535, NULL); + 65535, + EXPECT_STATUS_GOOD); } CU_ASSERT_EQUAL(ret, 0); @@ -90,21 +92,23 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 002b should work"); ret = report_supported_opcodes( - iscsic, tgt_lun, + iscsic, NULL, tgt_lun, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, - 65535, NULL); + 65535, + EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "This opcode does not have " "service actions. Reporting Options 002b " "should fail"); - ret = report_supported_opcodes_invalidfieldincdb( - iscsic, tgt_lun, + ret = report_supported_opcodes( + iscsic, NULL, tgt_lun, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, - 65535, NULL); + 65535, + EXPECT_INVALID_FIELD_IN_CDB); } CU_ASSERT_EQUAL(ret, 0); } @@ -117,14 +121,15 @@ test_report_supported_opcodes_one_command(void) rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa); ret = report_supported_opcodes( - iscsic, tgt_lun, + iscsic, &one_task, tgt_lun, 0, rsoc->descriptors[i].servactv ? SCSI_REPORT_SUPPORTING_SERVICEACTION : SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, - 65535, &one_task); + 65535, + EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmarshall the DATA-IN buffer"); rsoc_one = scsi_datain_unmarshall(one_task); diff --git a/test-tool/test_report_supported_opcodes_rctd.c b/test-tool/test_report_supported_opcodes_rctd.c index ca19683..f801d95 100644 --- a/test-tool/test_report_supported_opcodes_rctd.c +++ b/test-tool/test_report_supported_opcodes_rctd.c @@ -38,9 +38,11 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "without timeout descriptors"); - ret = report_supported_opcodes(iscsic, tgt_lun, + ret = report_supported_opcodes( + iscsic, &rso_task, tgt_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, - 65535, &rso_task); + 65535, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); @@ -73,9 +75,11 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "with timeout descriptors"); - ret = report_supported_opcodes(iscsic, tgt_lun, + ret = report_supported_opcodes( + iscsic, &rso_task, tgt_lun, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, - 65535, &rso_task); + 65535, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { return; diff --git a/test-tool/test_report_supported_opcodes_servactv.c b/test-tool/test_report_supported_opcodes_servactv.c index b7920d0..ba66cd6 100644 --- a/test-tool/test_report_supported_opcodes_servactv.c +++ b/test-tool/test_report_supported_opcodes_servactv.c @@ -36,9 +36,11 @@ test_report_supported_opcodes_servactv(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES SERVACTV flag"); - ret = report_supported_opcodes(iscsic, tgt_lun, + ret = report_supported_opcodes( + iscsic, &rso_task, tgt_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, - 65535, &rso_task); + 65535, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); diff --git a/test-tool/test_report_supported_opcodes_simple.c b/test-tool/test_report_supported_opcodes_simple.c index f2435e6..5183736 100644 --- a/test-tool/test_report_supported_opcodes_simple.c +++ b/test-tool/test_report_supported_opcodes_simple.c @@ -33,9 +33,11 @@ test_report_supported_opcodes_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic READ_SUPPORTED_OPCODES"); - ret = report_supported_opcodes(iscsic, tgt_lun, + ret = report_supported_opcodes( + iscsic, NULL, tgt_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, - 1024, NULL); + 1024, + EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); From 40de7d95a9643f9593344cbf82ae6c1a3115c0d6 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 14:26:03 -0700 Subject: [PATCH 21/53] Configure: add a test for SG_IO Signed-off-by: Ronnie Sahlberg --- configure.ac | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configure.ac b/configure.ac index 5e18ff4..170db26 100644 --- a/configure.ac +++ b/configure.ac @@ -91,6 +91,16 @@ if test x"$libiscsi_cv_HAVE_SOCKADDR_IN6" = x"yes"; then AC_DEFINE(HAVE_SOCKADDR_IN6,1,[Whether we have IPv6 support]) fi +AC_CACHE_CHECK([for SG_IO support],libiscsi_cv_HAVE_SG_IO,[ +AC_TRY_COMPILE([ +#include +#include ], +[int sgio = SG_IO;], +libiscsi_cv_HAVE_SG_IO=yes,libiscsi_cv_HAVE_SG_IO=no)]) +if test x"$libiscsi_cv_HAVE_SG_IO" = x"yes"; then + AC_DEFINE(HAVE_SG_IO,1,[Whether we have SG_IO support]) +fi + AC_MSG_CHECKING(whether libcunit is available) ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" From 9b768f7de968cbc5f903982b790d0505579cb88b Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 16:42:45 -0700 Subject: [PATCH 22/53] TESTS: move the default url, lun and iscsi context into a structure Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 2 - test-tool/iscsi-support.h | 8 +- test-tool/iscsi-test-cu.c | 99 ++++++++++--------- test-tool/iscsi-test-cu.h | 2 - test-tool/test_compareandwrite_miscompare.c | 16 +-- test-tool/test_compareandwrite_simple.c | 16 +-- test-tool/test_get_lba_status_beyond_eol.c | 6 +- test-tool/test_get_lba_status_simple.c | 4 +- test-tool/test_get_lba_status_unmap_single.c | 16 +-- test-tool/test_inquiry_alloc_length.c | 6 +- test-tool/test_inquiry_block_limits.c | 4 +- test-tool/test_inquiry_evpd.c | 2 +- test-tool/test_inquiry_mandatory_vpd_sbc.c | 4 +- test-tool/test_inquiry_standard.c | 2 +- test-tool/test_inquiry_supported_vpd.c | 4 +- test-tool/test_iscsi_cmdsn_toohigh.c | 14 +-- test-tool/test_iscsi_cmdsn_toolow.c | 14 +-- test-tool/test_iscsi_datasn_invalid.c | 48 ++++----- test-tool/test_mandatory_sbc.c | 12 +-- test-tool/test_modesense6_all_pages.c | 4 +- test-tool/test_modesense6_residuals.c | 8 +- test-tool/test_nomedia_sbc.c | 52 +++++----- test-tool/test_orwrite_0blocks.c | 8 +- test-tool/test_orwrite_beyond_eol.c | 8 +- test-tool/test_orwrite_flags.c | 10 +- test-tool/test_orwrite_simple.c | 4 +- test-tool/test_orwrite_verify.c | 20 ++-- test-tool/test_orwrite_wrprotect.c | 2 +- test-tool/test_prefetch10_0blocks.c | 8 +- test-tool/test_prefetch10_beyond_eol.c | 8 +- test-tool/test_prefetch10_flags.c | 6 +- test-tool/test_prefetch10_simple.c | 4 +- test-tool/test_prefetch16_0blocks.c | 8 +- test-tool/test_prefetch16_beyond_eol.c | 8 +- test-tool/test_prefetch16_flags.c | 6 +- test-tool/test_prefetch16_simple.c | 4 +- test-tool/test_preventallow_2_itnexuses.c | 14 +-- test-tool/test_preventallow_cold_reset.c | 20 ++-- test-tool/test_preventallow_eject.c | 20 ++-- test-tool/test_preventallow_itnexus_loss.c | 22 ++--- test-tool/test_preventallow_logout.c | 24 ++--- test-tool/test_preventallow_lun_reset.c | 20 ++-- test-tool/test_preventallow_simple.c | 4 +- test-tool/test_preventallow_warm_reset.c | 20 ++-- test-tool/test_prin_read_keys_simple.c | 2 +- test-tool/test_prin_serviceaction_range.c | 6 +- test-tool/test_prout_register_simple.c | 10 +- test-tool/test_prout_reserve_access.c | 12 +-- test-tool/test_prout_reserve_ownership.c | 12 +-- test-tool/test_prout_reserve_simple.c | 10 +- test-tool/test_read10_0blocks.c | 8 +- test-tool/test_read10_beyond_eol.c | 8 +- test-tool/test_read10_flags.c | 10 +- test-tool/test_read10_invalid.c | 30 +++--- test-tool/test_read10_rdprotect.c | 2 +- test-tool/test_read10_residuals.c | 20 ++-- test-tool/test_read10_simple.c | 4 +- test-tool/test_read12_0blocks.c | 8 +- test-tool/test_read12_beyond_eol.c | 8 +- test-tool/test_read12_flags.c | 10 +- test-tool/test_read12_rdprotect.c | 2 +- test-tool/test_read12_residuals.c | 20 ++-- test-tool/test_read12_simple.c | 4 +- test-tool/test_read16_0blocks.c | 8 +- test-tool/test_read16_beyond_eol.c | 12 +-- test-tool/test_read16_flags.c | 10 +- test-tool/test_read16_rdprotect.c | 2 +- test-tool/test_read16_residuals.c | 20 ++-- test-tool/test_read16_simple.c | 4 +- test-tool/test_read6_beyond_eol.c | 6 +- test-tool/test_read6_simple.c | 8 +- test-tool/test_readcapacity10_simple.c | 2 +- test-tool/test_readcapacity16_alloclen.c | 2 +- test-tool/test_readcapacity16_simple.c | 2 +- test-tool/test_readonly_sbc.c | 26 ++--- ...est_report_supported_opcodes_one_command.c | 12 +-- .../test_report_supported_opcodes_rctd.c | 4 +- .../test_report_supported_opcodes_servactv.c | 2 +- .../test_report_supported_opcodes_simple.c | 2 +- test-tool/test_reserve6_2initiators.c | 22 ++--- test-tool/test_reserve6_itnexus_loss.c | 16 +-- test-tool/test_reserve6_logout.c | 18 ++-- test-tool/test_reserve6_lun_reset.c | 12 +-- test-tool/test_reserve6_simple.c | 4 +- test-tool/test_reserve6_target_cold_reset.c | 12 +-- test-tool/test_reserve6_target_warm_reset.c | 12 +-- test-tool/test_sanitize_block_erase.c | 14 +-- .../test_sanitize_block_erase_reserved.c | 4 +- test-tool/test_sanitize_crypto_erase.c | 10 +- .../test_sanitize_crypto_erase_reserved.c | 4 +- test-tool/test_sanitize_exit_failure_mode.c | 2 +- .../test_sanitize_invalid_serviceaction.c | 2 +- test-tool/test_sanitize_overwrite.c | 20 ++-- test-tool/test_sanitize_overwrite_reserved.c | 4 +- test-tool/test_sanitize_readonly.c | 16 +-- test-tool/test_sanitize_reservations.c | 10 +- test-tool/test_sanitize_reset.c | 42 ++++---- test-tool/test_startstopunit_noloej.c | 34 +++---- test-tool/test_startstopunit_pwrcnd.c | 6 +- test-tool/test_startstopunit_simple.c | 16 +-- test-tool/test_testunitready_simple.c | 2 +- test-tool/test_unmap_0blocks.c | 10 +- test-tool/test_unmap_simple.c | 10 +- test-tool/test_unmap_vpd.c | 2 +- test-tool/test_verify10_0blocks.c | 8 +- test-tool/test_verify10_beyond_eol.c | 8 +- test-tool/test_verify10_flags.c | 6 +- test-tool/test_verify10_mismatch.c | 8 +- test-tool/test_verify10_mismatch_no_cmp.c | 8 +- test-tool/test_verify10_simple.c | 8 +- test-tool/test_verify10_vrprotect.c | 4 +- test-tool/test_verify12_0blocks.c | 8 +- test-tool/test_verify12_beyond_eol.c | 8 +- test-tool/test_verify12_flags.c | 6 +- test-tool/test_verify12_mismatch.c | 8 +- test-tool/test_verify12_mismatch_no_cmp.c | 8 +- test-tool/test_verify12_simple.c | 8 +- test-tool/test_verify12_vrprotect.c | 4 +- test-tool/test_verify16_0blocks.c | 8 +- test-tool/test_verify16_beyond_eol.c | 8 +- test-tool/test_verify16_flags.c | 6 +- test-tool/test_verify16_mismatch.c | 8 +- test-tool/test_verify16_mismatch_no_cmp.c | 8 +- test-tool/test_verify16_simple.c | 8 +- test-tool/test_verify16_vrprotect.c | 4 +- test-tool/test_write10_0blocks.c | 8 +- test-tool/test_write10_beyond_eol.c | 8 +- test-tool/test_write10_flags.c | 10 +- test-tool/test_write10_residuals.c | 36 +++---- test-tool/test_write10_simple.c | 4 +- test-tool/test_write10_wrprotect.c | 2 +- test-tool/test_write12_0blocks.c | 8 +- test-tool/test_write12_beyond_eol.c | 8 +- test-tool/test_write12_flags.c | 10 +- test-tool/test_write12_residuals.c | 36 +++---- test-tool/test_write12_simple.c | 4 +- test-tool/test_write12_wrprotect.c | 2 +- test-tool/test_write16_0blocks.c | 8 +- test-tool/test_write16_beyond_eol.c | 8 +- test-tool/test_write16_flags.c | 10 +- test-tool/test_write16_residuals.c | 36 +++---- test-tool/test_write16_simple.c | 4 +- test-tool/test_write16_wrprotect.c | 2 +- test-tool/test_writesame10_0blocks.c | 8 +- test-tool/test_writesame10_beyond_eol.c | 8 +- test-tool/test_writesame10_simple.c | 4 +- test-tool/test_writesame10_unmap.c | 26 ++--- test-tool/test_writesame10_unmap_unaligned.c | 2 +- test-tool/test_writesame10_unmap_until_end.c | 6 +- test-tool/test_writesame10_unmap_vpd.c | 2 +- test-tool/test_writesame10_wrprotect.c | 2 +- test-tool/test_writesame16_0blocks.c | 8 +- test-tool/test_writesame16_beyond_eol.c | 8 +- test-tool/test_writesame16_simple.c | 4 +- test-tool/test_writesame16_unmap.c | 34 +++---- test-tool/test_writesame16_unmap_unaligned.c | 2 +- test-tool/test_writesame16_unmap_until_end.c | 6 +- test-tool/test_writesame16_unmap_vpd.c | 2 +- test-tool/test_writesame16_wrprotect.c | 2 +- test-tool/test_writeverify10_0blocks.c | 8 +- test-tool/test_writeverify10_beyond_eol.c | 8 +- test-tool/test_writeverify10_flags.c | 4 +- test-tool/test_writeverify10_residuals.c | 38 +++---- test-tool/test_writeverify10_simple.c | 4 +- test-tool/test_writeverify10_wrprotect.c | 2 +- test-tool/test_writeverify12_0blocks.c | 8 +- test-tool/test_writeverify12_beyond_eol.c | 8 +- test-tool/test_writeverify12_flags.c | 4 +- test-tool/test_writeverify12_residuals.c | 38 +++---- test-tool/test_writeverify12_simple.c | 4 +- test-tool/test_writeverify12_wrprotect.c | 2 +- test-tool/test_writeverify16_0blocks.c | 8 +- test-tool/test_writeverify16_beyond_eol.c | 8 +- test-tool/test_writeverify16_flags.c | 4 +- test-tool/test_writeverify16_residuals.c | 38 +++---- test-tool/test_writeverify16_simple.c | 4 +- test-tool/test_writeverify16_wrprotect.c | 2 +- 177 files changed, 939 insertions(+), 934 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 9be0b2a..2cf4e05 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -46,8 +46,6 @@ const char *initiatorname1 = const char *initiatorname2 = "iqn.2007-10.com.github:sahlberg:libiscsi:iscsi-test-2"; -const char *tgt_url; - int no_medium_ascqs[3] = { SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN, diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 33a150e..e390637 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -28,7 +28,6 @@ extern const char *initiatorname1; extern const char *initiatorname2; -extern const char *tgt_url; #define EXPECT_STATUS_GOOD SCSI_STATUS_GOOD, SCSI_SENSE_NO_SENSE, NULL, 0 #define EXPECT_NO_MEDIUM SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, no_medium_ascqs, 3 @@ -184,6 +183,13 @@ extern int readonly; extern int sbc3_support; extern int maximum_transfer_length; +struct scsi_device { + struct iscsi_context *iscsi_ctx; + int iscsi_lun; + const char *iscsi_url; +}; +extern struct scsi_device *sd; + struct iscsi_context *iscsi_context_login(const char *initiatorname, const char *url, int *lun); struct iscsi_async_state { diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 2659a2b..3ee2ca0 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -50,6 +50,7 @@ #define PROG "iscsi-test-cu" int loglevel = LOG_NORMAL; +struct scsi_device *sd; /* * this allows us to redefine how PDU are queued, at times, for @@ -595,8 +596,6 @@ static struct test_family families[] = { /* * globals for test setup and teardown */ -int tgt_lun; -struct iscsi_context *iscsic; struct scsi_task *task; int tgt_lun2; struct iscsi_context *iscsic2; @@ -683,8 +682,8 @@ test_teardown(void) int suite_init(void) { - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { fprintf(stderr, "error: Failed to login to target for test set-up\n"); return 1; @@ -703,10 +702,10 @@ suite_cleanup(void) /* libcunit version 1 */ test_teardown(); #endif - if (iscsic) { - iscsi_logout_sync(iscsic); - iscsi_destroy_context(iscsic); - iscsic = NULL; + if (sd->iscsi_ctx) { + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); + sd->iscsi_ctx = NULL; } return 0; } @@ -715,7 +714,7 @@ int suite_init_pgr(void) { suite_init(); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun2); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &tgt_lun2); if (iscsic2 == NULL) { fprintf(stderr, "error: Failed to login to target for test set-up\n"); @@ -933,6 +932,8 @@ main(int argc, char *argv[]) int i, c; int opt_idx = 0; + sd = malloc(sizeof(struct scsi_device)); + while ((c = getopt_long(argc, argv, "?hli:I:t:sdgfAsSnuvxV", long_opts, &opt_idx)) > 0) { switch (c) { @@ -994,7 +995,7 @@ main(int argc, char *argv[]) } if (optind < argc) { - tgt_url = strdup(argv[optind++]); + sd->iscsi_url = strdup(argv[optind++]); } if (optind < argc) { fprintf(stderr, "error: too many arguments\n"); @@ -1005,7 +1006,7 @@ main(int argc, char *argv[]) /* XXX why is this done? */ real_iscsi_queue_pdu = dlsym(RTLD_NEXT, "iscsi_queue_pdu"); - if (tgt_url == NULL) { + if (sd->iscsi_url == NULL) { fprintf(stderr, "You must specify the URL\n"); print_usage(); if (testname_re) @@ -1013,8 +1014,8 @@ main(int argc, char *argv[]) return 10; } - iscsic = iscsi_context_login(initiatorname1, tgt_url, &lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &lun); + if (sd->iscsi_ctx == NULL) { printf("Failed to login to target\n"); return -1; } @@ -1024,46 +1025,46 @@ main(int argc, char *argv[]) * All devices support readcapacity10 but only some support * readcapacity16 */ - task = iscsi_readcapacity10_sync(iscsic, lun, 0, 0); + task = iscsi_readcapacity10_sync(sd->iscsi_ctx, lun, 0, 0); if (task == NULL) { printf("Failed to send READCAPACITY10 command: %s\n", - iscsi_get_error(iscsic)); - iscsi_destroy_context(iscsic); + iscsi_get_error(sd->iscsi_ctx)); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (task->status != SCSI_STATUS_GOOD) { printf("READCAPACITY10 command: failed with sense. %s\n", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); scsi_free_scsi_task(task); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } rc10 = scsi_datain_unmarshall(task); if (rc10 == NULL) { printf("failed to unmarshall READCAPACITY10 data. %s\n", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); scsi_free_scsi_task(task); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } block_size = rc10->block_size; num_blocks = rc10->lba + 1; scsi_free_scsi_task(task); - rc16_task = iscsi_readcapacity16_sync(iscsic, lun); + rc16_task = iscsi_readcapacity16_sync(sd->iscsi_ctx, lun); if (rc16_task == NULL) { printf("Failed to send READCAPACITY16 command: %s\n", - iscsi_get_error(iscsic)); - iscsi_destroy_context(iscsic); + iscsi_get_error(sd->iscsi_ctx)); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (rc16_task->status == SCSI_STATUS_GOOD) { rc16 = scsi_datain_unmarshall(rc16_task); if (rc16 == NULL) { printf("failed to unmarshall READCAPACITY16 data. %s\n", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); scsi_free_scsi_task(rc16_task); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } block_size = rc16->block_length; @@ -1071,9 +1072,9 @@ main(int argc, char *argv[]) lbppb = 1 << rc16->lbppbe; } - inq_task = iscsi_inquiry_sync(iscsic, lun, 0, 0, 64); + inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 0, 0, 64); if (inq_task == NULL || inq_task->status != SCSI_STATUS_GOOD) { - printf("Inquiry command failed : %s\n", iscsi_get_error(iscsic)); + printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); return -1; } full_size = scsi_datain_getfullsize(inq_task); @@ -1081,10 +1082,10 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_task); /* we need more data for the full list */ - inq_task = iscsi_inquiry_sync(iscsic, lun, 0, 0, full_size); + inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 0, 0, full_size); if (inq_task == NULL) { printf("Inquiry command failed : %s\n", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); return -1; } } @@ -1103,7 +1104,7 @@ main(int argc, char *argv[]) } /* try reading block limits vpd */ - inq_bl_task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64); + inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64); if (inq_bl_task && inq_bl_task->status != SCSI_STATUS_GOOD) { scsi_free_scsi_task(inq_bl_task); inq_bl_task = NULL; @@ -1113,8 +1114,8 @@ main(int argc, char *argv[]) if (full_size > inq_bl_task->datain.size) { scsi_free_scsi_task(inq_bl_task); - if ((inq_bl_task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size)) == NULL) { - printf("Inquiry command failed : %s\n", iscsi_get_error(iscsic)); + if ((inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size)) == NULL) { + printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); return -1; } } @@ -1127,7 +1128,7 @@ main(int argc, char *argv[]) } /* try reading block device characteristics vpd */ - inq_bdc_task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255); + inq_bdc_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255); if (inq_bdc_task == NULL) { printf("Failed to read Block Device Characteristics page\n"); } @@ -1141,9 +1142,9 @@ main(int argc, char *argv[]) /* if thin provisioned we also need to read the VPD page for it */ if (rc16 && rc16->lbpme != 0){ - inq_lbp_task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64); + inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64); if (inq_lbp_task == NULL || inq_lbp_task->status != SCSI_STATUS_GOOD) { - printf("Inquiry command failed : %s\n", iscsi_get_error(iscsic)); + printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); return -1; } full_size = scsi_datain_getfullsize(inq_lbp_task); @@ -1151,8 +1152,8 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_lbp_task); /* we need more data for the full list */ - if ((inq_lbp_task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, full_size)) == NULL) { - printf("Inquiry command failed : %s\n", iscsi_get_error(iscsic)); + if ((inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, full_size)) == NULL) { + printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); return -1; } } @@ -1164,12 +1165,12 @@ main(int argc, char *argv[]) } } - rsop_task = iscsi_report_supported_opcodes_sync(iscsic, lun, + rsop_task = iscsi_report_supported_opcodes_sync(sd->iscsi_ctx, lun, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535); if (rsop_task == NULL) { printf("Failed to send REPORT_SUPPORTED_OPCODES command: %s\n", - iscsi_get_error(iscsic)); - iscsi_destroy_context(iscsic); + iscsi_get_error(sd->iscsi_ctx)); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (rsop_task->status == SCSI_STATUS_GOOD) { @@ -1177,19 +1178,19 @@ main(int argc, char *argv[]) if (rsop == NULL) { printf("failed to unmarshall REPORT_SUPPORTED_OPCODES " "data. %s\n", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); scsi_free_scsi_task(rsop_task); } } /* check if the device is write protected or not */ - task = iscsi_modesense6_sync(iscsic, lun, 0, SCSI_MODESENSE_PC_CURRENT, + task = iscsi_modesense6_sync(sd->iscsi_ctx, lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); if (task == NULL) { printf("Failed to send MODE_SENSE6 command: %s\n", - iscsi_get_error(iscsic)); - iscsi_destroy_context(iscsic); + iscsi_get_error(sd->iscsi_ctx)); + iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (task->status == SCSI_STATUS_GOOD) { @@ -1205,8 +1206,8 @@ main(int argc, char *argv[]) } scsi_free_scsi_task(task); - iscsi_logout_sync(iscsic); - iscsi_destroy_context(iscsic); + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); if (is_usb) { printf("USB device. Clamping maximum transfer length to 120k\n"); @@ -1243,7 +1244,7 @@ main(int argc, char *argv[]) } CU_cleanup_registry(); - free(discard_const(tgt_url)); + free(discard_const(sd->iscsi_url)); if (inq_task != NULL) { scsi_free_scsi_task(inq_task); @@ -1263,6 +1264,8 @@ main(int argc, char *argv[]) if (rsop_task != NULL) { scsi_free_scsi_task(rsop_task); } - + if (sd != NULL) { + free(sd); + } return 0; } diff --git a/test-tool/iscsi-test-cu.h b/test-tool/iscsi-test-cu.h index 0b02db3..638a802 100644 --- a/test-tool/iscsi-test-cu.h +++ b/test-tool/iscsi-test-cu.h @@ -32,8 +32,6 @@ #include "iscsi-support.h" /* globals between setup, tests, and teardown */ -extern struct iscsi_context *iscsic; -extern int tgt_lun; extern struct scsi_task *task; extern struct iscsi_context *iscsic2; extern int tgt_lun2; diff --git a/test-tool/test_compareandwrite_miscompare.c b/test-tool/test_compareandwrite_miscompare.c index 65d4138..fa1f269 100644 --- a/test-tool/test_compareandwrite_miscompare.c +++ b/test-tool/test_compareandwrite_miscompare.c @@ -53,7 +53,7 @@ test_compareandwrite_miscompare(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, 0, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -72,7 +72,7 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -90,7 +90,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_MISCOMPARE); @@ -103,7 +103,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are still unchanged as 'A'", i); - ret = read16(iscsic, tgt_lun, 0, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -128,7 +128,7 @@ test_compareandwrite_miscompare(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -142,7 +142,7 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -155,7 +155,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); - ret = compareandwrite(iscsic, tgt_lun, num_blocks - i, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_MISCOMPARE); @@ -164,7 +164,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 "they are still unchanged as 'A'", i, num_blocks - i); - ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_compareandwrite_simple.c b/test-tool/test_compareandwrite_simple.c index 5a6b346..cce245e 100644 --- a/test-tool/test_compareandwrite_simple.c +++ b/test-tool/test_compareandwrite_simple.c @@ -54,7 +54,7 @@ test_compareandwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, 0, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -69,7 +69,7 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -87,7 +87,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_STATUS_GOOD); @@ -100,7 +100,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are all 'B'", i); - ret = read16(iscsic, tgt_lun, 0, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -126,7 +126,7 @@ test_compareandwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -136,7 +136,7 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(iscsic, tgt_lun, 0, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -149,7 +149,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); - ret = compareandwrite(iscsic, tgt_lun, num_blocks - i, + ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_STATUS_GOOD); @@ -158,7 +158,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 " and verify they are all 'B'", i, num_blocks - i); - ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_get_lba_status_beyond_eol.c b/test-tool/test_get_lba_status_beyond_eol.c index d7910ad..1ae55a2 100644 --- a/test-tool/test_get_lba_status_beyond_eol.c +++ b/test-tool/test_get_lba_status_beyond_eol.c @@ -33,7 +33,7 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS one block beyond the end of the LUN"); - ret = get_lba_status(iscsic, NULL, tgt_lun, num_blocks + 1, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks + 1, 24, EXPECT_LBA_OOB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -43,13 +43,13 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA 2^63"); - ret = get_lba_status(iscsic, NULL, tgt_lun, 0x8000000000000000ULL, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x8000000000000000ULL, 24, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA -1"); - ret = get_lba_status(iscsic, NULL, tgt_lun, 0xffffffffffffffffULL, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0xffffffffffffffffULL, 24, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_get_lba_status_simple.c b/test-tool/test_get_lba_status_simple.c index 8d12fab..ba28bf6 100644 --- a/test-tool/test_get_lba_status_simple.c +++ b/test-tool/test_get_lba_status_simple.c @@ -33,7 +33,7 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -48,7 +48,7 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(iscsic, NULL, tgt_lun, num_blocks - i, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); diff --git a/test-tool/test_get_lba_status_unmap_single.c b/test-tool/test_get_lba_status_unmap_single.c index 0c8b4f9..ea058dc 100644 --- a/test-tool/test_get_lba_status_unmap_single.c +++ b/test-tool/test_get_lba_status_unmap_single.c @@ -50,7 +50,7 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", 256 + lbppb); - ret = write10(iscsic, tgt_lun, 0, (256 + lbppb) * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, (256 + lbppb) * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -60,13 +60,13 @@ test_get_lba_status_unmap_single(void) PRIu64 " (number of logical blocks: %d)", i, lbppb); list[0].lba = i; list[0].num = lbppb; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i); - ret = get_lba_status(iscsic, NULL, tgt_lun, i, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, i, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -78,7 +78,7 @@ test_get_lba_status_unmap_single(void) } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + lbppb); - ret = get_lba_status(iscsic, &t, tgt_lun, i + lbppb, 24, + ret = get_lba_status(sd->iscsi_ctx, &t, sd->iscsi_lun, i + lbppb, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); @@ -116,20 +116,20 @@ test_get_lba_status_unmap_single(void) for (i = lbppb; i + lbppb <= 256; i += lbppb) { logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", (256 + lbppb)); - ret = write10(iscsic, tgt_lun, 0, (256 + lbppb) * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, (256 + lbppb) * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %" PRIu64 " blocks at LBA 0", i); list[0].lba = 0; list[0].num = i; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:0"); - ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -140,7 +140,7 @@ test_get_lba_status_unmap_single(void) return; } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + 1); - ret = get_lba_status(iscsic, &t, tgt_lun, i + 1, 24, + ret = get_lba_status(sd->iscsi_ctx, &t, sd->iscsi_lun, i + 1, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); diff --git a/test-tool/test_inquiry_alloc_length.c b/test-tool/test_inquiry_alloc_length.c index 3854a40..8e11589 100644 --- a/test-tool/test_inquiry_alloc_length.c +++ b/test-tool/test_inquiry_alloc_length.c @@ -40,7 +40,7 @@ test_inquiry_alloc_length(void) scsi_free_scsi_task(task); task = NULL; } - ret = inquiry(iscsic, &task, tgt_lun, 0, 0, i, + ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, i, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -83,12 +83,12 @@ test_inquiry_alloc_length(void) logging(LOG_VERBOSE, "Version is SPC-3 or later. Read INQUIRY data using 16-bit allocation length"); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 511 (low order byte is 0xff)"); - ret = inquiry(iscsic, &task, tgt_lun, 0, 0, 511, + ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, 511, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 512 (low order byte is 0x00)"); - ret = inquiry(iscsic, &task2, tgt_lun, 0, 0, 512, + ret = inquiry(sd->iscsi_ctx, &task2, sd->iscsi_lun, 0, 0, 512, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_block_limits.c b/test-tool/test_inquiry_block_limits.c index bc22d70..08d2338 100644 --- a/test-tool/test_inquiry_block_limits.c +++ b/test-tool/test_inquiry_block_limits.c @@ -39,7 +39,7 @@ test_inquiry_block_limits(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Block device. Verify that we can read Block Limits VPD"); - ret = inquiry(iscsic, &bl_task, tgt_lun, + ret = inquiry(sd->iscsi_ctx, &bl_task, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -107,7 +107,7 @@ test_inquiry_block_limits(void) * MAXIMUM UNMAP BLOCK DESCRIPTOR COUNT */ logging(LOG_VERBOSE, "Try reading the logical block provisioning VPD"); - ret = inquiry(iscsic, &lbp_task, tgt_lun, + ret = inquiry(sd->iscsi_ctx, &lbp_task, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64, EXPECT_STATUS_GOOD); if (ret == 0) { diff --git a/test-tool/test_inquiry_evpd.c b/test-tool/test_inquiry_evpd.c index 7a4475b..34a45bf 100644 --- a/test-tool/test_inquiry_evpd.c +++ b/test-tool/test_inquiry_evpd.c @@ -33,7 +33,7 @@ test_inquiry_evpd(void) logging(LOG_VERBOSE, "Test of the INQUIRY EVPD bit"); logging(LOG_VERBOSE, "Verify that INQUIRY with EVPD==0 and PC!=0 is an error"); - ret = inquiry(iscsic, NULL, tgt_lun, 0, 1, 256, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 1, 256, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_inquiry_mandatory_vpd_sbc.c b/test-tool/test_inquiry_mandatory_vpd_sbc.c index 7df0b48..f5707a7 100644 --- a/test-tool/test_inquiry_mandatory_vpd_sbc.c +++ b/test-tool/test_inquiry_mandatory_vpd_sbc.c @@ -36,13 +36,13 @@ test_inquiry_mandatory_vpd_sbc(void) logging(LOG_VERBOSE, "SUPPORTED_VPD_PAGES is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(iscsic, NULL, tgt_lun, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "DEVICE_IDENTIFICATION is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(iscsic, NULL, tgt_lun, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_DEVICE_IDENTIFICATION, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_standard.c b/test-tool/test_inquiry_standard.c index c2c1257..89be0c7 100644 --- a/test-tool/test_inquiry_standard.c +++ b/test-tool/test_inquiry_standard.c @@ -35,7 +35,7 @@ test_inquiry_standard(void) logging(LOG_VERBOSE, "Verify we can read standard INQUIRY page"); /* 260 bytes is the maximum possible size of the standard vpd */ - ret = inquiry(iscsic, &task, tgt_lun, 0, 0, 260, + ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, 260, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_supported_vpd.c b/test-tool/test_inquiry_supported_vpd.c index 7a92d89..36344a2 100644 --- a/test-tool/test_inquiry_supported_vpd.c +++ b/test-tool/test_inquiry_supported_vpd.c @@ -34,7 +34,7 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Test INQUIRY supported VPD pages"); logging(LOG_VERBOSE, "Verify we can read the SUPPORTED VPD page"); - ret = inquiry(iscsic, &task, tgt_lun, + ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -56,7 +56,7 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Verify we can read page 0x%02x", sup_inq->pages[i]); - ret = inquiry(iscsic, NULL, tgt_lun, 1, sup_inq->pages[i], 255, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 1, sup_inq->pages[i], 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_iscsi_cmdsn_toohigh.c b/test-tool/test_iscsi_cmdsn_toohigh.c index f2db7f3..abbe353 100644 --- a/test-tool/test_iscsi_cmdsn_toohigh.c +++ b/test-tool/test_iscsi_cmdsn_toohigh.c @@ -54,17 +54,17 @@ void test_iscsi_cmdsn_toohigh(void) logging(LOG_VERBOSE, "RFC3720:3.2.2.1 CMDSN > MAXCMDSN must be silently ignored by the target"); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == MAXCMDSN+1. Should be ignored by the target."); - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; change_cmdsn = 1; /* we don't want autoreconnect since some targets will incorrectly * drop the connection on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { @@ -74,9 +74,9 @@ void test_iscsi_cmdsn_toohigh(void) } - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_iscsi_cmdsn_toolow.c b/test-tool/test_iscsi_cmdsn_toolow.c index a1eaea8..9809d04 100644 --- a/test-tool/test_iscsi_cmdsn_toolow.c +++ b/test-tool/test_iscsi_cmdsn_toolow.c @@ -54,17 +54,17 @@ void test_iscsi_cmdsn_toolow(void) logging(LOG_VERBOSE, "RFC3720:3.2.2.1 CMDSN < EXPCMDSN must be silently ignored by the target"); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN-1. Should be ignored by the target."); - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; change_cmdsn = 1; /* we don't want autoreconnect since some targets will incorrectly * drop the connection on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { @@ -75,9 +75,9 @@ void test_iscsi_cmdsn_toolow(void) - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c index 897975b..b672e7f 100644 --- a/test-tool/test_iscsi_datasn_invalid.c +++ b/test-tool/test_iscsi_datasn_invalid.c @@ -69,13 +69,13 @@ void test_iscsi_datasn_invalid(void) logging(LOG_VERBOSE, "Send 2 DATAIN with DATASN==0. Should fail."); change_datasn = 1; - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(iscsic, tgt_lun, 100, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -86,19 +86,19 @@ void test_iscsi_datasn_invalid(void) } CU_ASSERT_NOT_EQUAL(ret, 0); - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send DATAIN with DATASN==27. Should fail"); change_datasn = 2; - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(iscsic, tgt_lun, 100, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -109,19 +109,19 @@ void test_iscsi_datasn_invalid(void) } CU_ASSERT_NOT_EQUAL(ret, 0); - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send DATAIN with DATASN==-1. Should fail"); change_datasn = 3; - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(iscsic, tgt_lun, 100, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -132,20 +132,20 @@ void test_iscsi_datasn_invalid(void) } CU_ASSERT_NOT_EQUAL(ret, 0); - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send DATAIN in reverse order (datasn == 1,0). Should fail"); change_datasn = 4; - iscsic->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; - iscsic->target_max_recv_data_segment_length = block_size; + 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; - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(iscsic, tgt_lun, 100, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -157,5 +157,5 @@ void test_iscsi_datasn_invalid(void) CU_ASSERT_NOT_EQUAL(ret, 0); local_iscsi_queue_pdu = NULL; - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); } diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index 8c33127..ab5f3a9 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -37,38 +37,38 @@ test_mandatory_sbc(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test INQUIRY."); - ret = inquiry(iscsic, NULL, tgt_lun, 0, 0, 255, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10."); - ret = readcapacity10(iscsic, tgt_lun, 0, 0, + ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READCAPACITY16. The device claims SBC-3 support."); - ret = readcapacity16(iscsic, tgt_lun, 15, + ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 15, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test READ10."); - ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READ16. the device claims SBC-3 support."); - ret = read16(iscsic, tgt_lun, 0, block_size, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test TESTUNITREADY."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_modesense6_all_pages.c b/test-tool/test_modesense6_all_pages.c index 7c96141..1f0ddc0 100644 --- a/test-tool/test_modesense6_all_pages.c +++ b/test-tool/test_modesense6_all_pages.c @@ -39,14 +39,14 @@ test_modesense6_all_pages(void) } logging(LOG_VERBOSE, "Send MODESENSE6 command to fetch AllPages"); - task = iscsi_modesense6_sync(iscsic, tgt_lun, 0, + task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); if (task == NULL || task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " "command:%s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_FAIL("[FAILED] Failed to fetch the All Pages page."); return; } diff --git a/test-tool/test_modesense6_residuals.c b/test-tool/test_modesense6_residuals.c index fdb2f72..ab0eb97 100644 --- a/test-tool/test_modesense6_residuals.c +++ b/test-tool/test_modesense6_residuals.c @@ -40,14 +40,14 @@ test_modesense6_residuals(void) scsi_free_scsi_task(task); task = NULL; } - task = iscsi_modesense6_sync(iscsic, tgt_lun, 0, + task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 4); if (task == NULL || task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " "command:%s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_FAIL("[FAILED] Failed to fetch the All Pages page."); return; } @@ -80,14 +80,14 @@ test_modesense6_residuals(void) scsi_free_scsi_task(task); task = NULL; } - task = iscsi_modesense6_sync(iscsic, tgt_lun, 0, + task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); if (task == NULL || task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " "command:%s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_FAIL("[FAILED] Failed to fetch the All Pages page."); return; } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 42f95e4..477f004 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -43,17 +43,17 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Eject the medium."); - ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY when medium is ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE10 when medium is ejected."); - ret = synchronizecache10(iscsic, tgt_lun, 0, 1, 1, 1, + ret = synchronizecache10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -63,7 +63,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE16 when medium is ejected."); - ret = synchronizecache16(iscsic, tgt_lun, 0, 1, 1, 1, + ret = synchronizecache16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -73,30 +73,30 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test READ10 when medium is ejected."); - ret = read10(iscsic, NULL, tgt_lun, 0, block_size, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 when medium is ejected."); - ret = read12(iscsic, tgt_lun, 0, block_size, block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 when medium is ejected."); - ret = read16(iscsic, tgt_lun, 0, block_size, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10 when medium is ejected."); - ret = readcapacity10(iscsic, tgt_lun, 0, 0, + ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY16 when medium is ejected."); - ret = readcapacity16(iscsic, tgt_lun, 15, + ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 15, EXPECT_NO_MEDIUM); if (ret == -2) { if (sbc3_support) { @@ -110,7 +110,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test GET_LBA_STATUS when medium is ejected."); - ret = get_lba_status(iscsic, NULL, tgt_lun, 0, 24, + ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -120,7 +120,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH10 when medium is ejected."); - ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -130,7 +130,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH16 when medium is ejected."); - ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "PREFETCH16"); @@ -139,7 +139,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY10 when medium is ejected."); - ret = verify10(iscsic, tgt_lun, 0, block_size, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -150,7 +150,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY12 when medium is ejected."); - ret = verify12(iscsic, tgt_lun, 0, block_size, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -161,7 +161,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY16 when medium is ejected."); - ret = verify16(iscsic, tgt_lun, 0, block_size, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -177,25 +177,25 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITE10 when medium is ejected."); - ret = write10(iscsic, tgt_lun, 0, block_size, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 when medium is ejected."); - ret = write12(iscsic, tgt_lun, 0, block_size, block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 when medium is ejected."); - ret = write16(iscsic, tgt_lun, 0, block_size, block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 when medium is ejected."); - ret = writeverify10(iscsic, tgt_lun, 0, block_size, block_size, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -206,7 +206,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY12 when medium is ejected."); - ret = writeverify12(iscsic, tgt_lun, 0, block_size, block_size, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -217,7 +217,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY16 when medium is ejected."); - ret = writeverify16(iscsic, tgt_lun, 0, block_size, block_size, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -228,7 +228,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test ORWRITE when medium is ejected."); - ret = orwrite(iscsic, tgt_lun, 0, block_size, block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -242,7 +242,7 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "[SKIPPED] Test not implemented yet"); logging(LOG_VERBOSE, "Test WRITESAME10 when medium is ejected."); - ret = writesame10(iscsic, tgt_lun, 0, block_size, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -253,7 +253,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITESAME16 when medium is ejected."); - ret = writesame16(iscsic, tgt_lun, 0, block_size, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -266,7 +266,7 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "Test UNMAP when medium is ejected."); list[0].lba = 0; list[0].num = lbppb; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -278,7 +278,7 @@ test_nomedia_sbc(void) finished: logging(LOG_VERBOSE, "Load the medium again."); - ret = startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_0blocks.c b/test-tool/test_orwrite_0blocks.c index 80c099d..5d7b641 100644 --- a/test-tool/test_orwrite_0blocks.c +++ b/test-tool/test_orwrite_0blocks.c @@ -33,7 +33,7 @@ test_orwrite_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==0"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_orwrite_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks one block past end-of-LUN"); - ret = orwrite(iscsic, tgt_lun, num_blocks + 1, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==2^63"); - ret = orwrite(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==-1"); - ret = orwrite(iscsic, tgt_lun, -1, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_beyond_eol.c b/test-tool/test_orwrite_beyond_eol.c index c057dde..bc222f9 100644 --- a/test-tool/test_orwrite_beyond_eol.c +++ b/test-tool/test_orwrite_beyond_eol.c @@ -40,7 +40,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, num_blocks + 1 - i, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -69,7 +69,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, -1, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, num_blocks - 1, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_flags.c b/test-tool/test_orwrite_flags.c index 317f113..8ea0cf4 100644 --- a/test-tool/test_orwrite_flags.c +++ b/test-tool/test_orwrite_flags.c @@ -39,7 +39,7 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE flags"); logging(LOG_VERBOSE, "Test ORWRITE with DPO==1"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==0"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==1"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==0 FUA_NV==1"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with DPO==1 FUA==1 FUA_NV==1"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_simple.c b/test-tool/test_orwrite_simple.c index 394ddd4..470df44 100644 --- a/test-tool/test_orwrite_simple.c +++ b/test-tool/test_orwrite_simple.c @@ -42,7 +42,7 @@ test_orwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, 0, i * block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,7 +58,7 @@ test_orwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(iscsic, tgt_lun, num_blocks - i, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index b6f6245..2e7d505 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -47,14 +47,14 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); - ret = write10(iscsic, tgt_lun, 0, i * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); - ret = orwrite(iscsic, tgt_lun, 0, i * block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -65,7 +65,7 @@ test_orwrite_verify(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -76,13 +76,13 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); - ret = orwrite(iscsic, tgt_lun, 0, i * block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,20 +101,20 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); - ret = write16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); - ret = orwrite(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -125,13 +125,13 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); - ret = orwrite(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read16(iscsic, tgt_lun, num_blocks - i, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_wrprotect.c b/test-tool/test_orwrite_wrprotect.c index 65c9dbd..d99e842 100644 --- a/test-tool/test_orwrite_wrprotect.c +++ b/test-tool/test_orwrite_wrprotect.c @@ -44,7 +44,7 @@ test_orwrite_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = orwrite(iscsic, tgt_lun, 0, block_size, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_prefetch10_0blocks.c b/test-tool/test_prefetch10_0blocks.c index f16a27b..73b8c89 100644 --- a/test-tool/test_prefetch10_0blocks.c +++ b/test-tool/test_prefetch10_0blocks.c @@ -30,7 +30,7 @@ test_prefetch10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==0"); - ret = prefetch10(iscsic, tgt_lun, 0, 0, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -45,19 +45,19 @@ test_prefetch10_0blocks(void) } logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks one block past end-of-LUN"); - ret = prefetch10(iscsic, tgt_lun, num_blocks + 1, 0, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==2^31"); - ret = prefetch10(iscsic, tgt_lun, 0x80000000, 0, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==-1"); - ret = prefetch10(iscsic, tgt_lun, -1, 0, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_beyond_eol.c b/test-tool/test_prefetch10_beyond_eol.c index e3d6a0b..f5c0704 100644 --- a/test-tool/test_prefetch10_beyond_eol.c +++ b/test-tool/test_prefetch10_beyond_eol.c @@ -37,7 +37,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, num_blocks + 1 - i, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i, 0, 0, EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -50,7 +50,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, 0x80000000, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -58,7 +58,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, -1, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, -1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -66,7 +66,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, num_blocks - 1, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_flags.c b/test-tool/test_prefetch10_flags.c index 7071b26..a59a21f 100644 --- a/test-tool/test_prefetch10_flags.c +++ b/test-tool/test_prefetch10_flags.c @@ -34,7 +34,7 @@ test_prefetch10_flags(void) logging(LOG_VERBOSE, "Test PREFETCH10 flags"); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED==1"); - ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch10_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with GROUP==3"); - ret = prefetch10(iscsic, tgt_lun, 0, 1, 0, 3, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 0, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED=1 and GROUP==3"); - ret = prefetch10(iscsic, tgt_lun, 0, 1, 1, 3, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_simple.c b/test-tool/test_prefetch10_simple.c index eb5020b..ca0351b 100644 --- a/test-tool/test_prefetch10_simple.c +++ b/test-tool/test_prefetch10_simple.c @@ -33,7 +33,7 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, 0, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, i, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -46,7 +46,7 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(iscsic, tgt_lun, num_blocks - i, i, 0, 0, + ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_0blocks.c b/test-tool/test_prefetch16_0blocks.c index d175a88..6620d80 100644 --- a/test-tool/test_prefetch16_0blocks.c +++ b/test-tool/test_prefetch16_0blocks.c @@ -30,7 +30,7 @@ test_prefetch16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==0"); - ret = prefetch16(iscsic, tgt_lun, 0, 0, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -40,19 +40,19 @@ test_prefetch16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks one block past end-of-LUN"); - ret = prefetch16(iscsic, tgt_lun, num_blocks + 1, 0, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==2^63"); - ret = prefetch16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==-1"); - ret = prefetch16(iscsic, tgt_lun, -1, 0, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_beyond_eol.c b/test-tool/test_prefetch16_beyond_eol.c index 7adcd6f..069e250 100644 --- a/test-tool/test_prefetch16_beyond_eol.c +++ b/test-tool/test_prefetch16_beyond_eol.c @@ -32,7 +32,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, num_blocks + 1 - i, i, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i, 0, 0, EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -45,7 +45,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -54,7 +54,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, -1, i, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, -1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -62,7 +62,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, num_blocks - 1, i, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_flags.c b/test-tool/test_prefetch16_flags.c index d8db486..3f24e9f 100644 --- a/test-tool/test_prefetch16_flags.c +++ b/test-tool/test_prefetch16_flags.c @@ -34,7 +34,7 @@ test_prefetch16_flags(void) logging(LOG_VERBOSE, "Test PREFETCH16 flags"); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED==1"); - ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch16_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with GROUP==3"); - ret = prefetch16(iscsic, tgt_lun, 0, 1, 0, 3, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 0, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED=1 and GROUP==3"); - ret = prefetch16(iscsic, tgt_lun, 0, 1, 1, 3, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_simple.c b/test-tool/test_prefetch16_simple.c index f31ab35..92725ec 100644 --- a/test-tool/test_prefetch16_simple.c +++ b/test-tool/test_prefetch16_simple.c @@ -33,7 +33,7 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, 0, i, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, i, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -46,7 +46,7 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(iscsic, tgt_lun, num_blocks - i, i, 0, 0, + ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_2_itnexuses.c b/test-tool/test_preventallow_2_itnexuses.c index 2b14acc..6a9b0d1 100644 --- a/test-tool/test_preventallow_2_itnexuses.c +++ b/test-tool/test_preventallow_2_itnexuses.c @@ -36,28 +36,28 @@ test_preventallow_2_itnexuses(void) logging(LOG_VERBOSE, "Test that PREVENT MEDIUM REMOVAL are seen on other nexuses as well"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Try to eject the medium on the second connection"); - ret = startstopunit(iscsic2, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(iscsic2, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); @@ -70,11 +70,11 @@ test_preventallow_2_itnexuses(void) logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_cold_reset.c b/test-tool/test_preventallow_cold_reset.c index a374cdb..81eec21 100644 --- a/test-tool/test_preventallow_cold_reset.c +++ b/test-tool/test_preventallow_cold_reset.c @@ -36,50 +36,50 @@ test_preventallow_cold_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Perform cold reset on target"); - ret = iscsi_task_mgmt_target_cold_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_cold_reset_sync(sd->iscsi_ctx); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_eject.c b/test-tool/test_preventallow_eject.c index d110064..de38b4d 100644 --- a/test-tool/test_preventallow_eject.c +++ b/test-tool/test_preventallow_eject.c @@ -36,48 +36,48 @@ test_preventallow_eject(void) logging(LOG_VERBOSE, "Test that we can not eject medium when PREVENT is active"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium again"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_itnexus_loss.c b/test-tool/test_preventallow_itnexus_loss.c index d649c77..038254c 100644 --- a/test-tool/test_preventallow_itnexus_loss.c +++ b/test-tool/test_preventallow_itnexus_loss.c @@ -36,53 +36,53 @@ test_preventallow_itnexus_loss(void) logging(LOG_VERBOSE, "Test that IT-Nexus loss clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Disconnect from the target."); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); logging(LOG_VERBOSE, "Reconnect to target"); - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_logout.c b/test-tool/test_preventallow_logout.c index 130916d..9280f76 100644 --- a/test-tool/test_preventallow_logout.c +++ b/test-tool/test_preventallow_logout.c @@ -36,54 +36,54 @@ test_preventallow_logout(void) logging(LOG_VERBOSE, "Test that Logout loss clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Logout from target"); - iscsi_logout_sync(iscsic); - iscsi_destroy_context(iscsic); + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); logging(LOG_VERBOSE, "Relogin to target"); - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_lun_reset.c b/test-tool/test_preventallow_lun_reset.c index 625ea1a..fd1cb0e 100644 --- a/test-tool/test_preventallow_lun_reset.c +++ b/test-tool/test_preventallow_lun_reset.c @@ -36,50 +36,50 @@ test_preventallow_lun_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Perform LUN reset on target"); - ret = iscsi_task_mgmt_lun_reset_sync(iscsic, tgt_lun); + ret = iscsi_task_mgmt_lun_reset_sync(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_simple.c b/test-tool/test_preventallow_simple.c index eb2324d..9d74822 100644 --- a/test-tool/test_preventallow_simple.c +++ b/test-tool/test_preventallow_simple.c @@ -36,10 +36,10 @@ test_preventallow_simple(void) logging(LOG_VERBOSE, "Test PREVENTALLOW basics"); logging(LOG_VERBOSE, "Test we can set PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_warm_reset.c b/test-tool/test_preventallow_warm_reset.c index 02cc71b..cf610e2 100644 --- a/test-tool/test_preventallow_warm_reset.c +++ b/test-tool/test_preventallow_warm_reset.c @@ -36,50 +36,50 @@ test_preventallow_warm_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 1); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Perform warm reset on target"); - ret = iscsi_task_mgmt_target_warm_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_warm_reset_sync(sd->iscsi_ctx); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(iscsic, tgt_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(iscsic, tgt_lun, 0); + ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(iscsic, tgt_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_prin_read_keys_simple.c b/test-tool/test_prin_read_keys_simple.c index 01b748c..feee29a 100644 --- a/test-tool/test_prin_read_keys_simple.c +++ b/test-tool/test_prin_read_keys_simple.c @@ -36,7 +36,7 @@ test_prin_read_keys_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test Persistent Reserve IN READ_KEYS works."); - ret = prin_read_keys(iscsic, tgt_lun, &task, NULL); + ret = prin_read_keys(sd->iscsi_ctx, sd->iscsi_lun, &task, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE IN is not implemented."); CU_PASS("PERSISTENT RESERVE IN is not implemented."); diff --git a/test-tool/test_prin_serviceaction_range.c b/test-tool/test_prin_serviceaction_range.c index d8f3a00..3e43fd1 100644 --- a/test-tool/test_prin_serviceaction_range.c +++ b/test-tool/test_prin_serviceaction_range.c @@ -37,7 +37,7 @@ test_prin_serviceaction_range(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN Serviceaction range."); /* verify PRIN/READ_KEYS works -- XXX redundant -- remove this? */ - ret = prin_read_keys(iscsic, tgt_lun, &task, NULL); + ret = prin_read_keys(sd->iscsi_ctx, sd->iscsi_lun, &task, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE IN is not implemented."); CU_PASS("PERSISTENT RESERVE IN is not implemented."); @@ -47,13 +47,13 @@ test_prin_serviceaction_range(void) /* verify that PRIN/SA={0,1,2,3} works ... */ for (i = 0; i < 4; i++) { - ret = prin_task(iscsic, tgt_lun, i, 1); + ret = prin_task(sd->iscsi_ctx, sd->iscsi_lun, i, 1); CU_ASSERT_EQUAL(ret, 0); } /* verify that PRIN/SA={4..0x20} fails ... */ for (i = 4; i < 0x20; i++) { - ret = prin_task(iscsic, tgt_lun, i, 0); + ret = prin_task(sd->iscsi_ctx, sd->iscsi_lun, i, 0); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_prout_register_simple.c b/test-tool/test_prout_register_simple.c index ca13193..d71f1a0 100644 --- a/test-tool/test_prout_register_simple.c +++ b/test-tool/test_prout_register_simple.c @@ -37,7 +37,7 @@ test_prout_register_simple(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN REGISTER works."); /* register our reservation key with the target */ - ret = prout_register_and_ignore(iscsic, tgt_lun, key); + ret = prout_register_and_ignore(sd->iscsi_ctx, sd->iscsi_lun, key); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); @@ -46,18 +46,18 @@ test_prout_register_simple(void) CU_ASSERT_EQUAL(ret, 0); /* verify we can read the registration */ - ret = prin_verify_key_presence(iscsic, tgt_lun, key, 1); + ret = prin_verify_key_presence(sd->iscsi_ctx, sd->iscsi_lun, key, 1); CU_ASSERT_EQUAL(ret, 0); /* try to reregister, which should fail */ - ret = prout_reregister_key_fails(iscsic, tgt_lun, key+1); + ret = prout_reregister_key_fails(sd->iscsi_ctx, sd->iscsi_lun, key+1); CU_ASSERT_EQUAL(ret, 0); /* release from the target */ - ret = prout_register_key(iscsic, tgt_lun, 0, key); + ret = prout_register_key(sd->iscsi_ctx, sd->iscsi_lun, 0, key); CU_ASSERT_EQUAL(ret, 0); /* Verify the registration is gone */ - ret = prin_verify_key_presence(iscsic, tgt_lun, key, 0); + ret = prin_verify_key_presence(sd->iscsi_ctx, sd->iscsi_lun, key, 0); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prout_reserve_access.c b/test-tool/test_prout_reserve_access.c index 2d4dd65..cf9d6b0 100644 --- a/test-tool/test_prout_reserve_access.c +++ b/test-tool/test_prout_reserve_access.c @@ -123,7 +123,7 @@ verify_persistent_reserve_access(struct iscsi_context *iscsi1, int lun1, void test_prout_reserve_access_ea(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0, 0, 0, 0); } @@ -131,7 +131,7 @@ test_prout_reserve_access_ea(void) void test_prout_reserve_access_we(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 1, 0, 1, 0); } @@ -139,7 +139,7 @@ test_prout_reserve_access_we(void) void test_prout_reserve_access_earo(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 1, 1, 0, 0); } @@ -147,7 +147,7 @@ test_prout_reserve_access_earo(void) void test_prout_reserve_access_wero(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 1, 1, 1, 0); } @@ -155,7 +155,7 @@ test_prout_reserve_access_wero(void) void test_prout_reserve_access_eaar(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1, 1, 0, 0); } @@ -163,7 +163,7 @@ test_prout_reserve_access_eaar(void) void test_prout_reserve_access_wear(void) { - verify_persistent_reserve_access(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1, 1, 1, 0); } diff --git a/test-tool/test_prout_reserve_ownership.c b/test-tool/test_prout_reserve_ownership.c index 9404e6d..28b33d1 100644 --- a/test-tool/test_prout_reserve_ownership.c +++ b/test-tool/test_prout_reserve_ownership.c @@ -97,41 +97,41 @@ verify_persistent_reserve_ownership(struct iscsi_context *iscsi1, int lun1, void test_prout_reserve_ownership_ea(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0); } void test_prout_reserve_ownership_we(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 0); } void test_prout_reserve_ownership_earo(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 0); } void test_prout_reserve_ownership_wero(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 0); } void test_prout_reserve_ownership_eaar(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1); } void test_prout_reserve_ownership_wear(void) { - verify_persistent_reserve_ownership(iscsic, tgt_lun, iscsic2, tgt_lun2, + verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1); } diff --git a/test-tool/test_prout_reserve_simple.c b/test-tool/test_prout_reserve_simple.c index c7a0c42..90144d5 100644 --- a/test-tool/test_prout_reserve_simple.c +++ b/test-tool/test_prout_reserve_simple.c @@ -52,7 +52,7 @@ test_prout_reserve_simple(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN RESERVE works."); /* register our reservation key with the target */ - ret = prout_register_and_ignore(iscsic, tgt_lun, key); + ret = prout_register_and_ignore(sd->iscsi_ctx, sd->iscsi_lun, key); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); @@ -65,22 +65,22 @@ test_prout_reserve_simple(void) enum scsi_persistent_out_type pr_type = pr_types_to_test[i]; /* reserve the target */ - ret = prout_reserve(iscsic, tgt_lun, key, pr_type); + ret = prout_reserve(sd->iscsi_ctx, sd->iscsi_lun, key, pr_type); CU_ASSERT_EQUAL(ret, 0); /* verify target reservation */ - ret = prin_verify_reserved_as(iscsic, tgt_lun, + ret = prin_verify_reserved_as(sd->iscsi_ctx, sd->iscsi_lun, pr_type_is_all_registrants(pr_type) ? 0 : key, pr_type); CU_ASSERT_EQUAL(ret, 0); /* release our reservation */ - ret = prout_release(iscsic, tgt_lun, key, pr_type); + ret = prout_release(sd->iscsi_ctx, sd->iscsi_lun, key, pr_type); CU_ASSERT_EQUAL(ret, 0); } /* remove our key from the target */ - ret = prout_register_key(iscsic, tgt_lun, 0, key); + ret = prout_register_key(sd->iscsi_ctx, sd->iscsi_lun, 0, key); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read10_0blocks.c b/test-tool/test_read10_0blocks.c index 973efba..0c870a1 100644 --- a/test-tool/test_read10_0blocks.c +++ b/test-tool/test_read10_0blocks.c @@ -30,7 +30,7 @@ test_read10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==0"); - ret = read10(iscsic, NULL, tgt_lun, 0, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -41,21 +41,21 @@ test_read10_0blocks(void) } logging(LOG_VERBOSE, "Test READ10 0-blocks one block past end-of-LUN"); - ret = read10(iscsic, NULL, tgt_lun, num_blocks + 1, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==2^31"); - ret = read10(iscsic, NULL, tgt_lun, 0x80000000, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==-1"); - ret = read10(iscsic, NULL, tgt_lun, -1, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_beyond_eol.c b/test-tool/test_read10_beyond_eol.c index 4fdae75..148693a 100644 --- a/test-tool/test_read10_beyond_eol.c +++ b/test-tool/test_read10_beyond_eol.c @@ -40,7 +40,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL,tgt_lun, num_blocks + 1 - i, + ret = read10(sd->iscsi_ctx, NULL,sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -52,7 +52,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0x80000000, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -64,7 +64,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, -1, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +76,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, num_blocks - 1, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_flags.c b/test-tool/test_read10_flags.c index b467278..d0ed3f2 100644 --- a/test-tool/test_read10_flags.c +++ b/test-tool/test_read10_flags.c @@ -36,35 +36,35 @@ test_read10_flags(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test READ10 with DPO==1"); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==0"); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==1"); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==0 FUA_NV==1"); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with DPO==1 FUA==1 FUA_NV==1"); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_invalid.c b/test-tool/test_read10_invalid.c index 4de7360..4dfed15 100644 --- a/test-tool/test_read10_invalid.c +++ b/test-tool/test_read10_invalid.c @@ -54,19 +54,19 @@ test_read10_invalid(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -89,7 +89,7 @@ test_read10_invalid(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==10000"); @@ -103,13 +103,13 @@ test_read10_invalid(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 10000; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -147,13 +147,13 @@ test_read10_invalid(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 200; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -193,13 +193,13 @@ test_read10_invalid(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = block_size; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -240,16 +240,16 @@ test_read10_invalid(void) data.size = block_size; data.data = (unsigned char *)buf; - iscsi_set_noautoreconnect(iscsic, 1); - iscsi_set_timeout(iscsic, 3); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); + iscsi_set_timeout(sd->iscsi_ctx, 3); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); scsi_free_scsi_task(task); diff --git a/test-tool/test_read10_rdprotect.c b/test-tool/test_read10_rdprotect.c index c8fff2f..028f30d 100644 --- a/test-tool/test_read10_rdprotect.c +++ b/test-tool/test_read10_rdprotect.c @@ -42,7 +42,7 @@ test_read10_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read10_residuals.c b/test-tool/test_read10_residuals.c index f177d44..bb89c15 100644 --- a/test-tool/test_read10_residuals.c +++ b/test-tool/test_read10_residuals.c @@ -55,19 +55,19 @@ test_read10_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -90,7 +90,7 @@ test_read10_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==10000"); @@ -104,13 +104,13 @@ test_read10_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 10000; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -152,13 +152,13 @@ test_read10_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 200; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -198,13 +198,13 @@ test_read10_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = block_size; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); diff --git a/test-tool/test_read10_simple.c b/test-tool/test_read10_simple.c index b0d06c0..c142a12 100644 --- a/test-tool/test_read10_simple.c +++ b/test-tool/test_read10_simple.c @@ -37,7 +37,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL,tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL,sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_0blocks.c b/test-tool/test_read12_0blocks.c index 88b0811..09e3827 100644 --- a/test-tool/test_read12_0blocks.c +++ b/test-tool/test_read12_0blocks.c @@ -30,7 +30,7 @@ test_read12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==0"); - ret = read12(iscsic, tgt_lun, 0, 0, block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -46,21 +46,21 @@ test_read12_0blocks(void) } logging(LOG_VERBOSE, "Test READ12 0-blocks one block past end-of-LUN"); - ret = read12(iscsic, tgt_lun, num_blocks + 1, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==2^31"); - ret = read12(iscsic, tgt_lun, 0x80000000, 0, block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==-1"); - ret = read12(iscsic, tgt_lun, -1, 0, block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_beyond_eol.c b/test-tool/test_read12_beyond_eol.c index 87232ca..ea214d2 100644 --- a/test-tool/test_read12_beyond_eol.c +++ b/test-tool/test_read12_beyond_eol.c @@ -40,7 +40,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks + 1 - i, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, 0x80000000, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -69,7 +69,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, -1, i * block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks - 1, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_flags.c b/test-tool/test_read12_flags.c index 7bac8b5..75161b0 100644 --- a/test-tool/test_read12_flags.c +++ b/test-tool/test_read12_flags.c @@ -36,7 +36,7 @@ test_read12_flags(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test READ12 with DPO==1"); - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,28 +48,28 @@ test_read12_flags(void) logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==0"); - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==1"); - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==0 FUA_NV==1"); - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with DPO==1 FUA==1 FUA_NV==1"); - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_rdprotect.c b/test-tool/test_read12_rdprotect.c index b01c6e3..125fe7b 100644 --- a/test-tool/test_read12_rdprotect.c +++ b/test-tool/test_read12_rdprotect.c @@ -41,7 +41,7 @@ test_read12_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read12(iscsic, tgt_lun, 0, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read12_residuals.c b/test-tool/test_read12_residuals.c index 38ed3b4..e359075 100644 --- a/test-tool/test_read12_residuals.c +++ b/test-tool/test_read12_residuals.c @@ -50,12 +50,12 @@ test_read12_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -69,7 +69,7 @@ test_read12_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -92,7 +92,7 @@ test_read12_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==10000"); @@ -106,13 +106,13 @@ test_read12_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 10000; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -154,13 +154,13 @@ test_read12_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 200; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -200,13 +200,13 @@ test_read12_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = block_size; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); diff --git a/test-tool/test_read12_simple.c b/test-tool/test_read12_simple.c index 93518fb..00c720b 100644 --- a/test-tool/test_read12_simple.c +++ b/test-tool/test_read12_simple.c @@ -37,7 +37,7 @@ test_read12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, 0, i * block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_read12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks - i, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_0blocks.c b/test-tool/test_read16_0blocks.c index 62fb146..c72ce03 100644 --- a/test-tool/test_read16_0blocks.c +++ b/test-tool/test_read16_0blocks.c @@ -32,7 +32,7 @@ test_read16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==0"); - ret = read16(iscsic, tgt_lun, 0, 0, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -43,21 +43,21 @@ test_read16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks one block past end-of-LUN"); - ret = read16(iscsic, tgt_lun, num_blocks + 1, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==2^63"); - ret = read16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==-1"); - ret = read16(iscsic, tgt_lun, -1, 0, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_beyond_eol.c b/test-tool/test_read16_beyond_eol.c index 418de91..47e7b53 100644 --- a/test-tool/test_read16_beyond_eol.c +++ b/test-tool/test_read16_beyond_eol.c @@ -49,7 +49,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks + 1 - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -67,7 +67,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 1ULL << (64 - ilog2(block_size)), i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); @@ -96,7 +96,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 1ULL << (63 - ilog2(block_size)), i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); @@ -110,7 +110,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, -1, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -123,7 +123,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks - 1, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_flags.c b/test-tool/test_read16_flags.c index 436ebe6..763aff7 100644 --- a/test-tool/test_read16_flags.c +++ b/test-tool/test_read16_flags.c @@ -36,7 +36,7 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 flags"); logging(LOG_VERBOSE, "Test READ16 with DPO==1"); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,28 +48,28 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==0"); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==1"); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==0 FUA_NV==1"); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with DPO==1 FUA==1 FUA_NV==1"); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_rdprotect.c b/test-tool/test_read16_rdprotect.c index 800372b..db81d79 100644 --- a/test-tool/test_read16_rdprotect.c +++ b/test-tool/test_read16_rdprotect.c @@ -41,7 +41,7 @@ test_read16_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read16_residuals.c b/test-tool/test_read16_residuals.c index 538096e..a914754 100644 --- a/test-tool/test_read16_residuals.c +++ b/test-tool/test_read16_residuals.c @@ -50,12 +50,12 @@ test_read16_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -69,7 +69,7 @@ test_read16_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -92,7 +92,7 @@ test_read16_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try reading one block but with iSCSI expected transfer length==10000"); @@ -106,13 +106,13 @@ test_read16_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 10000; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -154,13 +154,13 @@ test_read16_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = 200; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -200,13 +200,13 @@ test_read16_residuals(void) task->xfer_dir = SCSI_XFER_READ; task->expxferlen = block_size; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); diff --git a/test-tool/test_read16_simple.c b/test-tool/test_read16_simple.c index e91f241..413160d 100644 --- a/test-tool/test_read16_simple.c +++ b/test-tool/test_read16_simple.c @@ -39,7 +39,7 @@ test_read16_simple(void) break; } - ret = read16(iscsic, tgt_lun, 0, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_read16_simple(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read6_beyond_eol.c b/test-tool/test_read6_beyond_eol.c index eaeeb52..db0f378 100644 --- a/test-tool/test_read6_beyond_eol.c +++ b/test-tool/test_read6_beyond_eol.c @@ -38,7 +38,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 1-255 blocks one block beyond the end"); for (i = 1; i <= 255; i++) { - ret = read6(iscsic, tgt_lun, num_blocks + 1 - i, + ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -52,7 +52,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 1-255 blocks at LBA==0x1fffff"); for (i = 1; i <= 255; i++) { - ret = read6(iscsic, tgt_lun, 0x1fffff, + ret = read6(sd->iscsi_ctx, sd->iscsi_lun, 0x1fffff, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -61,7 +61,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 2-255 blocks all but one block beyond the end"); for (i = 2; i <= 255; i++) { - ret = read6(iscsic, tgt_lun, num_blocks - 1, + ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read6_simple.c b/test-tool/test_read6_simple.c index 6930400..19c436d 100644 --- a/test-tool/test_read6_simple.c +++ b/test-tool/test_read6_simple.c @@ -34,7 +34,7 @@ test_read6_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 of 1-255 blocks at the start of the LUN"); for (i = 1; i <= 255; i++) { - ret = read6(iscsic, tgt_lun, 0, i * block_size, + ret = read6(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -51,7 +51,7 @@ test_read6_simple(void) CU_PASS("LUN is too big for read-at-eol tests with READ6. Skipping test.\n"); } else { for (i = 1; i <= 255; i++) { - ret = read6(iscsic, tgt_lun, num_blocks - i, + ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,11 +64,11 @@ test_read6_simple(void) logging(LOG_VERBOSE, "Test sending a READ6 with transfer length == 0 " "(meaning 256 blocks)"); /* 256 is converted to 0 when the CDB is marshalled by the helper */ - task = iscsi_read6_sync(iscsic, tgt_lun, 0, + task = iscsi_read6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 256 * block_size, block_size); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] READ6 command: " - "failed with sense. %s", iscsi_get_error(iscsic)); + "failed with sense. %s", iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); diff --git a/test-tool/test_readcapacity10_simple.c b/test-tool/test_readcapacity10_simple.c index 8a2d52f..242f2db 100644 --- a/test-tool/test_readcapacity10_simple.c +++ b/test-tool/test_readcapacity10_simple.c @@ -34,7 +34,7 @@ test_readcapacity10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic READCAPACITY10"); - ret = readcapacity10(iscsic, tgt_lun, 0, 0, + ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_readcapacity16_alloclen.c b/test-tool/test_readcapacity16_alloclen.c index 6587e39..0f8c089 100644 --- a/test-tool/test_readcapacity16_alloclen.c +++ b/test-tool/test_readcapacity16_alloclen.c @@ -35,7 +35,7 @@ test_readcapacity16_alloclen(void) logging(LOG_VERBOSE, "Test that READCAPACITY16 with alloc_len 0-15 is not an error"); for (i = 0; i < 16; i++) { - ret = readcapacity16(iscsic, tgt_lun, i, + ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, i, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim SBC-3 support."); diff --git a/test-tool/test_readcapacity16_simple.c b/test-tool/test_readcapacity16_simple.c index fb7ce4d..3b8e89f 100644 --- a/test-tool/test_readcapacity16_simple.c +++ b/test-tool/test_readcapacity16_simple.c @@ -34,7 +34,7 @@ test_readcapacity16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that READCAPACITY16 works"); - ret = readcapacity16(iscsic, tgt_lun, 16, + ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 16, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim support."); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index d15e301..6625082 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -41,25 +41,25 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test WRITE10 fails with WRITE_PROTECTED"); - ret = write10(iscsic, tgt_lun, 0, block_size, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 fails with WRITE_PROTECTED"); - ret = write12(iscsic, tgt_lun, 0, block_size, block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 fails with WRITE_PROTECTED"); - ret = write16(iscsic, tgt_lun, 0, block_size, block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE_SAME10 fails with WRITE_PROTECTED"); - ret = writesame10(iscsic, tgt_lun, 0, block_size, 1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -68,7 +68,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED"); - ret = writesame16(iscsic, tgt_lun, 0, block_size, 1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -77,7 +77,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME10 UNMAP fails with WRITE_PROTECTED"); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 1, 0, 0, NULL, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -86,7 +86,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 UNMAP fails with WRITE_PROTECTED"); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 1, 0, 0, NULL, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -97,7 +97,7 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one physical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = lbppb; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); @@ -107,7 +107,7 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one logical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = 1; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); @@ -115,7 +115,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY10 fails with WRITE_PROTECTED"); - ret = writeverify10(iscsic, tgt_lun, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -124,7 +124,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY12 fails with WRITE_PROTECTED"); - ret = writeverify12(iscsic, tgt_lun, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -133,7 +133,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY16 fails with WRITE_PROTECTED"); - ret = writeverify16(iscsic, tgt_lun, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -142,7 +142,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test ORWRITE fails with WRITE_PROTECTED"); - ret = orwrite(iscsic, tgt_lun, 0, + ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { diff --git a/test-tool/test_report_supported_opcodes_one_command.c b/test-tool/test_report_supported_opcodes_one_command.c index b38e264..c629602 100644 --- a/test-tool/test_report_supported_opcodes_one_command.c +++ b/test-tool/test_report_supported_opcodes_one_command.c @@ -39,7 +39,7 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "Fetch list of all supported opcodes"); - ret = report_supported_opcodes(iscsic, &rso_task, tgt_lun, + ret = report_supported_opcodes(sd->iscsi_ctx, &rso_task, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); @@ -68,7 +68,7 @@ test_report_supported_opcodes_one_command(void) if (rsoc->descriptors[i].servactv) { logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 001b should fail"); - ret = report_supported_opcodes(iscsic, NULL, tgt_lun, + ret = report_supported_opcodes(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -79,7 +79,7 @@ test_report_supported_opcodes_one_command(void) "service actions. Reporting Options 001b " "should work"); ret = report_supported_opcodes( - iscsic, NULL, tgt_lun, + sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -92,7 +92,7 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 002b should work"); ret = report_supported_opcodes( - iscsic, NULL, tgt_lun, + sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -103,7 +103,7 @@ test_report_supported_opcodes_one_command(void) "service actions. Reporting Options 002b " "should fail"); ret = report_supported_opcodes( - iscsic, NULL, tgt_lun, + sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -121,7 +121,7 @@ test_report_supported_opcodes_one_command(void) rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa); ret = report_supported_opcodes( - iscsic, &one_task, tgt_lun, + sd->iscsi_ctx, &one_task, sd->iscsi_lun, 0, rsoc->descriptors[i].servactv ? SCSI_REPORT_SUPPORTING_SERVICEACTION : diff --git a/test-tool/test_report_supported_opcodes_rctd.c b/test-tool/test_report_supported_opcodes_rctd.c index f801d95..48d494b 100644 --- a/test-tool/test_report_supported_opcodes_rctd.c +++ b/test-tool/test_report_supported_opcodes_rctd.c @@ -39,7 +39,7 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "without timeout descriptors"); ret = report_supported_opcodes( - iscsic, &rso_task, tgt_lun, + sd->iscsi_ctx, &rso_task, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); @@ -76,7 +76,7 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "with timeout descriptors"); ret = report_supported_opcodes( - iscsic, &rso_task, tgt_lun, + sd->iscsi_ctx, &rso_task, sd->iscsi_lun, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_report_supported_opcodes_servactv.c b/test-tool/test_report_supported_opcodes_servactv.c index ba66cd6..a9867b9 100644 --- a/test-tool/test_report_supported_opcodes_servactv.c +++ b/test-tool/test_report_supported_opcodes_servactv.c @@ -37,7 +37,7 @@ test_report_supported_opcodes_servactv(void) ret = report_supported_opcodes( - iscsic, &rso_task, tgt_lun, + sd->iscsi_ctx, &rso_task, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_report_supported_opcodes_simple.c b/test-tool/test_report_supported_opcodes_simple.c index 5183736..2ce84df 100644 --- a/test-tool/test_report_supported_opcodes_simple.c +++ b/test-tool/test_report_supported_opcodes_simple.c @@ -34,7 +34,7 @@ test_report_supported_opcodes_simple(void) logging(LOG_VERBOSE, "Test basic READ_SUPPORTED_OPCODES"); ret = report_supported_opcodes( - iscsic, NULL, tgt_lun, + sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 1024, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_reserve6_2initiators.c b/test-tool/test_reserve6_2initiators.c index 1952aa4..eb0950c 100644 --- a/test-tool/test_reserve6_2initiators.c +++ b/test-tool/test_reserve6_2initiators.c @@ -36,7 +36,7 @@ test_reserve6_2initiators(void) logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,50 +46,50 @@ test_reserve6_2initiators(void) logging(LOG_NORMAL, "Verify that the first initiator can re-RESERVE6 the same reservation"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, tgt_lun); + ret = reserve6_conflict(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "Try to RELEASE from the second initiator. Should be a nop"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "Test we can still send MODE SENSE from the first initiator"); - ret = mode_sense(iscsic, tgt_lun); + ret = mode_sense(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "MODE SENSE should fail from the second initiator"); - ret = mode_sense(iscsic2, tgt_lun); + ret = mode_sense(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, SCSI_STATUS_RESERVATION_CONFLICT); logging(LOG_NORMAL, "RESERVE6 from the second initiator should still fail"); - ret = reserve6_conflict(iscsic2, tgt_lun); + ret = reserve6_conflict(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the first initiator"); - ret = release6(iscsic, tgt_lun); + ret = release6(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); iscsi_logout_sync(iscsic2); diff --git a/test-tool/test_reserve6_itnexus_loss.c b/test-tool/test_reserve6_itnexus_loss.c index 7aebbd6..88f1fde 100644 --- a/test-tool/test_reserve6_itnexus_loss.c +++ b/test-tool/test_reserve6_itnexus_loss.c @@ -36,7 +36,7 @@ test_reserve6_itnexus_loss(void) logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,35 +46,35 @@ test_reserve6_itnexus_loss(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, tgt_lun); + ret = reserve6_conflict(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Disconnect from the target."); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); logging(LOG_VERBOSE, "Sleep for three seconds incase the target is slow to reset"); sleep(3); logging(LOG_VERBOSE, "Reconnect to target"); - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); goto finished; } logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); finished: diff --git a/test-tool/test_reserve6_logout.c b/test-tool/test_reserve6_logout.c index e0ea4ff..75a7818 100644 --- a/test-tool/test_reserve6_logout.c +++ b/test-tool/test_reserve6_logout.c @@ -36,7 +36,7 @@ test_reserve6_logout(void) logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,33 +46,33 @@ test_reserve6_logout(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, tgt_lun); + ret = reserve6_conflict(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Logout from target"); - iscsi_logout_sync(iscsic); - iscsi_destroy_context(iscsic); + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); logging(LOG_VERBOSE, "Relogin to target"); - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); iscsi_logout_sync(iscsic2); diff --git a/test-tool/test_reserve6_lun_reset.c b/test-tool/test_reserve6_lun_reset.c index 3b4a2ed..49a8404 100644 --- a/test-tool/test_reserve6_lun_reset.c +++ b/test-tool/test_reserve6_lun_reset.c @@ -36,7 +36,7 @@ test_reserve6_lun_reset(void) logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,9 +46,9 @@ test_reserve6_lun_reset(void) logging(LOG_VERBOSE, "Send a LUN Reset"); - ret = iscsi_task_mgmt_lun_reset_sync(iscsic, tgt_lun); + ret = iscsi_task_mgmt_lun_reset_sync(sd->iscsi_ctx, sd->iscsi_lun); if (ret != 0) { - logging(LOG_NORMAL, "LUN reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "LUN reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(ret, 0); @@ -57,18 +57,18 @@ test_reserve6_lun_reset(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); iscsi_logout_sync(iscsic2); diff --git a/test-tool/test_reserve6_simple.c b/test-tool/test_reserve6_simple.c index 8f5c69d..267150e 100644 --- a/test-tool/test_reserve6_simple.c +++ b/test-tool/test_reserve6_simple.c @@ -34,7 +34,7 @@ test_reserve6_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic RESERVE6/RELEASE6 commands if supported"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -42,6 +42,6 @@ test_reserve6_simple(void) } CU_ASSERT_EQUAL(ret, 0); - ret = release6(iscsic, tgt_lun); + ret = release6(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_reserve6_target_cold_reset.c b/test-tool/test_reserve6_target_cold_reset.c index 15914c7..d6d3b05 100644 --- a/test-tool/test_reserve6_target_cold_reset.c +++ b/test-tool/test_reserve6_target_cold_reset.c @@ -36,7 +36,7 @@ test_reserve6_target_cold_reset(void) logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,9 +46,9 @@ test_reserve6_target_cold_reset(void) logging(LOG_VERBOSE, "Send a Cold Reset to the target"); - ret = iscsi_task_mgmt_target_cold_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_cold_reset_sync(sd->iscsi_ctx); if (ret != 0) { - logging(LOG_NORMAL, "Cold reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "Cold reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(ret, 0); @@ -56,18 +56,18 @@ test_reserve6_target_cold_reset(void) sleep(3); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); iscsi_logout_sync(iscsic2); diff --git a/test-tool/test_reserve6_target_warm_reset.c b/test-tool/test_reserve6_target_warm_reset.c index db5bdd3..0ec0141 100644 --- a/test-tool/test_reserve6_target_warm_reset.c +++ b/test-tool/test_reserve6_target_warm_reset.c @@ -36,7 +36,7 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(iscsic, tgt_lun); + ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,9 +46,9 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, "Send a Warm Reset to the target"); - ret = iscsi_task_mgmt_target_warm_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_warm_reset_sync(sd->iscsi_ctx); if (ret != 0) { - logging(LOG_NORMAL, "Warm reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "Warm reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(ret, 0); @@ -57,7 +57,7 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -65,11 +65,11 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, tgt_lun); + ret = release6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); iscsi_logout_sync(iscsic2); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index a32723c..e4c7ec1 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -33,7 +33,7 @@ check_wabereq(void) struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - read10(iscsic, &task_ret, tgt_lun, 0, block_size, block_size, + read10(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); @@ -109,7 +109,7 @@ check_unmap(void) uint64_t lba; logging(LOG_VERBOSE, "Read LBA mapping from the target"); - get_lba_status(iscsic, &task_ret, tgt_lun, 0, 256, + get_lba_status(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, 256, EXPECT_STATUS_GOOD); if (task_ret == NULL) { logging(LOG_VERBOSE, "[FAILED] Failed to read LBA mapping " @@ -121,7 +121,7 @@ check_unmap(void) if (task_ret->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Failed to read LBA mapping " "from the target. Sense: %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_FAIL("[FAILED] Failed to read LBA mapping " "from the target."); scsi_free_scsi_task(task_ret); @@ -197,7 +197,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write16(iscsic, tgt_lun, lba, 256 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -209,7 +209,7 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) int ret; unsigned char *rbuf = alloca(256 * block_size); - ret = read16(iscsic, tgt_lun, lba, 256 * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -325,7 +325,7 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "Test we can perform basic BLOCK ERASE SANITIZE"); - ret = sanitize(iscsic, tgt_lun, + ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); @@ -341,7 +341,7 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "BLOCK_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "BLOCK ERASE"); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 8, &data); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_sanitize_block_erase_reserved.c b/test-tool/test_sanitize_block_erase_reserved.c index b6ad9e3..2c721ed 100644 --- a/test-tool/test_sanitize_block_erase_reserved.c +++ b/test-tool/test_sanitize_block_erase_reserved.c @@ -63,7 +63,7 @@ void test_sanitize_block_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE BLOCK_ERASE is not " @@ -79,7 +79,7 @@ void test_sanitize_block_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 9b0dd4b..27856b3 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -33,7 +33,7 @@ check_wacereq(void) struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - read10(iscsic, &task_ret, tgt_lun, 0, block_size, block_size, + read10(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); @@ -106,7 +106,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write16(iscsic, tgt_lun, lba, 256 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -118,7 +118,7 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) int ret; unsigned char *rbuf = alloca(256 * block_size); - ret = read16(iscsic, tgt_lun, lba, 256 * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -184,7 +184,7 @@ test_sanitize_crypto_erase(void) logging(LOG_VERBOSE, "Test we can perform basic CRYPTO ERASE SANITIZE"); - ret = sanitize(iscsic, tgt_lun, + ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); @@ -202,7 +202,7 @@ return; logging(LOG_VERBOSE, "CRYPTO_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "CRYPTO ERASE"); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 8, &data); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_sanitize_crypto_erase_reserved.c b/test-tool/test_sanitize_crypto_erase_reserved.c index 2afb0e7..e142305 100644 --- a/test-tool/test_sanitize_crypto_erase_reserved.c +++ b/test-tool/test_sanitize_crypto_erase_reserved.c @@ -63,7 +63,7 @@ void test_sanitize_crypto_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE CRYPTO_ERASE is not " @@ -79,7 +79,7 @@ void test_sanitize_crypto_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_exit_failure_mode.c b/test-tool/test_sanitize_exit_failure_mode.c index 3264dc5..40063ed 100644 --- a/test-tool/test_sanitize_exit_failure_mode.c +++ b/test-tool/test_sanitize_exit_failure_mode.c @@ -60,7 +60,7 @@ test_sanitize_exit_failure_mode(void) "be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "EXIT_FAILURE_MODE"); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_EXIT_FAILURE_MODE, 8, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_invalid_serviceaction.c b/test-tool/test_sanitize_invalid_serviceaction.c index 55361bb..1c77037 100644 --- a/test-tool/test_sanitize_invalid_serviceaction.c +++ b/test-tool/test_sanitize_invalid_serviceaction.c @@ -51,7 +51,7 @@ test_sanitize_invalid_serviceaction(void) logging(LOG_VERBOSE, "Verify that ServiceAction:0x%02d is " "an error.", i); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, i, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " diff --git a/test-tool/test_sanitize_overwrite.c b/test-tool/test_sanitize_overwrite.c index cdbfc4c..0fa7b52 100644 --- a/test-tool/test_sanitize_overwrite.c +++ b/test-tool/test_sanitize_overwrite.c @@ -33,7 +33,7 @@ init_lun_with_data(uint64_t lba) unsigned char *buf = alloca(256 * block_size); memset(buf, 'a', 256 * block_size); - ret = write16(iscsic, tgt_lun, lba, 256 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -46,7 +46,7 @@ check_lun_is_wiped(uint64_t lba, char c) unsigned char *rbuf = alloca(256 * block_size); unsigned char *zbuf = alloca(256 * block_size); - ret = read16(iscsic, tgt_lun, lba, 256 * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -124,7 +124,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize(iscsic, tgt_lun, + ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -140,7 +140,7 @@ test_sanitize_overwrite(void) data.data[2] = (block_size / 2) >> 8; data.data[3] = (block_size / 2 ) & 0xff; - ret = sanitize(iscsic, tgt_lun, + ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -151,7 +151,7 @@ test_sanitize_overwrite(void) data.data[2] = 0; data.data[3] = 4; - ret = sanitize(iscsic, tgt_lun, + ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -161,7 +161,7 @@ test_sanitize_overwrite(void) logging(LOG_VERBOSE, "Test OVERWRITE with ParamLen:%d is an " "error.", i); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, i, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " @@ -180,7 +180,7 @@ test_sanitize_overwrite(void) data.size = block_size + 8; data.data = alloca(block_size + 8); /* so we can send IP > blocksize */ memset(data.data, 0, data.size); - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, block_size + 5, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " @@ -199,7 +199,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -212,7 +212,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = 0x00; data.data[3] = 0x00; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -226,7 +226,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = (block_size + 4) >> 8; data.data[3] = (block_size + 4) & 0xff; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_overwrite_reserved.c b/test-tool/test_sanitize_overwrite_reserved.c index 2a17d37..94fef3c 100644 --- a/test-tool/test_sanitize_overwrite_reserved.c +++ b/test-tool/test_sanitize_overwrite_reserved.c @@ -73,7 +73,7 @@ void test_sanitize_overwrite_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE OVERWRITE is not " @@ -89,7 +89,7 @@ void test_sanitize_overwrite_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(iscsic, tgt_lun, + ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_readonly.c b/test-tool/test_sanitize_readonly.c index b0e7a4b..89f8c8c 100644 --- a/test-tool/test_sanitize_readonly.c +++ b/test-tool/test_sanitize_readonly.c @@ -40,14 +40,14 @@ test_sanitize_readonly(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Set Software Write Protect on the second connection"); - ret = set_swp(iscsic2, tgt_lun); + ret = set_swp(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { return; @@ -55,7 +55,7 @@ test_sanitize_readonly(void) logging(LOG_VERBOSE, "Use TESTUNITREADY to clear unit attention on " "first connection"); - while (testunitready_clear_ua(iscsic, tgt_lun)) { + while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { sleep(1); } @@ -77,7 +77,7 @@ test_sanitize_readonly(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_writeprotected(iscsic, tgt_lun, + ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } @@ -92,7 +92,7 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_writeprotected(iscsic, tgt_lun, + ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } @@ -106,18 +106,18 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_writeprotected(iscsic, tgt_lun, + ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Clear Software Write Protect on the second connection"); - ret = clear_swp(iscsic2, tgt_lun); + ret = clear_swp(iscsic2, sd->iscsi_lun); logging(LOG_VERBOSE, "Use TESTUNITREADY to clear unit attention on " "first connection"); - while (testunitready_clear_ua(iscsic, tgt_lun)) { + while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { sleep(1); } diff --git a/test-tool/test_sanitize_reservations.c b/test-tool/test_sanitize_reservations.c index 05e1919..b3509c8 100644 --- a/test-tool/test_sanitize_reservations.c +++ b/test-tool/test_sanitize_reservations.c @@ -40,7 +40,7 @@ test_sanitize_reservations(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, tgt_url, &tgt_lun); + iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); if (iscsic2 == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -48,7 +48,7 @@ test_sanitize_reservations(void) logging(LOG_VERBOSE, "Take out a RESERVE6 from the second " "initiator"); - ret = reserve6(iscsic2, tgt_lun); + ret = reserve6(iscsic2, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +70,7 @@ test_sanitize_reservations(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_conflict(iscsic, tgt_lun, + ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } @@ -85,7 +85,7 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_conflict(iscsic, tgt_lun, + ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } @@ -99,7 +99,7 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_conflict(iscsic, tgt_lun, + ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index 0a92b0f..f92b864 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -66,7 +66,7 @@ test_sanitize_reset(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - sanitize_task = iscsi_sanitize_task(iscsic, tgt_lun, + sanitize_task = iscsi_sanitize_task(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, sanitize_cb, NULL); @@ -74,7 +74,7 @@ test_sanitize_reset(void) /* just send something so that we know the sanitize command is sent * to the target */ - rl_task = iscsi_reportluns_sync(iscsic, 0, 64); + rl_task = iscsi_reportluns_sync(sd->iscsi_ctx, 0, 64); if (rl_task) { scsi_free_scsi_task(rl_task); } @@ -86,83 +86,83 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that the SANITIZE has started and that " "TESTUNITREADY fails with SANITIZE_IN_PROGRESS"); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that STARTSTOPUNIT fails with " "SANITIZE_IN_PROGRESS"); - ret = startstopunit(iscsic, tgt_lun, 1, 0, 1, 0, 1, 0, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 1, 0, 1, 0, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that READ16 fails with " "SANITIZE_IN_PROGRESS"); - ret = read16(iscsic, tgt_lun, 0, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that INQUIRY is still allowed while " "SANITIZE is in progress"); - ret = inquiry(iscsic, NULL, tgt_lun, 0, 0, 255, + ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Send an ABORT TASK"); - ret = iscsi_task_mgmt_abort_task_sync(iscsic, sanitize_task); + ret = iscsi_task_mgmt_abort_task_sync(sd->iscsi_ctx, sanitize_task); if (ret != 0) { logging(LOG_NORMAL, "ABORT TASK failed. %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } logging(LOG_VERBOSE, "Send an ABORT TASK SET"); - ret = iscsi_task_mgmt_abort_task_set_sync(iscsic, tgt_lun); + ret = iscsi_task_mgmt_abort_task_set_sync(sd->iscsi_ctx, sd->iscsi_lun); if (ret != 0) { logging(LOG_NORMAL, "ABORT TASK SET failed. %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } logging(LOG_VERBOSE, "Send a LUN Reset"); - ret = iscsi_task_mgmt_lun_reset_sync(iscsic, tgt_lun); + ret = iscsi_task_mgmt_lun_reset_sync(sd->iscsi_ctx, sd->iscsi_lun); if (ret != 0) { - logging(LOG_NORMAL, "LUN reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "LUN reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } logging(LOG_VERBOSE, "Send a Warm Reset"); - ret = iscsi_task_mgmt_target_warm_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_warm_reset_sync(sd->iscsi_ctx); if (ret != 0) { - logging(LOG_NORMAL, "Warm reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "Warm reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } logging(LOG_VERBOSE, "Send a Cold Reset"); - ret = iscsi_task_mgmt_target_cold_reset_sync(iscsic); + ret = iscsi_task_mgmt_target_cold_reset_sync(sd->iscsi_ctx); if (ret != 0) { - logging(LOG_NORMAL, "Cold reset failed. %s", iscsi_get_error(iscsic)); + logging(LOG_NORMAL, "Cold reset failed. %s", iscsi_get_error(sd->iscsi_ctx)); } logging(LOG_VERBOSE, "Disconnect from the target."); - iscsi_destroy_context(iscsic); + iscsi_destroy_context(sd->iscsi_ctx); logging(LOG_VERBOSE, "Sleep for one seconds incase the target is " "slow to reset"); sleep(1); logging(LOG_VERBOSE, "Reconnect to target"); - iscsic = iscsi_context_login(initiatorname1, tgt_url, &tgt_lun); - if (iscsic == NULL) { + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Verify that the SANITIZE is still going."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until the SANITIZE operation has finished"); - while (testunitready_clear_ua(iscsic, tgt_lun)) { + while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { sleep(60); } } diff --git a/test-tool/test_startstopunit_noloej.c b/test-tool/test_startstopunit_noloej.c index efb4869..e311aee 100644 --- a/test-tool/test_startstopunit_noloej.c +++ b/test-tool/test_startstopunit_noloej.c @@ -39,95 +39,95 @@ test_startstopunit_noloej(void) } logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==0"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==0"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==0"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 1, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 1, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==0"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 1, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 1, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_pwrcnd.c b/test-tool/test_startstopunit_pwrcnd.c index f571ce9..c902591 100644 --- a/test-tool/test_startstopunit_pwrcnd.c +++ b/test-tool/test_startstopunit_pwrcnd.c @@ -40,18 +40,18 @@ test_startstopunit_pwrcnd(void) logging(LOG_VERBOSE, "Test that media is not ejected when PC!=0"); for (i = 1; i < 16; i++) { - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, i, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(iscsic, tgt_lun, 1, 0, 0, 0, 1, 1, + startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_simple.c b/test-tool/test_startstopunit_simple.c index be391fc..dd0f90a 100644 --- a/test-tool/test_startstopunit_simple.c +++ b/test-tool/test_startstopunit_simple.c @@ -41,7 +41,7 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Media is not removable. STARTSTOPUNIT should fail"); } - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); if (!inq->rmb) { @@ -52,45 +52,45 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can read from the media."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can eject removable the media with IMMED==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); - ret = startstopunit(iscsic, tgt_lun, + ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can access the media again."); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_testunitready_simple.c b/test-tool/test_testunitready_simple.c index 443949a..7624d54 100644 --- a/test-tool/test_testunitready_simple.c +++ b/test-tool/test_testunitready_simple.c @@ -30,7 +30,7 @@ test_testunitready_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test TESTUNITREADY"); - ret = testunitready(iscsic, tgt_lun, + ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_unmap_0blocks.c b/test-tool/test_unmap_0blocks.c index 400840b..dddee15 100644 --- a/test-tool/test_unmap_0blocks.c +++ b/test-tool/test_unmap_0blocks.c @@ -40,7 +40,7 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[0].lba = i; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -49,7 +49,7 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, i, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, i, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -57,7 +57,7 @@ test_unmap_0blocks(void) logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at end-of-LUN"); list[0].lba = num_blocks; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -67,13 +67,13 @@ test_unmap_0blocks(void) list[i].lba = i/2; list[i].num = 0; } - ret = unmap(iscsic, tgt_lun, 0, list, 256, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 256, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test UNMAP without any descriptors."); - ret = unmap(iscsic, tgt_lun, 0, list, 0, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index 1dfb4e2..c21b88e 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -31,7 +31,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write10(iscsic, tgt_lun, lba, 256 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,12 +64,12 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "UNMAP blocks 0-%d", i); list[0].lba = 0; list[0].num = i; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -99,12 +99,12 @@ test_unmap_simple(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 1; - ret = unmap(iscsic, tgt_lun, 0, list, i + 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, i + 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_unmap_vpd.c b/test-tool/test_unmap_vpd.c index 203e88a..4f11a11 100644 --- a/test-tool/test_unmap_vpd.c +++ b/test-tool/test_unmap_vpd.c @@ -40,7 +40,7 @@ test_unmap_vpd(void) logging(LOG_VERBOSE, "Check if UNMAP is available."); list[0].lba = 0; list[0].num = 0; - ret = unmap(iscsic, tgt_lun, 0, list, 1, + ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, EXPECT_STATUS_GOOD); if (ret != 0) { logging(LOG_VERBOSE, "UNMAP is not available. Verify that VPD " diff --git a/test-tool/test_verify10_0blocks.c b/test-tool/test_verify10_0blocks.c index 35e950e..5f3a2d8 100644 --- a/test-tool/test_verify10_0blocks.c +++ b/test-tool/test_verify10_0blocks.c @@ -30,7 +30,7 @@ test_verify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==0"); - ret = verify10(iscsic, tgt_lun, 0, 0, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks one block past end-of-LUN"); - ret = verify10(iscsic, tgt_lun, num_blocks + 1, 0, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==2^31"); - ret = verify10(iscsic, tgt_lun, 0x80000000, 0, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==-1"); - ret = verify10(iscsic, tgt_lun, -1, 0, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_beyond_eol.c b/test-tool/test_verify10_beyond_eol.c index 5177b95..73897aa 100644 --- a/test-tool/test_verify10_beyond_eol.c +++ b/test-tool/test_verify10_beyond_eol.c @@ -42,7 +42,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(iscsic, tgt_lun, num_blocks + 1 - i, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(iscsic, tgt_lun, 0x80000000, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(iscsic, tgt_lun, -1, i * block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(iscsic, tgt_lun, num_blocks - 1, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_flags.c b/test-tool/test_verify10_flags.c index bcbe1d8..1cb7600 100644 --- a/test-tool/test_verify10_flags.c +++ b/test-tool/test_verify10_flags.c @@ -34,14 +34,14 @@ test_verify10_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 flags"); - ret = read10(iscsic, NULL, tgt_lun, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 with DPO==1"); - ret = verify10(iscsic, tgt_lun, 0, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_verify10_flags(void) logging(LOG_VERBOSE, "Test VERIFY10 with BYTCHK==1"); - ret = verify10(iscsic, tgt_lun, 0, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch.c b/test-tool/test_verify10_mismatch.c index cd2bca2..a9c95a9 100644 --- a/test-tool/test_verify10_mismatch.c +++ b/test-tool/test_verify10_mismatch.c @@ -40,7 +40,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(iscsic, tgt_lun, 0, i * block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(iscsic, tgt_lun, num_blocks - i, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch_no_cmp.c b/test-tool/test_verify10_mismatch_no_cmp.c index d3bbb25..3f60ad8 100644 --- a/test-tool/test_verify10_mismatch_no_cmp.c +++ b/test-tool/test_verify10_mismatch_no_cmp.c @@ -40,7 +40,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_verify10_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(iscsic, tgt_lun, 0, i * block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,7 +67,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +76,7 @@ test_verify10_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(iscsic, tgt_lun, num_blocks - i, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_simple.c b/test-tool/test_verify10_simple.c index 7ce8826..6d9c515 100644 --- a/test-tool/test_verify10_simple.c +++ b/test-tool/test_verify10_simple.c @@ -38,12 +38,12 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(iscsic, tgt_lun, 0, i * block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,12 +59,12 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(iscsic, tgt_lun, num_blocks - i, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_vrprotect.c b/test-tool/test_verify10_vrprotect.c index c1459b5..dc769cb 100644 --- a/test-tool/test_verify10_vrprotect.c +++ b/test-tool/test_verify10_vrprotect.c @@ -40,12 +40,12 @@ test_verify10_vrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, NULL, tgt_lun, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(iscsic, tgt_lun, 0, block_size, + ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_verify12_0blocks.c b/test-tool/test_verify12_0blocks.c index 99cb63e..6813d10 100644 --- a/test-tool/test_verify12_0blocks.c +++ b/test-tool/test_verify12_0blocks.c @@ -30,7 +30,7 @@ test_verify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==0"); - ret = verify12(iscsic, tgt_lun, 0, 0, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks one block past end-of-LUN"); - ret = verify12(iscsic, tgt_lun, num_blocks + 1, 0, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==2^31"); - ret = verify12(iscsic, tgt_lun, 0x80000000, 0, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==-1"); - ret = verify12(iscsic, tgt_lun, -1, 0, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_beyond_eol.c b/test-tool/test_verify12_beyond_eol.c index 1b3c1c8..3d153a9 100644 --- a/test-tool/test_verify12_beyond_eol.c +++ b/test-tool/test_verify12_beyond_eol.c @@ -42,7 +42,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(iscsic, tgt_lun, num_blocks + 1 - i, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(iscsic, tgt_lun, 0x80000000, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(iscsic, tgt_lun, -1, i * block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(iscsic, tgt_lun, num_blocks - 1, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_flags.c b/test-tool/test_verify12_flags.c index 25f61d7..4b6a76d 100644 --- a/test-tool/test_verify12_flags.c +++ b/test-tool/test_verify12_flags.c @@ -35,14 +35,14 @@ test_verify12_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 flags"); - ret = read12(iscsic, tgt_lun, 0, block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 with DPO==1"); - ret = verify12(iscsic, tgt_lun, 0, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_verify12_flags(void) logging(LOG_VERBOSE, "Test VERIFY12 with BYTCHK==1"); - ret = verify12(iscsic, tgt_lun, 0, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_mismatch.c b/test-tool/test_verify12_mismatch.c index 7de0de8..92ffbbf 100644 --- a/test-tool/test_verify12_mismatch.c +++ b/test-tool/test_verify12_mismatch.c @@ -40,7 +40,7 @@ test_verify12_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, 0, i * block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -48,7 +48,7 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(iscsic, tgt_lun, 0, i * block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify12_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks - i, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(iscsic, tgt_lun, num_blocks - i, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_mismatch_no_cmp.c b/test-tool/test_verify12_mismatch_no_cmp.c index 70e9f07..e982833 100644 --- a/test-tool/test_verify12_mismatch_no_cmp.c +++ b/test-tool/test_verify12_mismatch_no_cmp.c @@ -40,7 +40,7 @@ test_verify12_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, 0, i * block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -48,7 +48,7 @@ test_verify12_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(iscsic, tgt_lun, 0, i * block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify12_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks - i, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify12_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(iscsic, tgt_lun, num_blocks - i, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_simple.c b/test-tool/test_verify12_simple.c index 10132c6..0dd6b81 100644 --- a/test-tool/test_verify12_simple.c +++ b/test-tool/test_verify12_simple.c @@ -38,12 +38,12 @@ test_verify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify12(iscsic, tgt_lun, 0, i * block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,12 +59,12 @@ test_verify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(iscsic, tgt_lun, num_blocks - i, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify12(iscsic, tgt_lun, num_blocks - i, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_vrprotect.c b/test-tool/test_verify12_vrprotect.c index b7130e4..30df81e 100644 --- a/test-tool/test_verify12_vrprotect.c +++ b/test-tool/test_verify12_vrprotect.c @@ -41,10 +41,10 @@ test_verify12_vrprotect(void) logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(iscsic, NULL, tgt_lun, 0, block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify12(iscsic, tgt_lun, 0, block_size, + ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_verify16_0blocks.c b/test-tool/test_verify16_0blocks.c index e6c15f2..15ecb04 100644 --- a/test-tool/test_verify16_0blocks.c +++ b/test-tool/test_verify16_0blocks.c @@ -30,7 +30,7 @@ test_verify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==0"); - ret = verify16(iscsic, tgt_lun, 0, 0, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks one block past end-of-LUN"); - ret = verify16(iscsic, tgt_lun, num_blocks + 1, 0, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==2^63"); - ret = verify16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==-1"); - ret = verify16(iscsic, tgt_lun, -1, 0, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_beyond_eol.c b/test-tool/test_verify16_beyond_eol.c index 721db41..59aae3c 100644 --- a/test-tool/test_verify16_beyond_eol.c +++ b/test-tool/test_verify16_beyond_eol.c @@ -39,7 +39,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(iscsic, tgt_lun, num_blocks + 1 - i, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +70,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(iscsic, tgt_lun, -1, i * block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(iscsic, tgt_lun, num_blocks - 1, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); diff --git a/test-tool/test_verify16_flags.c b/test-tool/test_verify16_flags.c index 7091633..4ebfa18 100644 --- a/test-tool/test_verify16_flags.c +++ b/test-tool/test_verify16_flags.c @@ -35,12 +35,12 @@ test_verify16_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY16 flags"); - ret = read16(iscsic, tgt_lun, 0, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Test VERIFY16 with DPO==1"); - ret = verify16(iscsic, tgt_lun, 0, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -52,7 +52,7 @@ test_verify16_flags(void) logging(LOG_VERBOSE, "Test VERIFY16 with BYTCHK==1"); - ret = verify16(iscsic, tgt_lun, 0, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_mismatch.c b/test-tool/test_verify16_mismatch.c index c15d0be..d8d31e9 100644 --- a/test-tool/test_verify16_mismatch.c +++ b/test-tool/test_verify16_mismatch.c @@ -41,7 +41,7 @@ test_verify16_mismatch(void) break; } - ret = read16(iscsic, tgt_lun, 0, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -49,7 +49,7 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(iscsic, tgt_lun, 0, i * block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -68,7 +68,7 @@ test_verify16_mismatch(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -77,7 +77,7 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(iscsic, tgt_lun, num_blocks - i, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_mismatch_no_cmp.c b/test-tool/test_verify16_mismatch_no_cmp.c index ee3268e..3ad82cb 100644 --- a/test-tool/test_verify16_mismatch_no_cmp.c +++ b/test-tool/test_verify16_mismatch_no_cmp.c @@ -41,7 +41,7 @@ test_verify16_mismatch_no_cmp(void) break; } - ret = read16(iscsic, tgt_lun, 0, i * block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -49,7 +49,7 @@ test_verify16_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(iscsic, tgt_lun, 0, i * block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -68,7 +68,7 @@ test_verify16_mismatch_no_cmp(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -77,7 +77,7 @@ test_verify16_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(iscsic, tgt_lun, num_blocks - i, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_simple.c b/test-tool/test_verify16_simple.c index 542fb5a..6389782 100644 --- a/test-tool/test_verify16_simple.c +++ b/test-tool/test_verify16_simple.c @@ -38,10 +38,10 @@ test_verify16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(iscsic, NULL, tgt_lun, 0, i * block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify16(iscsic, tgt_lun, 0, i * block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,12 +58,12 @@ test_verify16_simple(void) break; } - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify16(iscsic, tgt_lun, num_blocks - i, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_vrprotect.c b/test-tool/test_verify16_vrprotect.c index f4ff94a..1f91be3 100644 --- a/test-tool/test_verify16_vrprotect.c +++ b/test-tool/test_verify16_vrprotect.c @@ -41,10 +41,10 @@ test_verify16_vrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read16(iscsic, tgt_lun, 0, block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify16(iscsic, tgt_lun, 0, block_size, + ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_write10_0blocks.c b/test-tool/test_write10_0blocks.c index 351b904..8621841 100644 --- a/test-tool/test_write10_0blocks.c +++ b/test-tool/test_write10_0blocks.c @@ -32,7 +32,7 @@ test_write10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==0"); - ret = write10(iscsic, tgt_lun, 0, 0, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_write10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITE10 0-blocks one block past end-of-LUN"); - ret = write10(iscsic, tgt_lun, num_blocks + 1, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==2^31"); - ret = write10(iscsic, tgt_lun, 0x80000000, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==-1"); - ret = write10(iscsic, tgt_lun, -1, 0, block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_beyond_eol.c b/test-tool/test_write10_beyond_eol.c index ffc6fe2..52f74e4 100644 --- a/test-tool/test_write10_beyond_eol.c +++ b/test-tool/test_write10_beyond_eol.c @@ -44,7 +44,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, num_blocks + 1 - i, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, 0x80000000, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, -1, i * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, num_blocks - 1, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_flags.c b/test-tool/test_write10_flags.c index 8faed5f..9961116 100644 --- a/test-tool/test_write10_flags.c +++ b/test-tool/test_write10_flags.c @@ -38,7 +38,7 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 flags"); logging(LOG_VERBOSE, "Test WRITE10 with DPO==1"); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==0"); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==1"); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==0 FUA_NV==1"); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with DPO==1 FUA==1 FUA_NV==1"); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index 9963a1a..a2e27f6 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -58,11 +58,11 @@ test_write10_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -76,7 +76,7 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -99,7 +99,7 @@ test_write10_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -115,13 +115,13 @@ test_write10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -157,7 +157,7 @@ test_write10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); @@ -167,7 +167,7 @@ test_write10_residuals(void) && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_INFORMATION_UNIT)) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_ASSERT(0); } @@ -206,13 +206,13 @@ test_write10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -241,7 +241,7 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(iscsic, tgt_lun, 0, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -261,13 +261,13 @@ test_write10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -289,7 +289,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -317,7 +317,7 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(iscsic, tgt_lun, 0, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -337,13 +337,13 @@ test_write10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -365,7 +365,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_simple.c b/test-tool/test_write10_simple.c index abe60a4..74f21ab 100644 --- a/test-tool/test_write10_simple.c +++ b/test-tool/test_write10_simple.c @@ -42,7 +42,7 @@ test_write10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, 0, i * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,7 +58,7 @@ test_write10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(iscsic, tgt_lun, num_blocks - i, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_wrprotect.c b/test-tool/test_write10_wrprotect.c index 451de15..acd4bc5 100644 --- a/test-tool/test_write10_wrprotect.c +++ b/test-tool/test_write10_wrprotect.c @@ -44,7 +44,7 @@ test_write10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_write12_0blocks.c b/test-tool/test_write12_0blocks.c index fe13249..81f9765 100644 --- a/test-tool/test_write12_0blocks.c +++ b/test-tool/test_write12_0blocks.c @@ -37,7 +37,7 @@ test_write12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==0"); - ret = write12(iscsic, tgt_lun, 0, 0, block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_write12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks one block past end-of-LUN"); - ret = write12(iscsic, tgt_lun, num_blocks + 1, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==2^31"); - ret = write12(iscsic, tgt_lun, 0x80000000, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==-1"); - ret = write12(iscsic, tgt_lun, -1, 0, block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_beyond_eol.c b/test-tool/test_write12_beyond_eol.c index 1da9c08..ceb8c8d 100644 --- a/test-tool/test_write12_beyond_eol.c +++ b/test-tool/test_write12_beyond_eol.c @@ -44,7 +44,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, num_blocks + 1 - i, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, 0x80000000, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, -1, i * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, num_blocks - 1, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_flags.c b/test-tool/test_write12_flags.c index d68947a..c610707 100644 --- a/test-tool/test_write12_flags.c +++ b/test-tool/test_write12_flags.c @@ -38,7 +38,7 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 flags"); logging(LOG_VERBOSE, "Test WRITE12 with DPO==1"); - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==0"); - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==1"); - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==0 FUA_NV==1"); - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with DPO==1 FUA==1 FUA_NV==1"); - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_residuals.c b/test-tool/test_write12_residuals.c index c56f406..0551bc6 100644 --- a/test-tool/test_write12_residuals.c +++ b/test-tool/test_write12_residuals.c @@ -58,11 +58,11 @@ test_write12_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -76,7 +76,7 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -99,7 +99,7 @@ test_write12_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -115,13 +115,13 @@ test_write12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -157,7 +157,7 @@ test_write12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); @@ -168,7 +168,7 @@ test_write12_residuals(void) SCSI_SENSE_ASCQ_INVALID_FIELD_IN_INFORMATION_UNIT)) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); CU_ASSERT(0); } @@ -207,13 +207,13 @@ test_write12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -241,7 +241,7 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(iscsic, tgt_lun, 0, 2 * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -261,13 +261,13 @@ test_write12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -289,7 +289,7 @@ test_write12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(iscsic, tgt_lun, 0, 2* block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -317,7 +317,7 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(iscsic, tgt_lun, 0, 2 * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -337,13 +337,13 @@ test_write12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -365,7 +365,7 @@ test_write12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(iscsic, tgt_lun, 0, 2* block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_simple.c b/test-tool/test_write12_simple.c index 266c134..6e4b5ec 100644 --- a/test-tool/test_write12_simple.c +++ b/test-tool/test_write12_simple.c @@ -41,7 +41,7 @@ test_write12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, 0, i * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_write12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(iscsic, tgt_lun, num_blocks - i, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_wrprotect.c b/test-tool/test_write12_wrprotect.c index 7422dad..dc573ba 100644 --- a/test-tool/test_write12_wrprotect.c +++ b/test-tool/test_write12_wrprotect.c @@ -45,7 +45,7 @@ test_write12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write12(iscsic, tgt_lun, 0, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_write16_0blocks.c b/test-tool/test_write16_0blocks.c index 2b60a6a..dd8b9c5 100644 --- a/test-tool/test_write16_0blocks.c +++ b/test-tool/test_write16_0blocks.c @@ -33,7 +33,7 @@ test_write16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0"); - ret = write16(iscsic, tgt_lun, 0, 0, block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_write16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN"); - ret = write16(iscsic, tgt_lun, num_blocks + 1, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==2^63"); - ret = write16(iscsic, tgt_lun, 0x8000000000000000ULL, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==-1"); - ret = write16(iscsic, tgt_lun, -1, 0, block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_beyond_eol.c b/test-tool/test_write16_beyond_eol.c index 6caa71e..78ba03c 100644 --- a/test-tool/test_write16_beyond_eol.c +++ b/test-tool/test_write16_beyond_eol.c @@ -42,7 +42,7 @@ test_write16_beyond_eol(void) break; } - ret = write16(iscsic, tgt_lun, num_blocks + 1 - i, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, -1, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, num_blocks - 1, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_flags.c b/test-tool/test_write16_flags.c index b7c09c6..16f2bfe 100644 --- a/test-tool/test_write16_flags.c +++ b/test-tool/test_write16_flags.c @@ -39,7 +39,7 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 flags"); logging(LOG_VERBOSE, "Test WRITE16 with DPO==1"); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -51,28 +51,28 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==0"); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==1"); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==0 FUA_NV==1"); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with DPO==1 FUA==1 FUA_NV==1"); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index cde543e..ae6bfbc 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -58,11 +58,11 @@ test_write16_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -76,7 +76,7 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -99,7 +99,7 @@ test_write16_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -115,13 +115,13 @@ test_write16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -157,13 +157,13 @@ test_write16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -202,13 +202,13 @@ test_write16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -236,7 +236,7 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(iscsic, tgt_lun, 0, 2 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -256,13 +256,13 @@ test_write16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -284,7 +284,7 @@ test_write16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(iscsic, tgt_lun, 0, 2* block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -312,7 +312,7 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(iscsic, tgt_lun, 0, 2 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -332,13 +332,13 @@ test_write16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -360,7 +360,7 @@ test_write16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(iscsic, tgt_lun, 0, 2* block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_simple.c b/test-tool/test_write16_simple.c index 9504ab4..3e1de5a 100644 --- a/test-tool/test_write16_simple.c +++ b/test-tool/test_write16_simple.c @@ -43,7 +43,7 @@ test_write16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, 0, i * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,7 +59,7 @@ test_write16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(iscsic, tgt_lun, num_blocks - i, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_wrprotect.c b/test-tool/test_write16_wrprotect.c index 27c745d..778ff10 100644 --- a/test-tool/test_write16_wrprotect.c +++ b/test-tool/test_write16_wrprotect.c @@ -44,7 +44,7 @@ test_write16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writesame10_0blocks.c b/test-tool/test_writesame10_0blocks.c index a64815a..6151faf 100644 --- a/test-tool/test_writesame10_0blocks.c +++ b/test-tool/test_writesame10_0blocks.c @@ -40,7 +40,7 @@ test_writesame10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,21 +59,21 @@ test_writesame10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks one block past end-of-LUN"); - ret = writesame10(iscsic, tgt_lun, num_blocks + 1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==2^31"); - ret = writesame10(iscsic, tgt_lun, 0x80000000, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==-1"); - ret = writesame10(iscsic, tgt_lun, -1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, -1, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_beyond_eol.c b/test-tool/test_writesame10_beyond_eol.c index ae415a8..ce53a6c 100644 --- a/test-tool/test_writesame10_beyond_eol.c +++ b/test-tool/test_writesame10_beyond_eol.c @@ -43,7 +43,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, num_blocks - i + 1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i + 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -56,7 +56,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, 0x80000000, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -65,7 +65,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, -1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, -1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -74,7 +74,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, num_blocks - 1, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_simple.c b/test-tool/test_writesame10_simple.c index 460ac34..36b197a 100644 --- a/test-tool/test_writesame10_simple.c +++ b/test-tool/test_writesame10_simple.c @@ -40,7 +40,7 @@ test_writesame10_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -52,7 +52,7 @@ test_writesame10_simple(void) logging(LOG_VERBOSE, "Test WRITESAME10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = writesame10(iscsic, tgt_lun, num_blocks - i, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index ebb9369..d33a66f 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -44,14 +44,14 @@ test_writesame10_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -62,7 +62,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -83,14 +83,14 @@ test_writesame10_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(iscsic, tgt_lun, num_blocks - i, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(iscsic, tgt_lun, num_blocks - i, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,7 +101,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -118,7 +118,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Verify that WRITESAME10 ANCHOR==1 + UNMAP==0 is " "invalid"); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -128,13 +128,13 @@ test_writesame10_unmap(void) if (inq_lbp->anc_sup) { logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0 no " "ANC_SUP so expecting to fail"); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); } @@ -159,14 +159,14 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(iscsic, tgt_lun, 0, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -177,7 +177,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, NULL, tgt_lun, 0, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -196,7 +196,7 @@ test_writesame10_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap_unaligned.c b/test-tool/test_writesame10_unmap_unaligned.c index 9936751..9147f27 100644 --- a/test-tool/test_writesame10_unmap_unaligned.c +++ b/test-tool/test_writesame10_unmap_unaligned.c @@ -41,7 +41,7 @@ test_writesame10_unmap_unaligned(void) logging(LOG_VERBOSE, "Test that unaligned WRITESAME10 Unmap succeeds. LBPPB==%d", lbppb); for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10 at LBA:%d", lbppb - i, i); - ret = writesame10(iscsic, tgt_lun, i, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, i, block_size, lbppb - i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index 2a4a805..05dffa3 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -47,13 +47,13 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); - ret = write10(iscsic, tgt_lun, num_blocks - i, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); - ret = writesame10(iscsic, tgt_lun, num_blocks - i, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,7 +64,7 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(iscsic, NULL, tgt_lun, num_blocks - i, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame10_unmap_vpd.c b/test-tool/test_writesame10_unmap_vpd.c index 01eb714..aece9d6 100644 --- a/test-tool/test_writesame10_unmap_vpd.c +++ b/test-tool/test_writesame10_unmap_vpd.c @@ -42,7 +42,7 @@ test_writesame10_unmap_vpd(void) logging(LOG_VERBOSE, "Check if WRITESAME10 can be used for UNMAP."); logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME10"); memset(buf, 0, block_size); - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret != 0) { diff --git a/test-tool/test_writesame10_wrprotect.c b/test-tool/test_writesame10_wrprotect.c index 6f0f5d8..c6f1a91 100644 --- a/test-tool/test_writesame10_wrprotect.c +++ b/test-tool/test_writesame10_wrprotect.c @@ -45,7 +45,7 @@ test_writesame10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame10(iscsic, tgt_lun, 0, + ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, i, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_writesame16_0blocks.c b/test-tool/test_writesame16_0blocks.c index 16e46ab..b547c9e 100644 --- a/test-tool/test_writesame16_0blocks.c +++ b/test-tool/test_writesame16_0blocks.c @@ -34,7 +34,7 @@ test_writesame16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,21 +54,21 @@ test_writesame16_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN"); - ret = writesame16(iscsic, tgt_lun, num_blocks + 1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63"); - ret = writesame16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1"); - ret = writesame16(iscsic, tgt_lun, -1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, -1, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_beyond_eol.c b/test-tool/test_writesame16_beyond_eol.c index bfe445e..12ea43a 100644 --- a/test-tool/test_writesame16_beyond_eol.c +++ b/test-tool/test_writesame16_beyond_eol.c @@ -38,7 +38,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, num_blocks - i + 1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i + 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -52,7 +52,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -61,7 +61,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, -1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, -1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +70,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, num_blocks - 1, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_simple.c b/test-tool/test_writesame16_simple.c index 3eba474..3ec0bd1 100644 --- a/test-tool/test_writesame16_simple.c +++ b/test-tool/test_writesame16_simple.c @@ -40,7 +40,7 @@ test_writesame16_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -53,7 +53,7 @@ test_writesame16_simple(void) logging(LOG_VERBOSE, "Test WRITESAME16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = writesame16(iscsic, tgt_lun, num_blocks - i, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_unmap.c b/test-tool/test_writesame16_unmap.c index 1668402..02e2ddb 100644 --- a/test-tool/test_writesame16_unmap.c +++ b/test-tool/test_writesame16_unmap.c @@ -46,12 +46,12 @@ test_writesame16_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -66,7 +66,7 @@ test_writesame16_unmap(void) "blocks back and verify they are all zero"); logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -84,14 +84,14 @@ test_writesame16_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(iscsic, tgt_lun, num_blocks - i, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, num_blocks - i, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,7 +101,7 @@ test_writesame16_unmap(void) "blocks back and verify they are all zero"); logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -115,7 +115,7 @@ test_writesame16_unmap(void) } logging(LOG_VERBOSE, "Verify that WRITESAME16 ANCHOR==1 + UNMAP==0 is invalid"); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -125,12 +125,12 @@ test_writesame16_unmap(void) if (inq_lbp->anc_sup) { logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0 no ANC_SUP so expecting to fail"); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); } @@ -156,14 +156,14 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -174,7 +174,7 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -191,7 +191,7 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -208,14 +208,14 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(iscsic, tgt_lun, 0, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -226,7 +226,7 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(iscsic, tgt_lun, 0, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -243,7 +243,7 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_unmap_unaligned.c b/test-tool/test_writesame16_unmap_unaligned.c index 8696fe3..7e53a47 100644 --- a/test-tool/test_writesame16_unmap_unaligned.c +++ b/test-tool/test_writesame16_unmap_unaligned.c @@ -41,7 +41,7 @@ test_writesame16_unmap_unaligned(void) for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16 at LBA:%d", lbppb - i, i); - ret = writesame16(iscsic, tgt_lun, i, 0, lbppb - i, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, i, 0, lbppb - i, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { diff --git a/test-tool/test_writesame16_unmap_until_end.c b/test-tool/test_writesame16_unmap_until_end.c index 3df8365..c9db6e9 100644 --- a/test-tool/test_writesame16_unmap_until_end.c +++ b/test-tool/test_writesame16_unmap_until_end.c @@ -47,11 +47,11 @@ test_writesame16_unmap_until_end(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); - ret = write16(iscsic, tgt_lun, num_blocks - i, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(iscsic, tgt_lun, num_blocks - i, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, 0, i, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,7 +67,7 @@ test_writesame16_unmap_until_end(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(iscsic, tgt_lun, num_blocks - i, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame16_unmap_vpd.c b/test-tool/test_writesame16_unmap_vpd.c index 90a533d..c6f1108 100644 --- a/test-tool/test_writesame16_unmap_vpd.c +++ b/test-tool/test_writesame16_unmap_vpd.c @@ -43,7 +43,7 @@ test_writesame16_unmap_vpd(void) logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME16"); memset(buf, 0, block_size); - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret != 0) { diff --git a/test-tool/test_writesame16_wrprotect.c b/test-tool/test_writesame16_wrprotect.c index 55c3b7e..dd38a4d 100644 --- a/test-tool/test_writesame16_wrprotect.c +++ b/test-tool/test_writesame16_wrprotect.c @@ -45,7 +45,7 @@ test_writesame16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame16(iscsic, tgt_lun, 0, + ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, 0, 0, i, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_writeverify10_0blocks.c b/test-tool/test_writeverify10_0blocks.c index 93e98b2..7ee7d46 100644 --- a/test-tool/test_writeverify10_0blocks.c +++ b/test-tool/test_writeverify10_0blocks.c @@ -37,7 +37,7 @@ test_writeverify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==0"); - ret = writeverify10(iscsic, tgt_lun, 0, 0, block_size, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_writeverify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks one block past end-of-LUN"); - ret = writeverify10(iscsic, tgt_lun, num_blocks + 1, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==2^31"); - ret = writeverify10(iscsic, tgt_lun, 0x80000000, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==-1"); - ret = writeverify10(iscsic, tgt_lun, -1, 0, block_size, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_beyond_eol.c b/test-tool/test_writeverify10_beyond_eol.c index 0106796..705124d 100644 --- a/test-tool/test_writeverify10_beyond_eol.c +++ b/test-tool/test_writeverify10_beyond_eol.c @@ -44,7 +44,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, num_blocks + 1 - i, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, 0x80000000, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, -1, i * block_size, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, num_blocks - 1, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_flags.c b/test-tool/test_writeverify10_flags.c index 6995887..2cf59be 100644 --- a/test-tool/test_writeverify10_flags.c +++ b/test-tool/test_writeverify10_flags.c @@ -38,7 +38,7 @@ test_writeverify10_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY10 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY10 with DPO==1"); - ret = writeverify10(iscsic, tgt_lun, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify10_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 with BYTCHK==1"); - ret = writeverify10(iscsic, tgt_lun, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index 0462105..79b6d73 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -44,7 +44,7 @@ test_writeverify10_residuals(void) CHECK_FOR_SBC; /* check if writeverify10 is supported */ - ret = writeverify10(iscsic, tgt_lun, 0, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,11 +67,11 @@ test_writeverify10_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -85,7 +85,7 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -108,7 +108,7 @@ test_writeverify10_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -124,13 +124,13 @@ test_writeverify10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -166,13 +166,13 @@ test_writeverify10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -211,13 +211,13 @@ test_writeverify10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -246,7 +246,7 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(iscsic, tgt_lun, 0, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -266,13 +266,13 @@ test_writeverify10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -294,7 +294,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -322,7 +322,7 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(iscsic, tgt_lun, 0, 2 * block_size, + ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -342,13 +342,13 @@ test_writeverify10_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -370,7 +370,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(iscsic, NULL, tgt_lun, 0, 2* block_size, + ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_simple.c b/test-tool/test_writeverify10_simple.c index ccf3cba..d59446d 100644 --- a/test-tool/test_writeverify10_simple.c +++ b/test-tool/test_writeverify10_simple.c @@ -41,7 +41,7 @@ test_writeverify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, 0, i * block_size, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_writeverify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(iscsic, tgt_lun, num_blocks - i, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_wrprotect.c b/test-tool/test_writeverify10_wrprotect.c index 8e3c738..efb1cc7 100644 --- a/test-tool/test_writeverify10_wrprotect.c +++ b/test-tool/test_writeverify10_wrprotect.c @@ -44,7 +44,7 @@ test_writeverify10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify10(iscsic, tgt_lun, 0, + ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writeverify12_0blocks.c b/test-tool/test_writeverify12_0blocks.c index 0564408..893f641 100644 --- a/test-tool/test_writeverify12_0blocks.c +++ b/test-tool/test_writeverify12_0blocks.c @@ -37,7 +37,7 @@ test_writeverify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==0"); - ret = writeverify12(iscsic, tgt_lun, 0, 0, block_size, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_writeverify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks one block past end-of-LUN"); - ret = writeverify12(iscsic, tgt_lun, num_blocks + 1, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==2^31"); - ret = writeverify12(iscsic, tgt_lun, 0x80000000, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==-1"); - ret = writeverify12(iscsic, tgt_lun, -1, 0, block_size, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_beyond_eol.c b/test-tool/test_writeverify12_beyond_eol.c index 69d1e46..be503fd 100644 --- a/test-tool/test_writeverify12_beyond_eol.c +++ b/test-tool/test_writeverify12_beyond_eol.c @@ -44,7 +44,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, num_blocks + 1 - i, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, 0x80000000, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, -1, i * block_size, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, num_blocks - 1, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_flags.c b/test-tool/test_writeverify12_flags.c index cf8b08a..13a2abc 100644 --- a/test-tool/test_writeverify12_flags.c +++ b/test-tool/test_writeverify12_flags.c @@ -38,7 +38,7 @@ test_writeverify12_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY12 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY12 with DPO==1"); - ret = writeverify12(iscsic, tgt_lun, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify12_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 with BYTCHK==1"); - ret = writeverify12(iscsic, tgt_lun, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index f8f174b..4285dea 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -44,7 +44,7 @@ test_writeverify12_residuals(void) CHECK_FOR_SBC; /* check if writeverify12 is supported */ - ret = writeverify12(iscsic, tgt_lun, 0, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,11 +67,11 @@ test_writeverify12_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -85,7 +85,7 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -108,7 +108,7 @@ test_writeverify12_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -124,13 +124,13 @@ test_writeverify12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -166,13 +166,13 @@ test_writeverify12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -211,13 +211,13 @@ test_writeverify12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -246,7 +246,7 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(iscsic, tgt_lun, 0, 2 * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -266,13 +266,13 @@ test_writeverify12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -294,7 +294,7 @@ test_writeverify12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(iscsic, tgt_lun, 0, 2* block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -322,7 +322,7 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(iscsic, tgt_lun, 0, 2 * block_size, + ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -342,13 +342,13 @@ test_writeverify12_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -370,7 +370,7 @@ test_writeverify12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(iscsic, tgt_lun, 0, 2* block_size, + ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_simple.c b/test-tool/test_writeverify12_simple.c index 38f853b..57e14e1 100644 --- a/test-tool/test_writeverify12_simple.c +++ b/test-tool/test_writeverify12_simple.c @@ -41,7 +41,7 @@ test_writeverify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, 0, i * block_size, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_writeverify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(iscsic, tgt_lun, num_blocks - i, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_wrprotect.c b/test-tool/test_writeverify12_wrprotect.c index 56717ca..0e00407 100644 --- a/test-tool/test_writeverify12_wrprotect.c +++ b/test-tool/test_writeverify12_wrprotect.c @@ -44,7 +44,7 @@ test_writeverify12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify12(iscsic, tgt_lun, 0, + ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writeverify16_0blocks.c b/test-tool/test_writeverify16_0blocks.c index 621f110..c00a623 100644 --- a/test-tool/test_writeverify16_0blocks.c +++ b/test-tool/test_writeverify16_0blocks.c @@ -33,7 +33,7 @@ test_writeverify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==0"); - ret = writeverify16(iscsic, tgt_lun, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_writeverify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks one block past end-of-LUN"); - ret = writeverify16(iscsic, tgt_lun, num_blocks + 1, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==2^63"); - ret = writeverify16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==-1"); - ret = writeverify16(iscsic, tgt_lun, -1, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_beyond_eol.c b/test-tool/test_writeverify16_beyond_eol.c index e6221c4..4ee704f 100644 --- a/test-tool/test_writeverify16_beyond_eol.c +++ b/test-tool/test_writeverify16_beyond_eol.c @@ -41,7 +41,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(iscsic, tgt_lun, num_blocks + 1 - i, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(iscsic, tgt_lun, 0x8000000000000000ULL, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -72,7 +72,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(iscsic, tgt_lun, -1, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(iscsic, tgt_lun, num_blocks - 1, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_flags.c b/test-tool/test_writeverify16_flags.c index 46547c9..62d8d13 100644 --- a/test-tool/test_writeverify16_flags.c +++ b/test-tool/test_writeverify16_flags.c @@ -38,7 +38,7 @@ test_writeverify16_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY16 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY16 with DPO==1"); - ret = writeverify16(iscsic, tgt_lun, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify16_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 with BYTCHK==1"); - ret = writeverify16(iscsic, tgt_lun, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index b6e62ef..a648551 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -44,7 +44,7 @@ test_writeverify16_residuals(void) CHECK_FOR_SBC; /* check if writeverify16 is supported */ - ret = writeverify16(iscsic, tgt_lun, 0, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -68,11 +68,11 @@ test_writeverify16_residuals(void) * we don't want autoreconnect since some targets will drop the session * on this condition. */ - iscsi_set_noautoreconnect(iscsic, 1); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==0"); - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, NULL); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, NULL); CU_ASSERT_PTR_NOT_NULL(task_ret); CU_ASSERT_NOT_EQUAL(task->status, SCSI_STATUS_CANCELLED); /* XXX redundant? */ @@ -86,7 +86,7 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -109,7 +109,7 @@ test_writeverify16_residuals(void) task = NULL; /* in case the previous test failed the session */ - iscsi_set_noautoreconnect(iscsic, 0); + iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Try writing one block but with iSCSI expected transfer length==10000"); @@ -125,13 +125,13 @@ test_writeverify16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -167,13 +167,13 @@ test_writeverify16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -212,13 +212,13 @@ test_writeverify16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -247,7 +247,7 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(iscsic, tgt_lun, 0, 2 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -267,13 +267,13 @@ test_writeverify16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -295,7 +295,7 @@ test_writeverify16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(iscsic, tgt_lun, 0, 2* block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -323,7 +323,7 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(iscsic, tgt_lun, 0, 2 * block_size, + ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -343,13 +343,13 @@ test_writeverify16_residuals(void) data.size = task->expxferlen; data.data = &buf[0]; - task_ret = iscsi_scsi_command_sync(iscsic, tgt_lun, task, &data); + task_ret = iscsi_scsi_command_sync(sd->iscsi_ctx, sd->iscsi_lun, task, &data); CU_ASSERT_PTR_NOT_NULL(task_ret); logging(LOG_VERBOSE, "Verify that the target returned SUCCESS"); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Target returned error %s", - iscsi_get_error(iscsic)); + iscsi_get_error(sd->iscsi_ctx)); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); @@ -371,7 +371,7 @@ test_writeverify16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(iscsic, tgt_lun, 0, 2* block_size, + ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_simple.c b/test-tool/test_writeverify16_simple.c index cd8fa1f..ff4973d 100644 --- a/test-tool/test_writeverify16_simple.c +++ b/test-tool/test_writeverify16_simple.c @@ -43,7 +43,7 @@ test_writeverify16_simple(void) break; } - ret = writeverify16(iscsic, tgt_lun, 0, i * block_size, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -60,7 +60,7 @@ test_writeverify16_simple(void) break; } - ret = writeverify16(iscsic, tgt_lun, num_blocks - i, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_wrprotect.c b/test-tool/test_writeverify16_wrprotect.c index e8a708c..6ec225d 100644 --- a/test-tool/test_writeverify16_wrprotect.c +++ b/test-tool/test_writeverify16_wrprotect.c @@ -46,7 +46,7 @@ test_writeverify16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify16(iscsic, tgt_lun, 0, + ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); From 072291c852622d123f6774b1073ca20387c179f9 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 18:19:04 -0700 Subject: [PATCH 23/53] TESTS: change the function signatures for the helpers Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 452 +++++++++--------- test-tool/iscsi-support.h | 110 ++--- test-tool/test_compareandwrite_miscompare.c | 16 +- test-tool/test_compareandwrite_simple.c | 16 +- test-tool/test_get_lba_status_beyond_eol.c | 6 +- test-tool/test_get_lba_status_simple.c | 4 +- test-tool/test_get_lba_status_unmap_single.c | 16 +- test-tool/test_inquiry_alloc_length.c | 6 +- test-tool/test_inquiry_block_limits.c | 4 +- test-tool/test_inquiry_evpd.c | 2 +- test-tool/test_inquiry_mandatory_vpd_sbc.c | 4 +- test-tool/test_inquiry_standard.c | 2 +- test-tool/test_inquiry_supported_vpd.c | 4 +- test-tool/test_iscsi_cmdsn_toohigh.c | 4 +- test-tool/test_iscsi_cmdsn_toolow.c | 4 +- test-tool/test_iscsi_datasn_invalid.c | 8 +- test-tool/test_mandatory_sbc.c | 12 +- test-tool/test_nomedia_sbc.c | 52 +- test-tool/test_orwrite_0blocks.c | 8 +- test-tool/test_orwrite_beyond_eol.c | 8 +- test-tool/test_orwrite_flags.c | 10 +- test-tool/test_orwrite_simple.c | 4 +- test-tool/test_orwrite_verify.c | 20 +- test-tool/test_orwrite_wrprotect.c | 2 +- test-tool/test_prefetch10_0blocks.c | 8 +- test-tool/test_prefetch10_beyond_eol.c | 8 +- test-tool/test_prefetch10_flags.c | 6 +- test-tool/test_prefetch10_simple.c | 4 +- test-tool/test_prefetch16_0blocks.c | 8 +- test-tool/test_prefetch16_beyond_eol.c | 8 +- test-tool/test_prefetch16_flags.c | 6 +- test-tool/test_prefetch16_simple.c | 4 +- test-tool/test_preventallow_2_itnexuses.c | 21 +- test-tool/test_preventallow_cold_reset.c | 18 +- test-tool/test_preventallow_eject.c | 20 +- test-tool/test_preventallow_itnexus_loss.c | 16 +- test-tool/test_preventallow_logout.c | 16 +- test-tool/test_preventallow_lun_reset.c | 18 +- test-tool/test_preventallow_simple.c | 4 +- test-tool/test_preventallow_warm_reset.c | 18 +- test-tool/test_prin_read_keys_simple.c | 2 +- test-tool/test_prin_serviceaction_range.c | 6 +- test-tool/test_prout_register_simple.c | 10 +- test-tool/test_prout_reserve_access.c | 77 +-- test-tool/test_prout_reserve_ownership.c | 63 ++- test-tool/test_prout_reserve_simple.c | 10 +- test-tool/test_read10_0blocks.c | 8 +- test-tool/test_read10_beyond_eol.c | 8 +- test-tool/test_read10_flags.c | 10 +- test-tool/test_read10_rdprotect.c | 2 +- test-tool/test_read10_simple.c | 4 +- test-tool/test_read12_0blocks.c | 8 +- test-tool/test_read12_beyond_eol.c | 8 +- test-tool/test_read12_flags.c | 10 +- test-tool/test_read12_rdprotect.c | 2 +- test-tool/test_read12_simple.c | 4 +- test-tool/test_read16_0blocks.c | 8 +- test-tool/test_read16_beyond_eol.c | 12 +- test-tool/test_read16_flags.c | 10 +- test-tool/test_read16_rdprotect.c | 2 +- test-tool/test_read16_simple.c | 4 +- test-tool/test_read6_beyond_eol.c | 6 +- test-tool/test_read6_simple.c | 4 +- test-tool/test_readcapacity10_simple.c | 2 +- test-tool/test_readcapacity16_alloclen.c | 2 +- test-tool/test_readcapacity16_simple.c | 2 +- test-tool/test_readonly_sbc.c | 26 +- ...est_report_supported_opcodes_one_command.c | 13 +- .../test_report_supported_opcodes_rctd.c | 4 +- .../test_report_supported_opcodes_servactv.c | 2 +- .../test_report_supported_opcodes_simple.c | 2 +- test-tool/test_reserve6_2initiators.c | 30 +- test-tool/test_reserve6_itnexus_loss.c | 18 +- test-tool/test_reserve6_logout.c | 19 +- test-tool/test_reserve6_lun_reset.c | 17 +- test-tool/test_reserve6_simple.c | 4 +- test-tool/test_reserve6_target_cold_reset.c | 17 +- test-tool/test_reserve6_target_warm_reset.c | 17 +- test-tool/test_sanitize_block_erase.c | 12 +- .../test_sanitize_block_erase_reserved.c | 4 +- test-tool/test_sanitize_crypto_erase.c | 10 +- .../test_sanitize_crypto_erase_reserved.c | 4 +- test-tool/test_sanitize_exit_failure_mode.c | 2 +- .../test_sanitize_invalid_serviceaction.c | 2 +- test-tool/test_sanitize_overwrite.c | 20 +- test-tool/test_sanitize_overwrite_reserved.c | 4 +- test-tool/test_sanitize_readonly.c | 22 +- test-tool/test_sanitize_reservations.c | 17 +- test-tool/test_sanitize_reset.c | 12 +- test-tool/test_startstopunit_noloej.c | 34 +- test-tool/test_startstopunit_pwrcnd.c | 6 +- test-tool/test_startstopunit_simple.c | 16 +- test-tool/test_testunitready_simple.c | 2 +- test-tool/test_unmap_0blocks.c | 10 +- test-tool/test_unmap_simple.c | 10 +- test-tool/test_unmap_vpd.c | 2 +- test-tool/test_verify10_0blocks.c | 8 +- test-tool/test_verify10_beyond_eol.c | 8 +- test-tool/test_verify10_flags.c | 6 +- test-tool/test_verify10_mismatch.c | 8 +- test-tool/test_verify10_mismatch_no_cmp.c | 8 +- test-tool/test_verify10_simple.c | 8 +- test-tool/test_verify10_vrprotect.c | 4 +- test-tool/test_verify12_0blocks.c | 8 +- test-tool/test_verify12_beyond_eol.c | 8 +- test-tool/test_verify12_flags.c | 6 +- test-tool/test_verify12_mismatch.c | 8 +- test-tool/test_verify12_mismatch_no_cmp.c | 8 +- test-tool/test_verify12_simple.c | 8 +- test-tool/test_verify12_vrprotect.c | 4 +- test-tool/test_verify16_0blocks.c | 8 +- test-tool/test_verify16_beyond_eol.c | 8 +- test-tool/test_verify16_flags.c | 6 +- test-tool/test_verify16_mismatch.c | 8 +- test-tool/test_verify16_mismatch_no_cmp.c | 8 +- test-tool/test_verify16_simple.c | 8 +- test-tool/test_verify16_vrprotect.c | 4 +- test-tool/test_write10_0blocks.c | 8 +- test-tool/test_write10_beyond_eol.c | 8 +- test-tool/test_write10_flags.c | 10 +- test-tool/test_write10_residuals.c | 8 +- test-tool/test_write10_simple.c | 4 +- test-tool/test_write10_wrprotect.c | 2 +- test-tool/test_write12_0blocks.c | 8 +- test-tool/test_write12_beyond_eol.c | 8 +- test-tool/test_write12_flags.c | 10 +- test-tool/test_write12_residuals.c | 8 +- test-tool/test_write12_simple.c | 4 +- test-tool/test_write12_wrprotect.c | 2 +- test-tool/test_write16_0blocks.c | 8 +- test-tool/test_write16_beyond_eol.c | 8 +- test-tool/test_write16_flags.c | 10 +- test-tool/test_write16_residuals.c | 8 +- test-tool/test_write16_simple.c | 4 +- test-tool/test_write16_wrprotect.c | 2 +- test-tool/test_writesame10_0blocks.c | 8 +- test-tool/test_writesame10_beyond_eol.c | 8 +- test-tool/test_writesame10_simple.c | 4 +- test-tool/test_writesame10_unmap.c | 26 +- test-tool/test_writesame10_unmap_unaligned.c | 2 +- test-tool/test_writesame10_unmap_until_end.c | 6 +- test-tool/test_writesame10_unmap_vpd.c | 2 +- test-tool/test_writesame10_wrprotect.c | 2 +- test-tool/test_writesame16_0blocks.c | 8 +- test-tool/test_writesame16_beyond_eol.c | 8 +- test-tool/test_writesame16_simple.c | 4 +- test-tool/test_writesame16_unmap.c | 34 +- test-tool/test_writesame16_unmap_unaligned.c | 2 +- test-tool/test_writesame16_unmap_until_end.c | 6 +- test-tool/test_writesame16_unmap_vpd.c | 2 +- test-tool/test_writesame16_wrprotect.c | 2 +- test-tool/test_writeverify10_0blocks.c | 8 +- test-tool/test_writeverify10_beyond_eol.c | 8 +- test-tool/test_writeverify10_flags.c | 4 +- test-tool/test_writeverify10_residuals.c | 10 +- test-tool/test_writeverify10_simple.c | 4 +- test-tool/test_writeverify10_wrprotect.c | 2 +- test-tool/test_writeverify12_0blocks.c | 8 +- test-tool/test_writeverify12_beyond_eol.c | 8 +- test-tool/test_writeverify12_flags.c | 4 +- test-tool/test_writeverify12_residuals.c | 10 +- test-tool/test_writeverify12_simple.c | 4 +- test-tool/test_writeverify12_wrprotect.c | 2 +- test-tool/test_writeverify16_0blocks.c | 8 +- test-tool/test_writeverify16_beyond_eol.c | 8 +- test-tool/test_writeverify16_flags.c | 4 +- test-tool/test_writeverify16_residuals.c | 10 +- test-tool/test_writeverify16_simple.c | 4 +- test-tool/test_writeverify16_wrprotect.c | 2 +- 169 files changed, 1071 insertions(+), 1030 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 2cf4e05..1775647 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -104,7 +104,7 @@ static const char *scsi_status_str(int status) return "UNKNOWN"; } -static int check_result(const char *opcode, struct iscsi_context *iscsi, +static int check_result(const char *opcode, struct scsi_device *sdev, struct scsi_task *task, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -113,7 +113,7 @@ static int check_result(const char *opcode, struct iscsi_context *iscsi, if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send %s command: " - "%s", opcode, iscsi_get_error(iscsi)); + "%s", opcode, iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -125,7 +125,7 @@ static int check_result(const char *opcode, struct iscsi_context *iscsi, } if (status == SCSI_STATUS_GOOD && task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] %s command failed with " - "sense. %s", opcode, iscsi_get_error(iscsi)); + "sense. %s", opcode, iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (status != SCSI_STATUS_GOOD && task->status == SCSI_STATUS_GOOD) { @@ -158,7 +158,7 @@ static int check_result(const char *opcode, struct iscsi_context *iscsi, opcode, scsi_sense_key_str(key), key, scsi_sense_ascq_str(ascq[0]), ascq[0], - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } logging(LOG_VERBOSE, "[OK] %s returned %s %s(0x%02x) %s(0x%04x)", @@ -292,7 +292,7 @@ iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) } int -orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, +orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, @@ -319,9 +319,9 @@ orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("ORWRITE", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("ORWRITE", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -329,7 +329,7 @@ orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -prin_task(struct iscsi_context *iscsi, int lun, int service_action, +prin_task(struct scsi_device *sdev, int service_action, int success_expected) { const int buf_sz = 16384; @@ -340,12 +340,12 @@ prin_task(struct iscsi_context *iscsi, int lun, int service_action, logging(LOG_VERBOSE, "Send PRIN/SA=0x%02x, expect %s", service_action, success_expected ? "success" : "failure"); - task = iscsi_persistent_reserve_in_sync(iscsi, lun, + task = iscsi_persistent_reserve_in_sync(sdev->iscsi_ctx, sdev->iscsi_lun, service_action, buf_sz); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PRIN command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -360,7 +360,7 @@ prin_task(struct iscsi_context *iscsi, int lun, int service_action, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PRIN/SA=0x%x failed: %s", - service_action, iscsi_get_error(iscsi)); + service_action, iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } } else { @@ -379,7 +379,7 @@ prin_task(struct iscsi_context *iscsi, int lun, int service_action, } int -prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, +prin_read_keys(struct scsi_device *sdev, struct scsi_task **tp, struct scsi_persistent_reserve_in_read_keys **rkp) { const int buf_sz = 16384; @@ -388,12 +388,12 @@ prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, logging(LOG_VERBOSE, "Send PRIN/READ_KEYS"); - *tp = iscsi_persistent_reserve_in_sync(iscsi, lun, + *tp = iscsi_persistent_reserve_in_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_READ_KEYS, buf_sz); if (*tp == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PRIN command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if ((*tp)->status == SCSI_STATUS_CHECK_CONDITION @@ -405,7 +405,7 @@ prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, if ((*tp)->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PRIN command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } @@ -413,7 +413,7 @@ prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, if (rk == NULL) { logging(LOG_NORMAL, "[FAIL] failed to unmarshall PRIN/READ_KEYS data. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (rkp != NULL) @@ -423,7 +423,7 @@ prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, } int -prout_register_and_ignore(struct iscsi_context *iscsi, int lun, +prout_register_and_ignore(struct scsi_device *sdev, unsigned long long sark) { struct scsi_persistent_reserve_out_basic poc; @@ -433,8 +433,8 @@ prout_register_and_ignore(struct iscsi_context *iscsi, int lun, /* register our reservation key with the target */ logging(LOG_VERBOSE, - "Send PROUT/REGISTER_AND_IGNORE to register init=%s", - iscsi->initiator_name); + "Send PROUT/REGISTER_AND_IGNORE to register init=%s", + sdev->iscsi_ctx->initiator_name); if (!data_loss) { printf("--dataloss flag is not set in. Skipping PROUT\n"); @@ -443,13 +443,13 @@ prout_register_and_ignore(struct iscsi_context *iscsi, int lun, memset(&poc, 0, sizeof (poc)); poc.service_action_reservation_key = sark; - task = iscsi_persistent_reserve_out_sync(iscsi, lun, + task = iscsi_persistent_reserve_out_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_REGISTER_AND_IGNORE_EXISTING_KEY, SCSI_PERSISTENT_RESERVE_SCOPE_LU, 0, &poc); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PROUT command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION && @@ -462,7 +462,7 @@ prout_register_and_ignore(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PROUT command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } @@ -472,7 +472,7 @@ prout_register_and_ignore(struct iscsi_context *iscsi, int lun, } int -prout_register_key(struct iscsi_context *iscsi, int lun, +prout_register_key(struct scsi_device *sdev, unsigned long long sark, unsigned long long rk) { struct scsi_persistent_reserve_out_basic poc; @@ -483,8 +483,8 @@ prout_register_key(struct iscsi_context *iscsi, int lun, /* register/unregister our reservation key with the target */ logging(LOG_VERBOSE, "Send PROUT/REGISTER to %s init=%s", - sark != 0 ? "register" : "unregister", - iscsi->initiator_name); + sark != 0 ? "register" : "unregister", + sdev->iscsi_ctx->initiator_name); if (!data_loss) { printf("--dataloss flag is not set in. Skipping PROUT\n"); @@ -494,13 +494,13 @@ prout_register_key(struct iscsi_context *iscsi, int lun, memset(&poc, 0, sizeof (poc)); poc.service_action_reservation_key = sark; poc.reservation_key = rk; - task = iscsi_persistent_reserve_out_sync(iscsi, lun, + task = iscsi_persistent_reserve_out_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_REGISTER, SCSI_PERSISTENT_RESERVE_SCOPE_LU, 0, &poc); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PROUT command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -513,7 +513,7 @@ prout_register_key(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PROUT command: failed with sense: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } @@ -523,7 +523,7 @@ prout_register_key(struct iscsi_context *iscsi, int lun, } int -prin_verify_key_presence(struct iscsi_context *iscsi, int lun, +prin_verify_key_presence(struct scsi_device *sdev, unsigned long long key, int present) { struct scsi_task *task; @@ -535,16 +535,16 @@ prin_verify_key_presence(struct iscsi_context *iscsi, int lun, logging(LOG_VERBOSE, - "Send PRIN/READ_KEYS to verify key %s init=%s... ", - present ? "present" : "absent", - iscsi->initiator_name); + "Send PRIN/READ_KEYS to verify key %s init=%s... ", + present ? "present" : "absent", + sdev->iscsi_ctx->initiator_name); - task = iscsi_persistent_reserve_in_sync(iscsi, lun, + task = iscsi_persistent_reserve_in_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_READ_KEYS, buf_sz); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PRIN command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -558,7 +558,7 @@ prin_verify_key_presence(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PRIN command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -567,7 +567,7 @@ prin_verify_key_presence(struct iscsi_context *iscsi, int lun, if (rk == NULL) { logging(LOG_NORMAL, "[FAILED] failed to unmarshall PRIN/READ_KEYS data. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -594,7 +594,7 @@ prin_verify_key_presence(struct iscsi_context *iscsi, int lun, } int -prout_reregister_key_fails(struct iscsi_context *iscsi, int lun, +prout_reregister_key_fails(struct scsi_device *sdev, unsigned long long sark) { struct scsi_persistent_reserve_out_basic poc; @@ -603,8 +603,8 @@ prout_reregister_key_fails(struct iscsi_context *iscsi, int lun, logging(LOG_VERBOSE, - "Send PROUT/REGISTER to ensure reregister fails init=%s", - iscsi->initiator_name); + "Send PROUT/REGISTER to ensure reregister fails init=%s", + sdev->iscsi_ctx->initiator_name); if (!data_loss) { printf("--dataloss flag is not set in. Skipping PROUT\n"); @@ -613,13 +613,13 @@ prout_reregister_key_fails(struct iscsi_context *iscsi, int lun, memset(&poc, 0, sizeof (poc)); poc.service_action_reservation_key = sark; - task = iscsi_persistent_reserve_out_sync(iscsi, lun, + task = iscsi_persistent_reserve_out_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_REGISTER, SCSI_PERSISTENT_RESERVE_SCOPE_LU, 0, &poc); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PROUT command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -641,7 +641,7 @@ prout_reregister_key_fails(struct iscsi_context *iscsi, int lun, } int -prout_reserve(struct iscsi_context *iscsi, int lun, +prout_reserve(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type) { struct scsi_persistent_reserve_out_basic poc; @@ -651,9 +651,9 @@ prout_reserve(struct iscsi_context *iscsi, int lun, /* reserve the target using specified reservation type */ logging(LOG_VERBOSE, - "Send PROUT/RESERVE to reserve, type=%d (%s) init=%s", - pr_type, scsi_pr_type_str(pr_type), - iscsi->initiator_name); + "Send PROUT/RESERVE to reserve, type=%d (%s) init=%s", + pr_type, scsi_pr_type_str(pr_type), + sdev->iscsi_ctx->initiator_name); if (!data_loss) { printf("--dataloss flag is not set in. Skipping PROUT\n"); @@ -662,14 +662,14 @@ prout_reserve(struct iscsi_context *iscsi, int lun, memset(&poc, 0, sizeof (poc)); poc.reservation_key = key; - task = iscsi_persistent_reserve_out_sync(iscsi, lun, + task = iscsi_persistent_reserve_out_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_RESERVE, SCSI_PERSISTENT_RESERVE_SCOPE_LU, pr_type, &poc); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PROUT command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -683,7 +683,7 @@ prout_reserve(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PROUT command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } @@ -692,7 +692,7 @@ prout_reserve(struct iscsi_context *iscsi, int lun, } int -prout_release(struct iscsi_context *iscsi, int lun, +prout_release(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type) { struct scsi_persistent_reserve_out_basic poc; @@ -701,8 +701,8 @@ prout_release(struct iscsi_context *iscsi, int lun, logging(LOG_VERBOSE, - "Send PROUT/RELEASE to release reservation, type=%d init=%s", - pr_type, iscsi->initiator_name); + "Send PROUT/RELEASE to release reservation, type=%d init=%s", + pr_type, sdev->iscsi_ctx->initiator_name); if (!data_loss) { printf("--dataloss flag is not set in. Skipping PROUT\n"); @@ -711,14 +711,14 @@ prout_release(struct iscsi_context *iscsi, int lun, memset(&poc, 0, sizeof (poc)); poc.reservation_key = key; - task = iscsi_persistent_reserve_out_sync(iscsi, lun, + task = iscsi_persistent_reserve_out_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_RELEASE, SCSI_PERSISTENT_RESERVE_SCOPE_LU, pr_type, &poc); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PROUT command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -732,7 +732,7 @@ prout_release(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PROUT command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } @@ -741,7 +741,7 @@ prout_release(struct iscsi_context *iscsi, int lun, } int -prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, +prin_verify_reserved_as(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type) { struct scsi_task *task; @@ -751,15 +751,15 @@ prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, logging(LOG_VERBOSE, - "Send PRIN/READ_RESERVATION to verify type=%d init=%s... ", - pr_type, iscsi->initiator_name); + "Send PRIN/READ_RESERVATION to verify type=%d init=%s... ", + pr_type, sdev->iscsi_ctx->initiator_name); - task = iscsi_persistent_reserve_in_sync(iscsi, lun, + task = iscsi_persistent_reserve_in_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_READ_RESERVATION, buf_sz); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PRIN command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -773,7 +773,7 @@ prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PRIN command: failed with sense: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -781,7 +781,7 @@ prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, if (rr == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to unmarshall PRIN/READ_RESERVATION data. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -815,7 +815,7 @@ prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, } int -prin_verify_not_reserved(struct iscsi_context *iscsi, int lun) +prin_verify_not_reserved(struct scsi_device *sdev) { struct scsi_task *task; const int buf_sz = 16384; @@ -824,15 +824,15 @@ prin_verify_not_reserved(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, - "Send PRIN/READ_RESERVATION to verify not reserved init=%s", - iscsi->initiator_name); + "Send PRIN/READ_RESERVATION to verify not reserved init=%s", + sdev->iscsi_ctx->initiator_name); - task = iscsi_persistent_reserve_in_sync(iscsi, lun, + task = iscsi_persistent_reserve_in_sync(sdev->iscsi_ctx, sdev->iscsi_lun, SCSI_PERSISTENT_RESERVE_READ_RESERVATION, buf_sz); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PRIN command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -846,7 +846,7 @@ prin_verify_not_reserved(struct iscsi_context *iscsi, int lun) if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PRIN command: failed with sense: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -854,7 +854,7 @@ prin_verify_not_reserved(struct iscsi_context *iscsi, int lun) if (rr == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to unmarshall PRIN/READ_RESERVATION data: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -872,7 +872,7 @@ prin_verify_not_reserved(struct iscsi_context *iscsi, int lun) } int -verify_read_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) +verify_read_works(struct scsi_device *sdev, unsigned char *buf) { struct scsi_task *task; const uint32_t lba = 1; @@ -886,21 +886,21 @@ verify_read_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) */ logging(LOG_VERBOSE, "Send READ10 to verify READ works init=%s", - iscsi->initiator_name); + sdev->iscsi_ctx->initiator_name); - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blksize, + task = iscsi_read10_sync(sdev->iscsi_ctx, sdev->iscsi_lun, lba, datalen, blksize, 0, 0, 0, 0, 0); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] READ10 command: failed with sense: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto dun; } @@ -912,7 +912,7 @@ verify_read_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) } int -verify_write_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) +verify_write_works(struct scsi_device *sdev, unsigned char *buf) { struct scsi_task *task; const uint32_t lba = 1; @@ -926,20 +926,20 @@ verify_write_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) */ logging(LOG_VERBOSE, "Send WRITE10 to verify WRITE works init=%s", - iscsi->initiator_name); + sdev->iscsi_ctx->initiator_name); - task = iscsi_write10_sync(iscsi, lun, lba, buf, datalen, blksize, + task = iscsi_write10_sync(sdev->iscsi_ctx, sdev->iscsi_lun, lba, buf, datalen, blksize, 0, 0, 0, 0, 0); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] WRITE10 command: failed with sense: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; } scsi_free_scsi_task(task); @@ -947,7 +947,7 @@ verify_write_works(struct iscsi_context *iscsi, int lun, unsigned char *buf) } int -verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) +verify_read_fails(struct scsi_device *sdev, unsigned char *buf) { struct scsi_task *task; const uint32_t lba = 1; @@ -961,15 +961,15 @@ verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) */ logging(LOG_VERBOSE, - "Send READ10 to verify READ does not work init=%s", - iscsi->initiator_name); + "Send READ10 to verify READ does not work init=%s", + sdev->iscsi_ctx->initiator_name); - task = iscsi_read10_sync(iscsi, lun, lba, datalen, blksize, + task = iscsi_read10_sync(sdev->iscsi_ctx, sdev->iscsi_lun, lba, datalen, blksize, 0, 0, 0, 0, 0); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send READ10 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } @@ -991,7 +991,7 @@ verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) } int -verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) +verify_write_fails(struct scsi_device *sdev, unsigned char *buf) { struct scsi_task *task; const uint32_t lba = 1; @@ -1005,15 +1005,15 @@ verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) */ logging(LOG_VERBOSE, - "Send WRITE10 to verify WRITE does not work init=%s", - iscsi->initiator_name); + "Send WRITE10 to verify WRITE does not work init=%s", + sdev->iscsi_ctx->initiator_name); - task = iscsi_write10_sync(iscsi, lun, lba, buf, datalen, blksize, + task = iscsi_write10_sync(sdev->iscsi_ctx, sdev->iscsi_lun, lba, buf, datalen, blksize, 0, 0, 0, 0, 0); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send WRITE10 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } @@ -1034,7 +1034,7 @@ verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf) } int -synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1047,9 +1047,9 @@ synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, task = scsi_cdb_synchronizecache10(lba, num_blocks, sync_nv, immed); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("SYNCHRONIZECACHE10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("SYNCHRONIZECACHE10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1057,7 +1057,7 @@ synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, } int -synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1070,16 +1070,16 @@ synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, task = scsi_cdb_synchronizecache16(lba, num_blocks, sync_nv, immed); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("SYNCHRONIZECACHE16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("SYNCHRONIZECACHE16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } return ret; } -int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data) +int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) { struct scsi_task *task; @@ -1087,12 +1087,12 @@ int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, "PARAM_LEN:%d", immed, ause, sa, param_len); - task = iscsi_sanitize_sync(iscsi, lun, immed, ause, sa, param_len, + task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, data); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -1106,7 +1106,7 @@ int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] SANITIZE command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); scsi_free_scsi_task(task); return -1; } @@ -1115,7 +1115,7 @@ int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, return 0; } -int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data) +int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) { struct scsi_task *task; @@ -1124,12 +1124,12 @@ int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, "PARAM_LEN:%d", immed, ause, sa, param_len); - task = iscsi_sanitize_sync(iscsi, lun, immed, ause, sa, param_len, + task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, data); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -1152,7 +1152,7 @@ int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, logging(LOG_NORMAL, "[FAILED] SANITIZE failed with wrong " "sense. Should have failed with ILLEGAL_REQUEST/" "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); scsi_free_scsi_task(task); return -1; } @@ -1163,7 +1163,7 @@ int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, return 0; } -int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data) +int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) { struct scsi_task *task; @@ -1172,12 +1172,12 @@ int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, "PARAM_LEN:%d", immed, ause, sa, param_len); - task = iscsi_sanitize_sync(iscsi, lun, immed, ause, sa, param_len, + task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, data); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_GOOD) { @@ -1189,7 +1189,7 @@ int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, if (task->status != SCSI_STATUS_RESERVATION_CONFLICT) { logging(LOG_NORMAL, "[FAILED] Expected RESERVATION CONFLICT. " - "Sense:%s", iscsi_get_error(iscsi)); + "Sense:%s", iscsi_get_error(sdev->iscsi_ctx)); return -1; } @@ -1198,7 +1198,7 @@ int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, return 0; } -int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data) +int sanitize_writeprotected(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) { struct scsi_task *task; @@ -1207,12 +1207,12 @@ int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int "PARAM_LEN:%d", immed, ause, sa, param_len); - task = iscsi_sanitize_sync(iscsi, lun, immed, ause, sa, param_len, + task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, data); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_GOOD) { @@ -1227,7 +1227,7 @@ int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int logging(LOG_NORMAL, "[FAILED] SANITIZE failed with wrong " "sense. Should have failed with DATA_PRTOTECTION/" "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); scsi_free_scsi_task(task); return -1; } @@ -1237,7 +1237,7 @@ int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int return 0; } -int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1250,9 +1250,9 @@ int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int task = scsi_cdb_startstopunit(immed, pcm, pc, no_flush, loej, start); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("STARTSTOPUNIT", iscsi, task, status, key, ascq, + ret = check_result("STARTSTOPUNIT", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); @@ -1261,7 +1261,7 @@ int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int } int -testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +testunitready(struct scsi_device *sdev, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1272,9 +1272,9 @@ testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_ task = scsi_cdb_testunitready(); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("TESTUNITREADY", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("TESTUNITREADY", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1282,26 +1282,26 @@ testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_ } int -testunitready_clear_ua(struct iscsi_context *iscsi, int lun) +testunitready_clear_ua(struct scsi_device *sdev) { struct scsi_task *task; int ret = -1; logging(LOG_VERBOSE, - "Send TESTUNITREADY (To Clear Possible UA) init=%s", - iscsi->initiator_name); + "Send TESTUNITREADY (To Clear Possible UA) init=%s", + sdev->iscsi_ctx->initiator_name); - task = iscsi_testunitready_sync(iscsi, lun); + task = iscsi_testunitready_sync(sdev->iscsi_ctx, sdev->iscsi_lun); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send TESTUNITREADY command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); goto out; } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[INFO] TESTUNITREADY command: failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); goto out; } logging(LOG_VERBOSE, "[OK] TESTUNITREADY does not return unit " @@ -1317,12 +1317,12 @@ out: * Returns -1 if allocating a SCSI task failed or if a communication error * occurred and a SCSI status if a SCSI response has been received. */ -int mode_sense(struct iscsi_context *iscsi, int lun) +int mode_sense(struct scsi_device *sdev) { struct scsi_task *t; enum scsi_status ret = -1; - t = iscsi_modesense6_sync(iscsi, lun, 0, SCSI_MODESENSE_PC_CURRENT, + t = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); if (t) { ret = t->status; @@ -1331,7 +1331,7 @@ int mode_sense(struct iscsi_context *iscsi, int lun) return ret; } -int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, +int compareandwrite(struct scsi_device *sdev, uint64_t lba, unsigned char *data, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int group_number, @@ -1357,16 +1357,16 @@ int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("COMPAREANDWRITE", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("COMPAREANDWRITE", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } return ret; } -int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +int get_lba_status(struct scsi_device *sdev, struct scsi_task **out_task, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1379,9 +1379,9 @@ int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **out_task, int task = scsi_cdb_get_lba_status(lba, len); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("GET_LBA_STATUS", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("GET_LBA_STATUS", sdev, task, status, key, ascq, num_ascq); if (out_task) { *out_task = task; } else if (task) { @@ -1391,7 +1391,7 @@ int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **out_task, int } int -prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +prefetch10(struct scsi_device *sdev, uint32_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1404,9 +1404,9 @@ prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int imme task = scsi_cdb_prefetch10(lba, num, immed, group); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("PREFETCH10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("PREFETCH10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1414,7 +1414,7 @@ prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num, int imme } int -prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +prefetch16(struct scsi_device *sdev, uint64_t lba, int num, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1427,9 +1427,9 @@ prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int imme task = scsi_cdb_prefetch16(lba, num, immed, group); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("PREFETCH16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("PREFETCH16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1437,15 +1437,15 @@ prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num, int imme } int -preventallow(struct iscsi_context *iscsi, int lun, int prevent) +preventallow(struct scsi_device *sdev, int prevent) { struct scsi_task *task; logging(LOG_VERBOSE, "Send PREVENTALLOW prevent:%d", prevent); - task = iscsi_preventallow_sync(iscsi, lun, prevent); + task = iscsi_preventallow_sync(sdev->iscsi_ctx, sdev->iscsi_lun, prevent); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send PREVENTALLOW " - "command: %s", iscsi_get_error(iscsi)); + "command: %s", iscsi_get_error(sdev->iscsi_ctx)); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -1457,7 +1457,7 @@ preventallow(struct iscsi_context *iscsi, int lun, int prevent) } if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] PREVENTALLOW command: " - "failed with sense. %s", iscsi_get_error(iscsi)); + "failed with sense. %s", iscsi_get_error(sdev->iscsi_ctx)); scsi_free_scsi_task(task); return -1; } @@ -1468,7 +1468,7 @@ preventallow(struct iscsi_context *iscsi, int lun, int prevent) } int -read6(struct iscsi_context *iscsi, int lun, uint32_t lba, +read6(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -1483,9 +1483,9 @@ read6(struct iscsi_context *iscsi, int lun, uint32_t lba, task = scsi_cdb_read6(lba, datalen, blocksize); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READ6", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READ6", sdev, task, status, key, ascq, num_ascq); if (data) { memcpy(data, task->datain.data, task->datain.size); } @@ -1496,8 +1496,8 @@ read6(struct iscsi_context *iscsi, int lun, uint32_t lba, } int -read10(struct iscsi_context *iscsi, struct scsi_task **out_task, - int lun, uint32_t lba, +read10(struct scsi_device *sdev, struct scsi_task **out_task, + uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, @@ -1516,9 +1516,9 @@ read10(struct iscsi_context *iscsi, struct scsi_task **out_task, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READ10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READ10", sdev, task, status, key, ascq, num_ascq); if (data) { memcpy(data, task->datain.data, task->datain.size); } @@ -1531,7 +1531,7 @@ read10(struct iscsi_context *iscsi, struct scsi_task **out_task, } int -read12(struct iscsi_context *iscsi, int lun, uint32_t lba, +read12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, @@ -1550,9 +1550,9 @@ read12(struct iscsi_context *iscsi, int lun, uint32_t lba, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READ12", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READ12", sdev, task, status, key, ascq, num_ascq); if (data) { memcpy(data, task->datain.data, task->datain.size); } @@ -1563,7 +1563,7 @@ read12(struct iscsi_context *iscsi, int lun, uint32_t lba, } int -read16(struct iscsi_context *iscsi, int lun, uint64_t lba, +read16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, @@ -1582,9 +1582,9 @@ read16(struct iscsi_context *iscsi, int lun, uint64_t lba, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READ16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READ16", sdev, task, status, key, ascq, num_ascq); if (data) { memcpy(data, task->datain.data, task->datain.size); } @@ -1595,7 +1595,7 @@ read16(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1608,9 +1608,9 @@ readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int task = scsi_cdb_readcapacity10(lba, pmi); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READCAPACITY10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READCAPACITY10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1618,7 +1618,7 @@ readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int } int -readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1629,9 +1629,9 @@ readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, task = scsi_cdb_serviceactionin16(SCSI_READCAPACITY16, alloc_len); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("READCAPACITY16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("READCAPACITY16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1639,7 +1639,7 @@ readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, } int -release6(struct iscsi_context *iscsi, int lun) +release6(struct scsi_device *sdev) { struct scsi_task *task; int i, res = 0; @@ -1647,11 +1647,11 @@ release6(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, "Send RELEASE6"); for (i = 0; i < 3 && res == 0; ++i) { - task = iscsi_release6_sync(iscsi, lun); + task = iscsi_release6_sync(sdev->iscsi_ctx, sdev->iscsi_lun); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send RELEASE6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); res = -1; break; } @@ -1661,7 +1661,7 @@ release6(struct iscsi_context *iscsi, int lun) && task->sense.ascq == SCSI_SENSE_ASCQ_BUS_RESET)) { logging(LOG_NORMAL, "[FAILED] RELEASE6 command: " "failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); res = -1; } scsi_free_scsi_task(task); @@ -1672,7 +1672,7 @@ release6(struct iscsi_context *iscsi, int lun) return res; } -int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **out_task, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1686,9 +1686,9 @@ int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **out alloc_len); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("INQUIRY", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("INQUIRY", sdev, task, status, key, ascq, num_ascq); if (out_task) { *out_task = task; } else if (task) { @@ -1698,7 +1698,7 @@ int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **out } int -reserve6(struct iscsi_context *iscsi, int lun) +reserve6(struct scsi_device *sdev) { struct scsi_task *task; int i, res = 0; @@ -1706,11 +1706,11 @@ reserve6(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, "Send RESERVE6"); for (i = 0; i < 3 && res == 0; ++i) { - task = iscsi_reserve6_sync(iscsi, lun); + task = iscsi_reserve6_sync(sdev->iscsi_ctx, sdev->iscsi_lun); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send RESERVE6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); res = -1; break; } @@ -1726,7 +1726,7 @@ reserve6(struct iscsi_context *iscsi, int lun) && task->sense.ascq == SCSI_SENSE_ASCQ_BUS_RESET)) { logging(LOG_NORMAL, "[FAILED] RESERVE6 command: " "failed with sense. %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); res = -1; } scsi_free_scsi_task(task); @@ -1738,7 +1738,7 @@ reserve6(struct iscsi_context *iscsi, int lun) } int -reserve6_conflict(struct iscsi_context *iscsi, int lun) +reserve6_conflict(struct scsi_device *sdev) { struct scsi_task *task; int i, res = 0; @@ -1746,11 +1746,11 @@ reserve6_conflict(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, "Send RESERVE6 (Expecting RESERVATION_CONFLICT)"); for (i = 0; i < 3 && res == 0; ++i) { - task = iscsi_reserve6_sync(iscsi, lun); + task = iscsi_reserve6_sync(sdev->iscsi_ctx, sdev->iscsi_lun); if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send RESERVE6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); res = -1; break; } @@ -1778,7 +1778,7 @@ reserve6_conflict(struct iscsi_context *iscsi, int lun) } int -unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct scsi_iovec *iov; @@ -1828,9 +1828,9 @@ unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, iov->iov_len = xferlen; scsi_task_set_iov_out(task, iov, 1); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("UNMAP", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("UNMAP", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1838,7 +1838,7 @@ unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, } int -verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +verify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; @@ -1855,9 +1855,9 @@ verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, i d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("VERIFY10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("VERIFY10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1865,7 +1865,7 @@ verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, i } int -verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +verify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -1881,9 +1881,9 @@ verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, i d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("VERIFY12", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("VERIFY12", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1891,7 +1891,7 @@ verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, i } int -verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +verify16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -1907,9 +1907,9 @@ verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, i d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("VERIFY16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("VERIFY16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1917,7 +1917,7 @@ verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, i } int -write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +write10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -1940,9 +1940,9 @@ write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, in d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITE10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITE10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1950,7 +1950,7 @@ write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, in } int -write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +write12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -1973,9 +1973,9 @@ write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, in d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITE12", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITE12", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -1983,7 +1983,7 @@ write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, in } int -write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +write16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -2006,9 +2006,9 @@ write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, in d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITE16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITE16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2016,7 +2016,7 @@ write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, in } int -writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +writesame10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -2045,9 +2045,9 @@ writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITESAME10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITESAME10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2055,7 +2055,7 @@ writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen } int -writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +writesame16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int num, int anchor, int unmap_flag, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; struct iscsi_data d; @@ -2084,9 +2084,9 @@ writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITESAME16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITESAME16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2094,7 +2094,7 @@ writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen } int -writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, +writeverify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -2120,9 +2120,9 @@ writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITEVERIFY10", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITEVERIFY10", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2130,7 +2130,7 @@ writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, } int -writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, +writeverify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -2156,9 +2156,9 @@ writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITEVERIFY12", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITEVERIFY12", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2166,7 +2166,7 @@ writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, } int -writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, +writeverify16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -2192,9 +2192,9 @@ writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(iscsi, lun, task, &d); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); - ret = check_result("WRITEVERIFY16", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("WRITEVERIFY16", sdev, task, status, key, ascq, num_ascq); if (task) { scsi_free_scsi_task(task); } @@ -2202,7 +2202,7 @@ writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, } int -inquiry(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +inquiry(struct scsi_device *sdev, struct scsi_task **out_task, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -2215,9 +2215,9 @@ inquiry(struct iscsi_context *iscsi, struct scsi_task **out_task, int lun, int e task = scsi_cdb_inquiry(evpd, page_code, maxsize); assert(task != NULL); - task = iscsi_scsi_command_sync(iscsi, lun, task, NULL); + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); - ret = check_result("INQUIRY", iscsi, task, status, key, ascq, num_ascq); + ret = check_result("INQUIRY", sdev, task, status, key, ascq, num_ascq); if (out_task) { *out_task = task; } else if (task) { @@ -2245,7 +2245,7 @@ get_command_descriptor(int opcode, int sa) return NULL; } -int set_swp(struct iscsi_context *iscsi, int lun) +int set_swp(struct scsi_device *sdev) { int ret = 0; struct scsi_task *sense_task = NULL; @@ -2254,19 +2254,19 @@ int set_swp(struct iscsi_context *iscsi, int lun) struct scsi_mode_page *mp; logging(LOG_VERBOSE, "Read CONTROL page"); - sense_task = iscsi_modesense6_sync(iscsi, lun, + sense_task = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 1, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_CONTROL, 0, 255); if (sense_task == NULL) { logging(LOG_NORMAL, "Failed to send MODE_SENSE6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } if (sense_task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "MODE_SENSE6 failed: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } @@ -2287,17 +2287,17 @@ int set_swp(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, "Turn SWP ON"); mp->control.swp = 1; - select_task = iscsi_modeselect6_sync(iscsi, lun, + select_task = iscsi_modeselect6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 1, 0, mp); if (select_task == NULL) { logging(LOG_NORMAL, "Failed to send MODE_SELECT6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } if (select_task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "MODE_SELECT6 failed: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } @@ -2312,7 +2312,7 @@ finished: return ret; } -int clear_swp(struct iscsi_context *iscsi, int lun) +int clear_swp(struct scsi_device *sdev) { int ret = 0; struct scsi_task *sense_task = NULL; @@ -2321,19 +2321,19 @@ int clear_swp(struct iscsi_context *iscsi, int lun) struct scsi_mode_page *mp; logging(LOG_VERBOSE, "Read CONTROL page"); - sense_task = iscsi_modesense6_sync(iscsi, lun, + sense_task = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 1, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_CONTROL, 0, 255); if (sense_task == NULL) { logging(LOG_NORMAL, "Failed to send MODE_SENSE6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } if (sense_task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "MODE_SENSE6 failed: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } @@ -2354,17 +2354,17 @@ int clear_swp(struct iscsi_context *iscsi, int lun) logging(LOG_VERBOSE, "Turn SWP OFF"); mp->control.swp = 0; - select_task = iscsi_modeselect6_sync(iscsi, lun, + select_task = iscsi_modeselect6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 1, 0, mp); if (select_task == NULL) { logging(LOG_NORMAL, "Failed to send MODE_SELECT6 command: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } if (select_task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "MODE_SELECT6 failed: %s", - iscsi_get_error(iscsi)); + iscsi_get_error(sdev->iscsi_ctx)); ret = -1; goto finished; } diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index e390637..b79dc45 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -235,71 +235,71 @@ static inline int pr_type_is_all_registrants( } } -int prin_task(struct iscsi_context *iscsi, int lun, int service_action, +int prin_task(struct scsi_device *sdev, int service_action, int success_expected); -int prin_read_keys(struct iscsi_context *iscsi, int lun, struct scsi_task **tp, +int prin_read_keys(struct scsi_device *sdev, struct scsi_task **tp, struct scsi_persistent_reserve_in_read_keys **rkp); -int prout_register_and_ignore(struct iscsi_context *iscsi, int lun, +int prout_register_and_ignore(struct scsi_device *sdev, unsigned long long key); -int prout_register_key(struct iscsi_context *iscsi, int lun, +int prout_register_key(struct scsi_device *sdev, unsigned long long sark, unsigned long long rk); -int prin_verify_key_presence(struct iscsi_context *iscsi, int lun, +int prin_verify_key_presence(struct scsi_device *sdev, unsigned long long key, int present); -int prout_reregister_key_fails(struct iscsi_context *iscsi, int lun, +int prout_reregister_key_fails(struct scsi_device *sdev, unsigned long long sark); -int prout_reserve(struct iscsi_context *iscsi, int lun, +int prout_reserve(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type); -int prout_release(struct iscsi_context *iscsi, int lun, +int prout_release(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type); -int prin_verify_not_reserved(struct iscsi_context *iscsi, int lun); -int prin_verify_reserved_as(struct iscsi_context *iscsi, int lun, +int prin_verify_not_reserved(struct scsi_device *sdev); +int prin_verify_reserved_as(struct scsi_device *sdev, unsigned long long key, enum scsi_persistent_out_type pr_type); -int verify_read_works(struct iscsi_context *iscsi, int lun, unsigned char *buf); -int verify_write_works(struct iscsi_context *iscsi, int lun, unsigned char *buf); -int verify_read_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); -int verify_write_fails(struct iscsi_context *iscsi, int lun, unsigned char *buf); -int inquiry(struct iscsi_context *iscsi, struct scsi_task **task, int lun, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int compareandwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int get_lba_status(struct iscsi_context *iscsi, struct scsi_task **task, int lun, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int orwrite(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int prefetch10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int prefetch16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int preventallow(struct iscsi_context *iscsi, int lun, int prevent); -int read6(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int read10(struct iscsi_context *iscsi, struct scsi_task **task, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int read12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int read16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int readcapacity10(struct iscsi_context *iscsi, int lun, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int readcapacity16(struct iscsi_context *iscsi, int lun, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int report_supported_opcodes(struct iscsi_context *iscsi, struct scsi_task **save_task, int lun, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int release6(struct iscsi_context *iscsi, int lun); -int reserve6(struct iscsi_context *iscsi, int lun); -int reserve6_conflict(struct iscsi_context *iscsi, int lun); -int sanitize(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int sanitize_conflict(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int sanitize_invalidfieldincdb(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int sanitize_writeprotected(struct iscsi_context *iscsi, int lun, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int startstopunit(struct iscsi_context *iscsi, int lun, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int synchronizecache10(struct iscsi_context *iscsi, int lun, uint32_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int synchronizecache16(struct iscsi_context *iscsi, int lun, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int testunitready_clear_ua(struct iscsi_context *iscsi, int lun); -int testunitready(struct iscsi_context *iscsi, int lun, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int mode_sense(struct iscsi_context *iscsi, int lun); -int unmap(struct iscsi_context *iscsi, int lun, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int verify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int verify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int verify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int write10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int write12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int write16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writesame10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writesame16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writeverify10(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writeverify12(struct iscsi_context *iscsi, int lun, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int writeverify16(struct iscsi_context *iscsi, int lun, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify_read_works(struct scsi_device *sdev, unsigned char *buf); +int verify_write_works(struct scsi_device *sdev, unsigned char *buf); +int verify_read_fails(struct scsi_device *sdev, unsigned char *buf); +int verify_write_fails(struct scsi_device *sdev, unsigned char *buf); +int inquiry(struct scsi_device *sdev, struct scsi_task **task, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int compareandwrite(struct scsi_device *sdev, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int get_lba_status(struct scsi_device *sdev, struct scsi_task **task, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int prefetch10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int prefetch16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int preventallow(struct scsi_device *sdev, int prevent); +int read6(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read10(struct scsi_device *sdev, struct scsi_task **task, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **save_task, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int release6(struct scsi_device *sdev); +int reserve6(struct scsi_device *sdev); +int reserve6_conflict(struct scsi_device *sdev); +int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); +int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); +int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); +int sanitize_writeprotected(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); +int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int testunitready_clear_ua(struct scsi_device *sdev); +int testunitready(struct scsi_device *sdev, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int mode_sense(struct scsi_device *sdev); +int unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int verify16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int write10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int write12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int write16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writesame10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writesame16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int num_blocks, int anchor, int unmap, int wrprotect, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writeverify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writeverify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int writeverify16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int bytchk, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int set_swp(struct iscsi_context *iscsi, int lun); -int clear_swp(struct iscsi_context *iscsi, int lun); +int set_swp(struct scsi_device *sdev); +int clear_swp(struct scsi_device *sdev); #endif /* _ISCSI_SUPPORT_H_ */ diff --git a/test-tool/test_compareandwrite_miscompare.c b/test-tool/test_compareandwrite_miscompare.c index fa1f269..83ea2f5 100644 --- a/test-tool/test_compareandwrite_miscompare.c +++ b/test-tool/test_compareandwrite_miscompare.c @@ -53,7 +53,7 @@ test_compareandwrite_miscompare(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -72,7 +72,7 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -90,7 +90,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_MISCOMPARE); @@ -103,7 +103,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are still unchanged as 'A'", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -128,7 +128,7 @@ test_compareandwrite_miscompare(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -142,7 +142,7 @@ test_compareandwrite_miscompare(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -155,7 +155,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = compareandwrite(sd, num_blocks - i, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_MISCOMPARE); @@ -164,7 +164,7 @@ test_compareandwrite_miscompare(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 "they are still unchanged as 'A'", i, num_blocks - i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_compareandwrite_simple.c b/test-tool/test_compareandwrite_simple.c index cce245e..81b1fd0 100644 --- a/test-tool/test_compareandwrite_simple.c +++ b/test-tool/test_compareandwrite_simple.c @@ -54,7 +54,7 @@ test_compareandwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -69,7 +69,7 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -87,7 +87,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:0 (if they all contain 'A')", i); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_STATUS_GOOD); @@ -100,7 +100,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:0 and verify " "they are all 'B'", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -126,7 +126,7 @@ test_compareandwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -136,7 +136,7 @@ test_compareandwrite_simple(void) "BlockLimits.MaximumCompareAndWriteLength(%d). " "Command should fail with INVALID_FIELD_IN_CDB", i, maxbl); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = compareandwrite(sd, 0, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_INVALID_FIELD_IN_CDB); @@ -149,7 +149,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Overwrite %d blocks with 'B' " "at LBA:%" PRIu64 " (if they all contain 'A')", i, num_blocks - i); - ret = compareandwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = compareandwrite(sd, num_blocks - i, buf, 2 * i * block_size, block_size, 0, 0, 0, 0, EXPECT_STATUS_GOOD); @@ -158,7 +158,7 @@ test_compareandwrite_simple(void) logging(LOG_VERBOSE, "Read %d blocks at LBA:%" PRIu64 " and verify they are all 'B'", i, num_blocks - i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_get_lba_status_beyond_eol.c b/test-tool/test_get_lba_status_beyond_eol.c index 1ae55a2..100e899 100644 --- a/test-tool/test_get_lba_status_beyond_eol.c +++ b/test-tool/test_get_lba_status_beyond_eol.c @@ -33,7 +33,7 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS one block beyond the end of the LUN"); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks + 1, 24, + ret = get_lba_status(sd, NULL, num_blocks + 1, 24, EXPECT_LBA_OOB); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -43,13 +43,13 @@ test_get_lba_status_beyond_eol(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA 2^63"); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x8000000000000000ULL, 24, + ret = get_lba_status(sd, NULL, 0x8000000000000000ULL, 24, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test GET_LBA_STATUS at LBA -1"); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0xffffffffffffffffULL, 24, + ret = get_lba_status(sd, NULL, 0xffffffffffffffffULL, 24, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_get_lba_status_simple.c b/test-tool/test_get_lba_status_simple.c index ba28bf6..03258e9 100644 --- a/test-tool/test_get_lba_status_simple.c +++ b/test-tool/test_get_lba_status_simple.c @@ -33,7 +33,7 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, + ret = get_lba_status(sd, NULL,0, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -48,7 +48,7 @@ test_get_lba_status_simple(void) logging(LOG_VERBOSE, "Test GET_LBA_STATUS of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, 24, + ret = get_lba_status(sd, NULL, num_blocks - i, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); diff --git a/test-tool/test_get_lba_status_unmap_single.c b/test-tool/test_get_lba_status_unmap_single.c index ea058dc..e174c02 100644 --- a/test-tool/test_get_lba_status_unmap_single.c +++ b/test-tool/test_get_lba_status_unmap_single.c @@ -50,7 +50,7 @@ test_get_lba_status_unmap_single(void) logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", 256 + lbppb); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, (256 + lbppb) * block_size, + ret = write10(sd, 0, (256 + lbppb) * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -60,13 +60,13 @@ test_get_lba_status_unmap_single(void) PRIu64 " (number of logical blocks: %d)", i, lbppb); list[0].lba = i; list[0].num = lbppb; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, i, 24, + ret = get_lba_status(sd, NULL, i, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -78,7 +78,7 @@ test_get_lba_status_unmap_single(void) } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + lbppb); - ret = get_lba_status(sd->iscsi_ctx, &t, sd->iscsi_lun, i + lbppb, 24, + ret = get_lba_status(sd, &t, i + lbppb, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); @@ -116,20 +116,20 @@ test_get_lba_status_unmap_single(void) for (i = lbppb; i + lbppb <= 256; i += lbppb) { logging(LOG_VERBOSE, "Write the first %i blocks with a known " "pattern and thus map the blocks", (256 + lbppb)); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, (256 + lbppb) * block_size, + ret = write10(sd, 0, (256 + lbppb) * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %" PRIu64 " blocks at LBA 0", i); list[0].lba = 0; list[0].num = i; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read the status of the block at LBA:0"); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, + ret = get_lba_status(sd, NULL, 0, 24, EXPECT_STATUS_GOOD); if (ret == -2) { CU_PASS("[SKIPPED] Target does not support GET_LBA_STATUS. Skipping test"); @@ -140,7 +140,7 @@ test_get_lba_status_unmap_single(void) return; } logging(LOG_VERBOSE, "Read the status of the block at LBA:%" PRIu64, i + 1); - ret = get_lba_status(sd->iscsi_ctx, &t, sd->iscsi_lun, i + 1, 24, + ret = get_lba_status(sd, &t, i + 1, 24, EXPECT_STATUS_GOOD); if (ret != 0) { CU_FAIL("[FAILED] GET_LBA_STATUS command failed"); diff --git a/test-tool/test_inquiry_alloc_length.c b/test-tool/test_inquiry_alloc_length.c index 8e11589..1634479 100644 --- a/test-tool/test_inquiry_alloc_length.c +++ b/test-tool/test_inquiry_alloc_length.c @@ -40,7 +40,7 @@ test_inquiry_alloc_length(void) scsi_free_scsi_task(task); task = NULL; } - ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, i, + ret = inquiry(sd, &task, 0, 0, i, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -83,12 +83,12 @@ test_inquiry_alloc_length(void) logging(LOG_VERBOSE, "Version is SPC-3 or later. Read INQUIRY data using 16-bit allocation length"); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 511 (low order byte is 0xff)"); - ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, 511, + ret = inquiry(sd, &task, 0, 0, 511, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read INQUIRY data with allocation length 512 (low order byte is 0x00)"); - ret = inquiry(sd->iscsi_ctx, &task2, sd->iscsi_lun, 0, 0, 512, + ret = inquiry(sd, &task2, 0, 0, 512, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_block_limits.c b/test-tool/test_inquiry_block_limits.c index 08d2338..75179bd 100644 --- a/test-tool/test_inquiry_block_limits.c +++ b/test-tool/test_inquiry_block_limits.c @@ -39,7 +39,7 @@ test_inquiry_block_limits(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Block device. Verify that we can read Block Limits VPD"); - ret = inquiry(sd->iscsi_ctx, &bl_task, sd->iscsi_lun, + ret = inquiry(sd, &bl_task, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -107,7 +107,7 @@ test_inquiry_block_limits(void) * MAXIMUM UNMAP BLOCK DESCRIPTOR COUNT */ logging(LOG_VERBOSE, "Try reading the logical block provisioning VPD"); - ret = inquiry(sd->iscsi_ctx, &lbp_task, sd->iscsi_lun, + ret = inquiry(sd, &lbp_task, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64, EXPECT_STATUS_GOOD); if (ret == 0) { diff --git a/test-tool/test_inquiry_evpd.c b/test-tool/test_inquiry_evpd.c index 34a45bf..ad580d0 100644 --- a/test-tool/test_inquiry_evpd.c +++ b/test-tool/test_inquiry_evpd.c @@ -33,7 +33,7 @@ test_inquiry_evpd(void) logging(LOG_VERBOSE, "Test of the INQUIRY EVPD bit"); logging(LOG_VERBOSE, "Verify that INQUIRY with EVPD==0 and PC!=0 is an error"); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 1, 256, + ret = inquiry(sd, NULL, 0, 1, 256, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_inquiry_mandatory_vpd_sbc.c b/test-tool/test_inquiry_mandatory_vpd_sbc.c index f5707a7..d9366cf 100644 --- a/test-tool/test_inquiry_mandatory_vpd_sbc.c +++ b/test-tool/test_inquiry_mandatory_vpd_sbc.c @@ -36,13 +36,13 @@ test_inquiry_mandatory_vpd_sbc(void) logging(LOG_VERBOSE, "SUPPORTED_VPD_PAGES is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, + ret = inquiry(sd, NULL, 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "DEVICE_IDENTIFICATION is mandatory for SBC devices. Verify we can read it."); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, + ret = inquiry(sd, NULL, 1, SCSI_INQUIRY_PAGECODE_DEVICE_IDENTIFICATION, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_standard.c b/test-tool/test_inquiry_standard.c index 89be0c7..d4c110e 100644 --- a/test-tool/test_inquiry_standard.c +++ b/test-tool/test_inquiry_standard.c @@ -35,7 +35,7 @@ test_inquiry_standard(void) logging(LOG_VERBOSE, "Verify we can read standard INQUIRY page"); /* 260 bytes is the maximum possible size of the standard vpd */ - ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, 0, 0, 260, + ret = inquiry(sd, &task, 0, 0, 260, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_inquiry_supported_vpd.c b/test-tool/test_inquiry_supported_vpd.c index 36344a2..8bc00fc 100644 --- a/test-tool/test_inquiry_supported_vpd.c +++ b/test-tool/test_inquiry_supported_vpd.c @@ -34,7 +34,7 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Test INQUIRY supported VPD pages"); logging(LOG_VERBOSE, "Verify we can read the SUPPORTED VPD page"); - ret = inquiry(sd->iscsi_ctx, &task, sd->iscsi_lun, + ret = inquiry(sd, &task, 1, SCSI_INQUIRY_PAGECODE_SUPPORTED_VPD_PAGES, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -56,7 +56,7 @@ test_inquiry_supported_vpd(void) logging(LOG_VERBOSE, "Verify we can read page 0x%02x", sup_inq->pages[i]); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 1, sup_inq->pages[i], 255, + ret = inquiry(sd, NULL, 1, sup_inq->pages[i], 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_iscsi_cmdsn_toohigh.c b/test-tool/test_iscsi_cmdsn_toohigh.c index abbe353..013716a 100644 --- a/test-tool/test_iscsi_cmdsn_toohigh.c +++ b/test-tool/test_iscsi_cmdsn_toohigh.c @@ -64,7 +64,7 @@ void test_iscsi_cmdsn_toohigh(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { @@ -76,7 +76,7 @@ void test_iscsi_cmdsn_toohigh(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_iscsi_cmdsn_toolow.c b/test-tool/test_iscsi_cmdsn_toolow.c index 9809d04..0372f5f 100644 --- a/test-tool/test_iscsi_cmdsn_toolow.c +++ b/test-tool/test_iscsi_cmdsn_toolow.c @@ -64,7 +64,7 @@ void test_iscsi_cmdsn_toolow(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, -1); if (ret == -1) { @@ -77,7 +77,7 @@ void test_iscsi_cmdsn_toolow(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN. should work again"); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c index b672e7f..7d7d7b9 100644 --- a/test-tool/test_iscsi_datasn_invalid.c +++ b/test-tool/test_iscsi_datasn_invalid.c @@ -75,7 +75,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, 2 * block_size, + ret = write10(sd, 100, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -98,7 +98,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, block_size, + ret = write10(sd, 100, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -121,7 +121,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, block_size, + ret = write10(sd, 100, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -145,7 +145,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 1); iscsi_set_timeout(sd->iscsi_ctx, 3); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 100, 2 * block_size, + ret = write10(sd, 100, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index ab5f3a9..011428a 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -37,38 +37,38 @@ test_mandatory_sbc(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test INQUIRY."); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, 255, + ret = inquiry(sd, NULL, 0, 0, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10."); - ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = readcapacity10(sd, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READCAPACITY16. The device claims SBC-3 support."); - ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 15, + ret = readcapacity16(sd, 15, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test READ10."); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READ16. the device claims SBC-3 support."); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Test TESTUNITREADY."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 477f004..929fa63 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -43,17 +43,17 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Eject the medium."); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 1, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY when medium is ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE10 when medium is ejected."); - ret = synchronizecache10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 1, + ret = synchronizecache10(sd, 0, 1, 1, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -63,7 +63,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test SYNCHRONIZECACHE16 when medium is ejected."); - ret = synchronizecache16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 1, + ret = synchronizecache16(sd, 0, 1, 1, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -73,30 +73,30 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test READ10 when medium is ejected."); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, block_size, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 when medium is ejected."); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = read12(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 when medium is ejected."); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10 when medium is ejected."); - ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = readcapacity10(sd, 0, 0, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY16 when medium is ejected."); - ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 15, + ret = readcapacity16(sd, 15, EXPECT_NO_MEDIUM); if (ret == -2) { if (sbc3_support) { @@ -110,7 +110,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test GET_LBA_STATUS when medium is ejected."); - ret = get_lba_status(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 24, + ret = get_lba_status(sd, NULL, 0, 24, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -120,7 +120,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH10 when medium is ejected."); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); + ret = prefetch10(sd, 0, 1, 1, 0, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -130,7 +130,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test PREFETCH16 when medium is ejected."); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, EXPECT_NO_MEDIUM); + ret = prefetch16(sd, 0, 1, 1, 0, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " "PREFETCH16"); @@ -139,7 +139,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY10 when medium is ejected."); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = verify10(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -150,7 +150,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY12 when medium is ejected."); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = verify12(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -161,7 +161,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test VERIFY16 when medium is ejected."); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = verify16(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -177,25 +177,25 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITE10 when medium is ejected."); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write10(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 when medium is ejected."); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write12(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 when medium is ejected."); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 when medium is ejected."); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = writeverify10(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -206,7 +206,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY12 when medium is ejected."); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = writeverify12(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -217,7 +217,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITEVERIFY16 when medium is ejected."); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = writeverify16(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -228,7 +228,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test ORWRITE when medium is ejected."); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = orwrite(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -242,7 +242,7 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "[SKIPPED] Test not implemented yet"); logging(LOG_VERBOSE, "Test WRITESAME10 when medium is ejected."); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = writesame10(sd, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -253,7 +253,7 @@ test_nomedia_sbc(void) } logging(LOG_VERBOSE, "Test WRITESAME16 when medium is ejected."); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = writesame16(sd, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_NO_MEDIUM); if (ret == -2) { @@ -266,7 +266,7 @@ test_nomedia_sbc(void) logging(LOG_VERBOSE, "Test UNMAP when medium is ejected."); list[0].lba = 0; list[0].num = lbppb; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_NO_MEDIUM); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] target does not support " @@ -278,7 +278,7 @@ test_nomedia_sbc(void) finished: logging(LOG_VERBOSE, "Load the medium again."); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_orwrite_0blocks.c b/test-tool/test_orwrite_0blocks.c index 5d7b641..0d3b0e3 100644 --- a/test-tool/test_orwrite_0blocks.c +++ b/test-tool/test_orwrite_0blocks.c @@ -33,7 +33,7 @@ test_orwrite_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==0"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_orwrite_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks one block past end-of-LUN"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, + ret = orwrite(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==2^63"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = orwrite(sd, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE 0-blocks at LBA==-1"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = orwrite(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_beyond_eol.c b/test-tool/test_orwrite_beyond_eol.c index bc222f9..a4745af 100644 --- a/test-tool/test_orwrite_beyond_eol.c +++ b/test-tool/test_orwrite_beyond_eol.c @@ -40,7 +40,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = orwrite(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = orwrite(sd, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -69,7 +69,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = orwrite(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_orwrite_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = orwrite(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_flags.c b/test-tool/test_orwrite_flags.c index 8ea0cf4..3af9aa1 100644 --- a/test-tool/test_orwrite_flags.c +++ b/test-tool/test_orwrite_flags.c @@ -39,7 +39,7 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE flags"); logging(LOG_VERBOSE, "Test ORWRITE with DPO==1"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_orwrite_flags(void) logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==0"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==1 FUA_NV==1"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with FUA==0 FUA_NV==1"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test ORWRITE with DPO==1 FUA==1 FUA_NV==1"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_simple.c b/test-tool/test_orwrite_simple.c index 470df44..d1fb5c6 100644 --- a/test-tool/test_orwrite_simple.c +++ b/test-tool/test_orwrite_simple.c @@ -42,7 +42,7 @@ test_orwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = orwrite(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,7 +58,7 @@ test_orwrite_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = orwrite(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_verify.c b/test-tool/test_orwrite_verify.c index 2e7d505..061f872 100644 --- a/test-tool/test_orwrite_verify.c +++ b/test-tool/test_orwrite_verify.c @@ -47,14 +47,14 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write10(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = orwrite(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -65,7 +65,7 @@ test_orwrite_verify(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -76,13 +76,13 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = orwrite(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,20 +101,20 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "Write %d blocks of all-zero", i); memset(buf, 0, block_size * i); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OrWrite %d blocks with 0xa5", i); memset(buf, 0xa5, block_size * i); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = orwrite(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -125,13 +125,13 @@ test_orwrite_verify(void) logging(LOG_VERBOSE, "OrWrite %d blocks with 0x5a", i); memset(buf, 0x5a, block_size * i); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = orwrite(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read %d blocks back", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i * block_size, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, readbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_orwrite_wrprotect.c b/test-tool/test_orwrite_wrprotect.c index d99e842..fd1e6be 100644 --- a/test-tool/test_orwrite_wrprotect.c +++ b/test-tool/test_orwrite_wrprotect.c @@ -44,7 +44,7 @@ test_orwrite_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = orwrite(sd, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_prefetch10_0blocks.c b/test-tool/test_prefetch10_0blocks.c index 73b8c89..51736fb 100644 --- a/test-tool/test_prefetch10_0blocks.c +++ b/test-tool/test_prefetch10_0blocks.c @@ -30,7 +30,7 @@ test_prefetch10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==0"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, + ret = prefetch10(sd, 0, 0, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -45,19 +45,19 @@ test_prefetch10_0blocks(void) } logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks one block past end-of-LUN"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, 0, 0, + ret = prefetch10(sd, num_blocks + 1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==2^31"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, 0, 0, + ret = prefetch10(sd, 0x80000000, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 0-blocks at LBA==-1"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, 0, 0, + ret = prefetch10(sd, -1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_beyond_eol.c b/test-tool/test_prefetch10_beyond_eol.c index f5c0704..d663af9 100644 --- a/test-tool/test_prefetch10_beyond_eol.c +++ b/test-tool/test_prefetch10_beyond_eol.c @@ -37,7 +37,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i, 0, 0, + ret = prefetch10(sd, num_blocks + 1 - i, i, 0, 0, EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -50,7 +50,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, i, 0, 0, + ret = prefetch10(sd, 0x80000000, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -58,7 +58,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, -1, i, 0, 0, + ret = prefetch10(sd, -1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -66,7 +66,7 @@ test_prefetch10_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i, 0, 0, + ret = prefetch10(sd, num_blocks - 1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_flags.c b/test-tool/test_prefetch10_flags.c index a59a21f..8846798 100644 --- a/test-tool/test_prefetch10_flags.c +++ b/test-tool/test_prefetch10_flags.c @@ -34,7 +34,7 @@ test_prefetch10_flags(void) logging(LOG_VERBOSE, "Test PREFETCH10 flags"); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED==1"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, + ret = prefetch10(sd, 0, 1, 1, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch10_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with GROUP==3"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 0, 3, + ret = prefetch10(sd, 0, 1, 0, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH10 with IMMED=1 and GROUP==3"); - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 3, + ret = prefetch10(sd, 0, 1, 1, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch10_simple.c b/test-tool/test_prefetch10_simple.c index ca0351b..89fe426 100644 --- a/test-tool/test_prefetch10_simple.c +++ b/test-tool/test_prefetch10_simple.c @@ -33,7 +33,7 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, 0, i, 0, 0, + ret = prefetch10(sd, 0, i, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH10 is not implemented."); @@ -46,7 +46,7 @@ test_prefetch10_simple(void) logging(LOG_VERBOSE, "Test PREFETCH10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i, 0, 0, + ret = prefetch10(sd, num_blocks - i, i, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_0blocks.c b/test-tool/test_prefetch16_0blocks.c index 6620d80..79ede7b 100644 --- a/test-tool/test_prefetch16_0blocks.c +++ b/test-tool/test_prefetch16_0blocks.c @@ -30,7 +30,7 @@ test_prefetch16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==0"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, + ret = prefetch16(sd, 0, 0, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -40,19 +40,19 @@ test_prefetch16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks one block past end-of-LUN"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, 0, 0, + ret = prefetch16(sd, num_blocks + 1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==2^63"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, 0, 0, + ret = prefetch16(sd, 0x8000000000000000ULL, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 0-blocks at LBA==-1"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, 0, 0, + ret = prefetch16(sd, -1, 0, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_beyond_eol.c b/test-tool/test_prefetch16_beyond_eol.c index 069e250..ca5df11 100644 --- a/test-tool/test_prefetch16_beyond_eol.c +++ b/test-tool/test_prefetch16_beyond_eol.c @@ -32,7 +32,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks one block beyond the end"); for (i = 1; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, i, 0, 0, + ret = prefetch16(sd, num_blocks + 1 - i, i, 0, 0, EXPECT_LBA_OOB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -45,7 +45,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = prefetch16(sd, 0x8000000000000000ULL, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -54,7 +54,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, -1, i, 0, 0, + ret = prefetch16(sd, -1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } @@ -62,7 +62,7 @@ test_prefetch16_beyond_eol(void) logging(LOG_VERBOSE, "Test PREFETCH16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, i, 0, 0, + ret = prefetch16(sd, num_blocks - 1, i, 0, 0, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_flags.c b/test-tool/test_prefetch16_flags.c index 3f24e9f..384a1a7 100644 --- a/test-tool/test_prefetch16_flags.c +++ b/test-tool/test_prefetch16_flags.c @@ -34,7 +34,7 @@ test_prefetch16_flags(void) logging(LOG_VERBOSE, "Test PREFETCH16 flags"); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED==1"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 0, + ret = prefetch16(sd, 0, 1, 1, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -44,12 +44,12 @@ test_prefetch16_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with GROUP==3"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 0, 3, + ret = prefetch16(sd, 0, 1, 0, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test PREFETCH16 with IMMED=1 and GROUP==3"); - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, 1, 1, 3, + ret = prefetch16(sd, 0, 1, 1, 3, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prefetch16_simple.c b/test-tool/test_prefetch16_simple.c index 92725ec..587677f 100644 --- a/test-tool/test_prefetch16_simple.c +++ b/test-tool/test_prefetch16_simple.c @@ -33,7 +33,7 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the start of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, 0, i, 0, 0, + ret = prefetch16(sd, 0, i, 0, 0, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PREFETCH16 is not implemented."); @@ -46,7 +46,7 @@ test_prefetch16_simple(void) logging(LOG_VERBOSE, "Test PREFETCH16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = prefetch16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, i, 0, 0, + ret = prefetch16(sd, num_blocks - i, i, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_2_itnexuses.c b/test-tool/test_preventallow_2_itnexuses.c index 6a9b0d1..a14854c 100644 --- a/test-tool/test_preventallow_2_itnexuses.c +++ b/test-tool/test_preventallow_2_itnexuses.c @@ -28,6 +28,7 @@ void test_preventallow_2_itnexuses(void) { int ret; + struct scsi_device sd2; CHECK_FOR_SBC; CHECK_FOR_REMOVABLE; @@ -36,45 +37,45 @@ test_preventallow_2_itnexuses(void) logging(LOG_VERBOSE, "Test that PREVENT MEDIUM REMOVAL are seen on other nexuses as well"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Try to eject the medium on the second connection"); - ret = startstopunit(iscsic2, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(&sd2, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Logout the second connection from target"); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_cold_reset.c b/test-tool/test_preventallow_cold_reset.c index 81eec21..5ccf5fa 100644 --- a/test-tool/test_preventallow_cold_reset.c +++ b/test-tool/test_preventallow_cold_reset.c @@ -36,16 +36,16 @@ test_preventallow_cold_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -53,33 +53,33 @@ test_preventallow_cold_reset(void) logging(LOG_VERBOSE, "Perform cold reset on target"); ret = iscsi_task_mgmt_target_cold_reset_sync(sd->iscsi_ctx); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd, EXPECT_STATUS_GOOD) != 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_eject.c b/test-tool/test_preventallow_eject.c index de38b4d..0f50357 100644 --- a/test-tool/test_preventallow_eject.c +++ b/test-tool/test_preventallow_eject.c @@ -36,48 +36,48 @@ test_preventallow_eject(void) logging(LOG_VERBOSE, "Test that we can not eject medium when PREVENT is active"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium again"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_itnexus_loss.c b/test-tool/test_preventallow_itnexus_loss.c index 038254c..ac4ccb4 100644 --- a/test-tool/test_preventallow_itnexus_loss.c +++ b/test-tool/test_preventallow_itnexus_loss.c @@ -36,16 +36,16 @@ test_preventallow_itnexus_loss(void) logging(LOG_VERBOSE, "Test that IT-Nexus loss clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -61,28 +61,28 @@ test_preventallow_itnexus_loss(void) } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_logout.c b/test-tool/test_preventallow_logout.c index 9280f76..d92238a 100644 --- a/test-tool/test_preventallow_logout.c +++ b/test-tool/test_preventallow_logout.c @@ -36,16 +36,16 @@ test_preventallow_logout(void) logging(LOG_VERBOSE, "Test that Logout loss clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -62,28 +62,28 @@ test_preventallow_logout(void) } logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_lun_reset.c b/test-tool/test_preventallow_lun_reset.c index fd1cb0e..7efb2b8 100644 --- a/test-tool/test_preventallow_lun_reset.c +++ b/test-tool/test_preventallow_lun_reset.c @@ -36,16 +36,16 @@ test_preventallow_lun_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -54,32 +54,32 @@ test_preventallow_lun_reset(void) ret = iscsi_task_mgmt_lun_reset_sync(sd->iscsi_ctx, sd->iscsi_lun); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_simple.c b/test-tool/test_preventallow_simple.c index 9d74822..a76fbdb 100644 --- a/test-tool/test_preventallow_simple.c +++ b/test-tool/test_preventallow_simple.c @@ -36,10 +36,10 @@ test_preventallow_simple(void) logging(LOG_VERBOSE, "Test PREVENTALLOW basics"); logging(LOG_VERBOSE, "Test we can set PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_preventallow_warm_reset.c b/test-tool/test_preventallow_warm_reset.c index cf610e2..87c68f8 100644 --- a/test-tool/test_preventallow_warm_reset.c +++ b/test-tool/test_preventallow_warm_reset.c @@ -36,16 +36,16 @@ test_preventallow_warm_reset(void) logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); logging(LOG_VERBOSE, "Set the PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 1); + ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_REMOVAL_PREVENTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can still access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -54,32 +54,32 @@ test_preventallow_warm_reset(void) ret = iscsi_task_mgmt_target_warm_reset_sync(sd->iscsi_ctx); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until all unit attentions clear"); - while (testunitready(sd->iscsi_ctx, sd->iscsi_lun, EXPECT_STATUS_GOOD) != 0); + while (testunitready(sd, EXPECT_STATUS_GOOD) != 0); logging(LOG_VERBOSE, "Try to eject the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can not access the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 0, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Clear PREVENT and load medium in case target failed"); logging(LOG_VERBOSE, "Test we can clear PREVENT flag"); - ret = preventallow(sd->iscsi_ctx, sd->iscsi_lun, 0); + ret = preventallow(sd, 0); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Load the medium"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 0, 0, 1, 1, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_prin_read_keys_simple.c b/test-tool/test_prin_read_keys_simple.c index feee29a..e7c006b 100644 --- a/test-tool/test_prin_read_keys_simple.c +++ b/test-tool/test_prin_read_keys_simple.c @@ -36,7 +36,7 @@ test_prin_read_keys_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test Persistent Reserve IN READ_KEYS works."); - ret = prin_read_keys(sd->iscsi_ctx, sd->iscsi_lun, &task, NULL); + ret = prin_read_keys(sd, &task, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE IN is not implemented."); CU_PASS("PERSISTENT RESERVE IN is not implemented."); diff --git a/test-tool/test_prin_serviceaction_range.c b/test-tool/test_prin_serviceaction_range.c index 3e43fd1..0c9912e 100644 --- a/test-tool/test_prin_serviceaction_range.c +++ b/test-tool/test_prin_serviceaction_range.c @@ -37,7 +37,7 @@ test_prin_serviceaction_range(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN Serviceaction range."); /* verify PRIN/READ_KEYS works -- XXX redundant -- remove this? */ - ret = prin_read_keys(sd->iscsi_ctx, sd->iscsi_lun, &task, NULL); + ret = prin_read_keys(sd, &task, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE IN is not implemented."); CU_PASS("PERSISTENT RESERVE IN is not implemented."); @@ -47,13 +47,13 @@ test_prin_serviceaction_range(void) /* verify that PRIN/SA={0,1,2,3} works ... */ for (i = 0; i < 4; i++) { - ret = prin_task(sd->iscsi_ctx, sd->iscsi_lun, i, 1); + ret = prin_task(sd, i, 1); CU_ASSERT_EQUAL(ret, 0); } /* verify that PRIN/SA={4..0x20} fails ... */ for (i = 4; i < 0x20; i++) { - ret = prin_task(sd->iscsi_ctx, sd->iscsi_lun, i, 0); + ret = prin_task(sd, i, 0); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_prout_register_simple.c b/test-tool/test_prout_register_simple.c index d71f1a0..a95f39b 100644 --- a/test-tool/test_prout_register_simple.c +++ b/test-tool/test_prout_register_simple.c @@ -37,7 +37,7 @@ test_prout_register_simple(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN REGISTER works."); /* register our reservation key with the target */ - ret = prout_register_and_ignore(sd->iscsi_ctx, sd->iscsi_lun, key); + ret = prout_register_and_ignore(sd, key); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); @@ -46,18 +46,18 @@ test_prout_register_simple(void) CU_ASSERT_EQUAL(ret, 0); /* verify we can read the registration */ - ret = prin_verify_key_presence(sd->iscsi_ctx, sd->iscsi_lun, key, 1); + ret = prin_verify_key_presence(sd, key, 1); CU_ASSERT_EQUAL(ret, 0); /* try to reregister, which should fail */ - ret = prout_reregister_key_fails(sd->iscsi_ctx, sd->iscsi_lun, key+1); + ret = prout_reregister_key_fails(sd, key+1); CU_ASSERT_EQUAL(ret, 0); /* release from the target */ - ret = prout_register_key(sd->iscsi_ctx, sd->iscsi_lun, 0, key); + ret = prout_register_key(sd, 0, key); CU_ASSERT_EQUAL(ret, 0); /* Verify the registration is gone */ - ret = prin_verify_key_presence(sd->iscsi_ctx, sd->iscsi_lun, key, 0); + ret = prin_verify_key_presence(sd, key, 0); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_prout_reserve_access.c b/test-tool/test_prout_reserve_access.c index cf9d6b0..94a1f63 100644 --- a/test-tool/test_prout_reserve_access.c +++ b/test-tool/test_prout_reserve_access.c @@ -25,8 +25,7 @@ static void -verify_persistent_reserve_access(struct iscsi_context *iscsi1, int lun1, - struct iscsi_context *iscsi2, int lun2, +verify_persistent_reserve_access(struct scsi_device *sd1, struct scsi_device *sd2, const enum scsi_persistent_out_type pr_type, int reg_i2_can_read, int reg_i2_can_write, @@ -44,26 +43,26 @@ verify_persistent_reserve_access(struct iscsi_context *iscsi1, int lun1, scsi_pr_type_str(pr_type)); /* send TURs to clear possible check conditions */ - (void) testunitready_clear_ua(iscsi1, lun1); - (void) testunitready_clear_ua(iscsi2, lun2); + (void) testunitready_clear_ua(sd1); + (void) testunitready_clear_ua(sd2); /* register our reservation key with the target */ - ret = prout_register_and_ignore(iscsi1, lun1, key); + ret = prout_register_and_ignore(sd1, key); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); return; } CU_ASSERT_EQUAL(0, ret); - ret = prout_register_and_ignore(iscsi2, lun2, key2); + ret = prout_register_and_ignore(sd2, key2); CU_ASSERT_EQUAL(0, ret); /* reserve the target through initiator 1 */ - ret = prout_reserve(iscsi1, lun1, key, pr_type); + ret = prout_reserve(sd1, key, pr_type); CU_ASSERT_EQUAL(0, ret); /* verify target reservation */ - ret = prin_verify_reserved_as(iscsi1, lun1, + ret = prin_verify_reserved_as(sd1, pr_type_is_all_registrants(pr_type) ? 0 : key, pr_type); CU_ASSERT_EQUAL(0, ret); @@ -72,58 +71,62 @@ verify_persistent_reserve_access(struct iscsi_context *iscsi1, int lun1, CU_ASSERT_PTR_NOT_NULL(read_write_buf); /* make sure init1 can read */ - ret = verify_read_works(iscsi1, lun1, read_write_buf); + ret = verify_read_works(sd1, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* make sure init1 can write */ - ret = verify_write_works(iscsi1, lun1, read_write_buf); + ret = verify_write_works(sd1, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* verify registered init2 read access */ if (reg_i2_can_read) - ret = verify_read_works(iscsi2, lun2, read_write_buf); + ret = verify_read_works(sd2, read_write_buf); else - ret = verify_read_fails(iscsi2, lun2, read_write_buf); + ret = verify_read_fails(sd2, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* verify registered init2 write access */ if (reg_i2_can_write) - ret = verify_write_works(iscsi2, lun2, read_write_buf); + ret = verify_write_works(sd2, read_write_buf); else - ret = verify_write_fails(iscsi2, lun2, read_write_buf); + ret = verify_write_fails(sd2, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* unregister init2 */ - ret = prout_register_key(iscsi2, lun2, 0, key); + ret = prout_register_key(sd2, 0, key); CU_ASSERT_EQUAL(0, ret); /* verify unregistered init2 read access */ if (unreg_i2_can_read) - ret = verify_read_works(iscsi2, lun2, read_write_buf); + ret = verify_read_works(sd2, read_write_buf); else - ret = verify_read_fails(iscsi2, lun2, read_write_buf); + ret = verify_read_fails(sd2, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* verify unregistered init2 write access */ if (unreg_i2_can_write) - ret = verify_write_works(iscsi2, lun2, read_write_buf); + ret = verify_write_works(sd2, read_write_buf); else - ret = verify_write_fails(iscsi2, lun2, read_write_buf); + ret = verify_write_fails(sd2, read_write_buf); CU_ASSERT_EQUAL(0, ret); /* release our reservation */ - ret = prout_release(iscsi1, lun1, key, pr_type); + ret = prout_release(sd1, key, pr_type); CU_ASSERT_EQUAL(0, ret); /* remove our key from the target */ - ret = prout_register_key(iscsi1, lun1, 0, key); + ret = prout_register_key(sd1, 0, key); CU_ASSERT_EQUAL(0, ret); } void test_prout_reserve_access_ea(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0, 0, 0, 0); } @@ -131,7 +134,11 @@ test_prout_reserve_access_ea(void) void test_prout_reserve_access_we(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 1, 0, 1, 0); } @@ -139,7 +146,11 @@ test_prout_reserve_access_we(void) void test_prout_reserve_access_earo(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 1, 1, 0, 0); } @@ -147,7 +158,11 @@ test_prout_reserve_access_earo(void) void test_prout_reserve_access_wero(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 1, 1, 1, 0); } @@ -155,7 +170,11 @@ test_prout_reserve_access_wero(void) void test_prout_reserve_access_eaar(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1, 1, 0, 0); } @@ -163,7 +182,11 @@ test_prout_reserve_access_eaar(void) void test_prout_reserve_access_wear(void) { - verify_persistent_reserve_access(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1, 1, 1, 0); } diff --git a/test-tool/test_prout_reserve_ownership.c b/test-tool/test_prout_reserve_ownership.c index 28b33d1..6898e08 100644 --- a/test-tool/test_prout_reserve_ownership.c +++ b/test-tool/test_prout_reserve_ownership.c @@ -25,8 +25,7 @@ static void -verify_persistent_reserve_ownership(struct iscsi_context *iscsi1, int lun1, - struct iscsi_context *iscsi2, int lun2, +verify_persistent_reserve_ownership(struct scsi_device *sd1, struct scsi_device *sd2, const enum scsi_persistent_out_type pr_type, int resvn_is_shared) { @@ -41,97 +40,121 @@ verify_persistent_reserve_ownership(struct iscsi_context *iscsi1, int lun1, scsi_pr_type_str(pr_type)); /* send TURs to clear possible check conditions */ - (void) testunitready_clear_ua(iscsi1, lun1); - (void) testunitready_clear_ua(iscsi2, lun2); + (void) testunitready_clear_ua(sd1); + (void) testunitready_clear_ua(sd2); /* register our reservation key with the target */ - ret = prout_register_and_ignore(iscsi1, lun1, key1); + ret = prout_register_and_ignore(sd1, key1); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); return; } CU_ASSERT_EQUAL(0, ret); - ret = prout_register_and_ignore(iscsi2, lun2, key2); + ret = prout_register_and_ignore(sd2, key2); CU_ASSERT_EQUAL(0, ret); /* reserve the target through initiator 1 */ - ret = prout_reserve(iscsi1, lun1, key1, pr_type); + ret = prout_reserve(sd1, key1, pr_type); CU_ASSERT_EQUAL(0, ret); /* verify target reservation */ - ret = prin_verify_reserved_as(iscsi1, lun1, + ret = prin_verify_reserved_as(sd1, pr_type_is_all_registrants(pr_type) ? 0 : key1, pr_type); CU_ASSERT_EQUAL(0, ret); /* unregister init1 */ - ret = prout_register_key(iscsi1, lun1, 0, key1); + ret = prout_register_key(sd1, 0, key1); CU_ASSERT_EQUAL(0, ret); /* verify if reservation is still present */ if (resvn_is_shared) { /* verify target reservation */ - ret = prin_verify_reserved_as(iscsi1, lun1, + ret = prin_verify_reserved_as(sd1, pr_type_is_all_registrants(pr_type) ? 0 : key1, pr_type); CU_ASSERT_EQUAL(0, ret); /* release our reservation */ - ret = prout_release(iscsi2, lun2, key2, pr_type); + ret = prout_release(sd2, key2, pr_type); CU_ASSERT_EQUAL(0, ret); } else { /* verify target is not reserved now */ - ret = prin_verify_not_reserved(iscsi1, lun1); + ret = prin_verify_not_reserved(sd1); CU_ASSERT_EQUAL(0, ret); /* send TUR to clear possible check condition */ - (void) testunitready_clear_ua(iscsi2, lun2); + (void) testunitready_clear_ua(sd2); } /* remove our remaining key from the target */ - ret = prout_register_key(iscsi2, lun2, 0, key2); + ret = prout_register_key(sd2, 0, key2); CU_ASSERT_EQUAL(0, ret); } void test_prout_reserve_ownership_ea(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0); } void test_prout_reserve_ownership_we(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 0); } void test_prout_reserve_ownership_earo(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 0); } void test_prout_reserve_ownership_wero(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 0); } void test_prout_reserve_ownership_eaar(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1); } void test_prout_reserve_ownership_wear(void) { - verify_persistent_reserve_ownership(sd->iscsi_ctx, sd->iscsi_lun, iscsic2, tgt_lun2, + struct scsi_device sd2; + + sd2.iscsi_ctx = iscsic2; + sd2.iscsi_lun = tgt_lun2; + verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1); } diff --git a/test-tool/test_prout_reserve_simple.c b/test-tool/test_prout_reserve_simple.c index 90144d5..8ab149c 100644 --- a/test-tool/test_prout_reserve_simple.c +++ b/test-tool/test_prout_reserve_simple.c @@ -52,7 +52,7 @@ test_prout_reserve_simple(void) logging(LOG_VERBOSE, "Test Persistent Reserve IN RESERVE works."); /* register our reservation key with the target */ - ret = prout_register_and_ignore(sd->iscsi_ctx, sd->iscsi_lun, key); + ret = prout_register_and_ignore(sd, key); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] PERSISTEN RESERVE OUT is not implemented."); CU_PASS("PERSISTENT RESERVE OUT is not implemented."); @@ -65,22 +65,22 @@ test_prout_reserve_simple(void) enum scsi_persistent_out_type pr_type = pr_types_to_test[i]; /* reserve the target */ - ret = prout_reserve(sd->iscsi_ctx, sd->iscsi_lun, key, pr_type); + ret = prout_reserve(sd, key, pr_type); CU_ASSERT_EQUAL(ret, 0); /* verify target reservation */ - ret = prin_verify_reserved_as(sd->iscsi_ctx, sd->iscsi_lun, + ret = prin_verify_reserved_as(sd, pr_type_is_all_registrants(pr_type) ? 0 : key, pr_type); CU_ASSERT_EQUAL(ret, 0); /* release our reservation */ - ret = prout_release(sd->iscsi_ctx, sd->iscsi_lun, key, pr_type); + ret = prout_release(sd, key, pr_type); CU_ASSERT_EQUAL(ret, 0); } /* remove our key from the target */ - ret = prout_register_key(sd->iscsi_ctx, sd->iscsi_lun, 0, key); + ret = prout_register_key(sd, 0, key); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_read10_0blocks.c b/test-tool/test_read10_0blocks.c index 0c870a1..dced0f4 100644 --- a/test-tool/test_read10_0blocks.c +++ b/test-tool/test_read10_0blocks.c @@ -30,7 +30,7 @@ test_read10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==0"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, block_size, + ret = read10(sd, NULL, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -41,21 +41,21 @@ test_read10_0blocks(void) } logging(LOG_VERBOSE, "Test READ10 0-blocks one block past end-of-LUN"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks + 1, 0, + ret = read10(sd, NULL, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==2^31"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x80000000, 0, block_size, + ret = read10(sd, NULL, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 0-blocks at LBA==-1"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, -1, 0, block_size, + ret = read10(sd, NULL, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_beyond_eol.c b/test-tool/test_read10_beyond_eol.c index 148693a..236ebe4 100644 --- a/test-tool/test_read10_beyond_eol.c +++ b/test-tool/test_read10_beyond_eol.c @@ -40,7 +40,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL,sd->iscsi_lun, num_blocks + 1 - i, + ret = read10(sd, NULL, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -52,7 +52,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0x80000000, + ret = read10(sd, NULL, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -64,7 +64,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, -1, i * block_size, + ret = read10(sd, NULL, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +76,7 @@ test_read10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - 1, + ret = read10(sd, NULL, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_flags.c b/test-tool/test_read10_flags.c index d0ed3f2..2814ae9 100644 --- a/test-tool/test_read10_flags.c +++ b/test-tool/test_read10_flags.c @@ -36,35 +36,35 @@ test_read10_flags(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test READ10 with DPO==1"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==0"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==1 FUA_NV==1"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with FUA==0 FUA_NV==1"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ10 with DPO==1 FUA==1 FUA_NV==1"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read10_rdprotect.c b/test-tool/test_read10_rdprotect.c index 028f30d..b2c764f 100644 --- a/test-tool/test_read10_rdprotect.c +++ b/test-tool/test_read10_rdprotect.c @@ -42,7 +42,7 @@ test_read10_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read10_simple.c b/test-tool/test_read10_simple.c index c142a12..233bde8 100644 --- a/test-tool/test_read10_simple.c +++ b/test-tool/test_read10_simple.c @@ -37,7 +37,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL,sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_read10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_0blocks.c b/test-tool/test_read12_0blocks.c index 09e3827..35ff1f4 100644 --- a/test-tool/test_read12_0blocks.c +++ b/test-tool/test_read12_0blocks.c @@ -30,7 +30,7 @@ test_read12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==0"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = read12(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -46,21 +46,21 @@ test_read12_0blocks(void) } logging(LOG_VERBOSE, "Test READ12 0-blocks one block past end-of-LUN"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = read12(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==2^31"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, block_size, + ret = read12(sd, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 0-blocks at LBA==-1"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = read12(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_beyond_eol.c b/test-tool/test_read12_beyond_eol.c index ea214d2..4afeb14 100644 --- a/test-tool/test_read12_beyond_eol.c +++ b/test-tool/test_read12_beyond_eol.c @@ -40,7 +40,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = read12(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = read12(sd, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -69,7 +69,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = read12(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_read12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = read12(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_flags.c b/test-tool/test_read12_flags.c index 75161b0..095b6b9 100644 --- a/test-tool/test_read12_flags.c +++ b/test-tool/test_read12_flags.c @@ -36,7 +36,7 @@ test_read12_flags(void) CHECK_FOR_SBC; logging(LOG_VERBOSE, "Test READ12 with DPO==1"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,28 +48,28 @@ test_read12_flags(void) logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==0"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==1 FUA_NV==1"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with FUA==0 FUA_NV==1"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ12 with DPO==1 FUA==1 FUA_NV==1"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read12_rdprotect.c b/test-tool/test_read12_rdprotect.c index 125fe7b..9efddfd 100644 --- a/test-tool/test_read12_rdprotect.c +++ b/test-tool/test_read12_rdprotect.c @@ -41,7 +41,7 @@ test_read12_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read12(sd, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read12_simple.c b/test-tool/test_read12_simple.c index 00c720b..8846e98 100644 --- a/test-tool/test_read12_simple.c +++ b/test-tool/test_read12_simple.c @@ -37,7 +37,7 @@ test_read12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read12(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_read12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_0blocks.c b/test-tool/test_read16_0blocks.c index c72ce03..c7e0928 100644 --- a/test-tool/test_read16_0blocks.c +++ b/test-tool/test_read16_0blocks.c @@ -32,7 +32,7 @@ test_read16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==0"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = read16(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -43,21 +43,21 @@ test_read16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks one block past end-of-LUN"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = read16(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==2^63"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, + ret = read16(sd, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 0-blocks at LBA==-1"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = read16(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_beyond_eol.c b/test-tool/test_read16_beyond_eol.c index 47e7b53..6e6138e 100644 --- a/test-tool/test_read16_beyond_eol.c +++ b/test-tool/test_read16_beyond_eol.c @@ -49,7 +49,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = read16(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -67,7 +67,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = read16(sd, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -81,7 +81,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, + ret = read16(sd, 1ULL << (64 - ilog2(block_size)), i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); @@ -96,7 +96,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, + ret = read16(sd, 1ULL << (63 - ilog2(block_size)), i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); @@ -110,7 +110,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = read16(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -123,7 +123,7 @@ test_read16_beyond_eol(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = read16(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_flags.c b/test-tool/test_read16_flags.c index 763aff7..6f355f5 100644 --- a/test-tool/test_read16_flags.c +++ b/test-tool/test_read16_flags.c @@ -36,7 +36,7 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 flags"); logging(LOG_VERBOSE, "Test READ16 with DPO==1"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,28 +48,28 @@ test_read16_flags(void) logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==0"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==1 FUA_NV==1"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with FUA==0 FUA_NV==1"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READ16 with DPO==1 FUA==1 FUA_NV==1"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read16_rdprotect.c b/test-tool/test_read16_rdprotect.c index db81d79..e8ff73a 100644 --- a/test-tool/test_read16_rdprotect.c +++ b/test-tool/test_read16_rdprotect.c @@ -41,7 +41,7 @@ test_read16_rdprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, block_size, block_size, i, 0, 0, 0, 0, NULL, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_read16_simple.c b/test-tool/test_read16_simple.c index 413160d..bc77d93 100644 --- a/test-tool/test_read16_simple.c +++ b/test-tool/test_read16_simple.c @@ -39,7 +39,7 @@ test_read16_simple(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_read16_simple(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read6_beyond_eol.c b/test-tool/test_read6_beyond_eol.c index db0f378..eecf32f 100644 --- a/test-tool/test_read6_beyond_eol.c +++ b/test-tool/test_read6_beyond_eol.c @@ -38,7 +38,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 1-255 blocks one block beyond the end"); for (i = 1; i <= 255; i++) { - ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = read6(sd, num_blocks + 1 - i, i * block_size, block_size, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -52,7 +52,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 1-255 blocks at LBA==0x1fffff"); for (i = 1; i <= 255; i++) { - ret = read6(sd->iscsi_ctx, sd->iscsi_lun, 0x1fffff, + ret = read6(sd, 0x1fffff, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -61,7 +61,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 2-255 blocks all but one block beyond the end"); for (i = 2; i <= 255; i++) { - ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = read6(sd, num_blocks - 1, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read6_simple.c b/test-tool/test_read6_simple.c index 19c436d..f9d1d95 100644 --- a/test-tool/test_read6_simple.c +++ b/test-tool/test_read6_simple.c @@ -34,7 +34,7 @@ test_read6_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 of 1-255 blocks at the start of the LUN"); for (i = 1; i <= 255; i++) { - ret = read6(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read6(sd, 0, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -51,7 +51,7 @@ test_read6_simple(void) CU_PASS("LUN is too big for read-at-eol tests with READ6. Skipping test.\n"); } else { for (i = 1; i <= 255; i++) { - ret = read6(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read6(sd, num_blocks - i, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_readcapacity10_simple.c b/test-tool/test_readcapacity10_simple.c index 242f2db..ca53e10 100644 --- a/test-tool/test_readcapacity10_simple.c +++ b/test-tool/test_readcapacity10_simple.c @@ -34,7 +34,7 @@ test_readcapacity10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic READCAPACITY10"); - ret = readcapacity10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = readcapacity10(sd, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_readcapacity16_alloclen.c b/test-tool/test_readcapacity16_alloclen.c index 0f8c089..92e73cc 100644 --- a/test-tool/test_readcapacity16_alloclen.c +++ b/test-tool/test_readcapacity16_alloclen.c @@ -35,7 +35,7 @@ test_readcapacity16_alloclen(void) logging(LOG_VERBOSE, "Test that READCAPACITY16 with alloc_len 0-15 is not an error"); for (i = 0; i < 16; i++) { - ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, i, + ret = readcapacity16(sd, i, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim SBC-3 support."); diff --git a/test-tool/test_readcapacity16_simple.c b/test-tool/test_readcapacity16_simple.c index 3b8e89f..21d58b4 100644 --- a/test-tool/test_readcapacity16_simple.c +++ b/test-tool/test_readcapacity16_simple.c @@ -34,7 +34,7 @@ test_readcapacity16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that READCAPACITY16 works"); - ret = readcapacity16(sd->iscsi_ctx, sd->iscsi_lun, 16, + ret = readcapacity16(sd, 16, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim support."); diff --git a/test-tool/test_readonly_sbc.c b/test-tool/test_readonly_sbc.c index 6625082..acfced1 100644 --- a/test-tool/test_readonly_sbc.c +++ b/test-tool/test_readonly_sbc.c @@ -41,25 +41,25 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test WRITE10 fails with WRITE_PROTECTED"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write10(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 fails with WRITE_PROTECTED"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write12(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 fails with WRITE_PROTECTED"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, block_size, + ret = write16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE_SAME10 fails with WRITE_PROTECTED"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, + ret = writesame10(sd, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -68,7 +68,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 fails with WRITE_PROTECTED"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, 1, + ret = writesame16(sd, 0, block_size, 1, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -77,7 +77,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME10 UNMAP fails with WRITE_PROTECTED"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 0, 1, 0, 0, NULL, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -86,7 +86,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITE_SAME16 UNMAP fails with WRITE_PROTECTED"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 0, 1, 0, 0, NULL, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -97,7 +97,7 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one physical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = lbppb; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); @@ -107,7 +107,7 @@ test_readonly_sbc(void) logging(LOG_VERBOSE, "Test UNMAP of one logical block fails with WRITE_PROTECTED"); list[0].lba = 0; list[0].num = 1; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_WRITE_PROTECTED); if (ret == -2) { logging(LOG_VERBOSE, "UNMAP not supported on target. Skipped."); @@ -115,7 +115,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY10 fails with WRITE_PROTECTED"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify10(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -124,7 +124,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY12 fails with WRITE_PROTECTED"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify12(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -133,7 +133,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test WRITEVERIFY16 fails with WRITE_PROTECTED"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify16(sd, 0, block_size, block_size, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { @@ -142,7 +142,7 @@ test_readonly_sbc(void) CU_ASSERT_NOT_EQUAL(ret, -1); logging(LOG_VERBOSE, "Test ORWRITE fails with WRITE_PROTECTED"); - ret = orwrite(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = orwrite(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_WRITE_PROTECTED); if (ret == -2) { diff --git a/test-tool/test_report_supported_opcodes_one_command.c b/test-tool/test_report_supported_opcodes_one_command.c index c629602..a8001c8 100644 --- a/test-tool/test_report_supported_opcodes_one_command.c +++ b/test-tool/test_report_supported_opcodes_one_command.c @@ -39,7 +39,7 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "Fetch list of all supported opcodes"); - ret = report_supported_opcodes(sd->iscsi_ctx, &rso_task, sd->iscsi_lun, + ret = report_supported_opcodes(sd, &rso_task, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); @@ -68,7 +68,7 @@ test_report_supported_opcodes_one_command(void) if (rsoc->descriptors[i].servactv) { logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 001b should fail"); - ret = report_supported_opcodes(sd->iscsi_ctx, NULL, sd->iscsi_lun, + ret = report_supported_opcodes(sd, NULL, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -79,7 +79,7 @@ test_report_supported_opcodes_one_command(void) "service actions. Reporting Options 001b " "should work"); ret = report_supported_opcodes( - sd->iscsi_ctx, NULL, sd->iscsi_lun, + sd, NULL, 0, SCSI_REPORT_SUPPORTING_OPCODE, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -92,7 +92,7 @@ test_report_supported_opcodes_one_command(void) logging(LOG_VERBOSE, "This opcode has service actions. " "Reporting Options 002b should work"); ret = report_supported_opcodes( - sd->iscsi_ctx, NULL, sd->iscsi_lun, + sd, NULL, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -103,7 +103,7 @@ test_report_supported_opcodes_one_command(void) "service actions. Reporting Options 002b " "should fail"); ret = report_supported_opcodes( - sd->iscsi_ctx, NULL, sd->iscsi_lun, + sd, NULL, 0, SCSI_REPORT_SUPPORTING_SERVICEACTION, rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa, @@ -121,8 +121,7 @@ test_report_supported_opcodes_one_command(void) rsoc->descriptors[i].opcode, rsoc->descriptors[i].sa); ret = report_supported_opcodes( - sd->iscsi_ctx, &one_task, sd->iscsi_lun, - 0, + sd, &one_task, 0, rsoc->descriptors[i].servactv ? SCSI_REPORT_SUPPORTING_SERVICEACTION : SCSI_REPORT_SUPPORTING_OPCODE, diff --git a/test-tool/test_report_supported_opcodes_rctd.c b/test-tool/test_report_supported_opcodes_rctd.c index 48d494b..011820a 100644 --- a/test-tool/test_report_supported_opcodes_rctd.c +++ b/test-tool/test_report_supported_opcodes_rctd.c @@ -39,7 +39,7 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "without timeout descriptors"); ret = report_supported_opcodes( - sd->iscsi_ctx, &rso_task, sd->iscsi_lun, + sd, &rso_task, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); @@ -76,7 +76,7 @@ test_report_supported_opcodes_rctd(void) logging(LOG_VERBOSE, "Test READ_SUPPORTED_OPCODES report ALL opcodes " "with timeout descriptors"); ret = report_supported_opcodes( - sd->iscsi_ctx, &rso_task, sd->iscsi_lun, + sd, &rso_task, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_report_supported_opcodes_servactv.c b/test-tool/test_report_supported_opcodes_servactv.c index a9867b9..56a6662 100644 --- a/test-tool/test_report_supported_opcodes_servactv.c +++ b/test-tool/test_report_supported_opcodes_servactv.c @@ -37,7 +37,7 @@ test_report_supported_opcodes_servactv(void) ret = report_supported_opcodes( - sd->iscsi_ctx, &rso_task, sd->iscsi_lun, + sd, &rso_task, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_report_supported_opcodes_simple.c b/test-tool/test_report_supported_opcodes_simple.c index 2ce84df..b893833 100644 --- a/test-tool/test_report_supported_opcodes_simple.c +++ b/test-tool/test_report_supported_opcodes_simple.c @@ -34,7 +34,7 @@ test_report_supported_opcodes_simple(void) logging(LOG_VERBOSE, "Test basic READ_SUPPORTED_OPCODES"); ret = report_supported_opcodes( - sd->iscsi_ctx, NULL, sd->iscsi_lun, + sd, NULL, 0, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 1024, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_reserve6_2initiators.c b/test-tool/test_reserve6_2initiators.c index eb0950c..54ed817 100644 --- a/test-tool/test_reserve6_2initiators.c +++ b/test-tool/test_reserve6_2initiators.c @@ -29,14 +29,14 @@ void test_reserve6_2initiators(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test RESERVE6/RELEASE6 across two initiators"); logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,53 +46,53 @@ test_reserve6_2initiators(void) logging(LOG_NORMAL, "Verify that the first initiator can re-RESERVE6 the same reservation"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, sd->iscsi_lun); + ret = reserve6_conflict(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "Try to RELEASE from the second initiator. Should be a nop"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "Test we can still send MODE SENSE from the first initiator"); - ret = mode_sense(sd->iscsi_ctx, sd->iscsi_lun); + ret = mode_sense(sd); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "MODE SENSE should fail from the second initiator"); - ret = mode_sense(iscsic2, sd->iscsi_lun); + ret = mode_sense(&sd2); CU_ASSERT_EQUAL(ret, SCSI_STATUS_RESERVATION_CONFLICT); logging(LOG_NORMAL, "RESERVE6 from the second initiator should still fail"); - ret = reserve6_conflict(iscsic2, sd->iscsi_lun); + ret = reserve6_conflict(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the first initiator"); - ret = release6(sd->iscsi_ctx, sd->iscsi_lun); + ret = release6(sd); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); iscsic2 = NULL; } diff --git a/test-tool/test_reserve6_itnexus_loss.c b/test-tool/test_reserve6_itnexus_loss.c index 88f1fde..369d3e1 100644 --- a/test-tool/test_reserve6_itnexus_loss.c +++ b/test-tool/test_reserve6_itnexus_loss.c @@ -29,14 +29,14 @@ void test_reserve6_itnexus_loss(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on it-nexus loss"); logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,14 +46,14 @@ test_reserve6_itnexus_loss(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, sd->iscsi_lun); + ret = reserve6_conflict(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Disconnect from the target."); @@ -70,15 +70,15 @@ test_reserve6_itnexus_loss(void) } logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); finished: - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); iscsic2 = NULL; } diff --git a/test-tool/test_reserve6_logout.c b/test-tool/test_reserve6_logout.c index 75a7818..85193f1 100644 --- a/test-tool/test_reserve6_logout.c +++ b/test-tool/test_reserve6_logout.c @@ -29,14 +29,14 @@ void test_reserve6_logout(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on logout"); logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -46,14 +46,14 @@ test_reserve6_logout(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_NORMAL, "Try to take out a RESERVE6 from the second initiator"); - ret = reserve6_conflict(iscsic2, sd->iscsi_lun); + ret = reserve6_conflict(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Logout from target"); @@ -68,14 +68,13 @@ test_reserve6_logout(void) } logging(LOG_NORMAL, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_reserve6_lun_reset.c b/test-tool/test_reserve6_lun_reset.c index 49a8404..110d710 100644 --- a/test-tool/test_reserve6_lun_reset.c +++ b/test-tool/test_reserve6_lun_reset.c @@ -29,14 +29,14 @@ void test_reserve6_lun_reset(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on lun reset"); logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -57,21 +57,20 @@ test_reserve6_lun_reset(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_reserve6_simple.c b/test-tool/test_reserve6_simple.c index 267150e..03d22f5 100644 --- a/test-tool/test_reserve6_simple.c +++ b/test-tool/test_reserve6_simple.c @@ -34,7 +34,7 @@ test_reserve6_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic RESERVE6/RELEASE6 commands if supported"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -42,6 +42,6 @@ test_reserve6_simple(void) } CU_ASSERT_EQUAL(ret, 0); - ret = release6(sd->iscsi_ctx, sd->iscsi_lun); + ret = release6(sd); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_reserve6_target_cold_reset.c b/test-tool/test_reserve6_target_cold_reset.c index d6d3b05..8a76ef7 100644 --- a/test-tool/test_reserve6_target_cold_reset.c +++ b/test-tool/test_reserve6_target_cold_reset.c @@ -29,14 +29,14 @@ void test_reserve6_target_cold_reset(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on target cold reset"); logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -56,21 +56,20 @@ test_reserve6_target_cold_reset(void) sleep(3); logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_reserve6_target_warm_reset.c b/test-tool/test_reserve6_target_warm_reset.c index 0ec0141..078d393 100644 --- a/test-tool/test_reserve6_target_warm_reset.c +++ b/test-tool/test_reserve6_target_warm_reset.c @@ -29,14 +29,14 @@ void test_reserve6_target_warm_reset(void) { int ret; - + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on target warm reset"); logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); - ret = reserve6(sd->iscsi_ctx, sd->iscsi_lun); + ret = reserve6(sd); if (ret == -2) { logging(LOG_VERBOSE, "[SKIPPED] Target does not support RESERVE6. Skipping test"); CU_PASS("[SKIPPED] Target does not support RESERVE6. Skipping test"); @@ -57,22 +57,21 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "RESERVE6 from the second initiator should work now"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "RELEASE6 from the second initiator"); - ret = release6(iscsic2, sd->iscsi_lun); + ret = release6(&sd2); CU_ASSERT_EQUAL(ret, 0); - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_logout_sync(sd2.iscsi_ctx); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index e4c7ec1..1cb6d77 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -33,7 +33,7 @@ check_wabereq(void) struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - read10(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, block_size, block_size, + read10(sd, &task_ret, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); @@ -109,7 +109,7 @@ check_unmap(void) uint64_t lba; logging(LOG_VERBOSE, "Read LBA mapping from the target"); - get_lba_status(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, 256, + get_lba_status(sd, &task_ret, 0, 256, EXPECT_STATUS_GOOD); if (task_ret == NULL) { logging(LOG_VERBOSE, "[FAILED] Failed to read LBA mapping " @@ -197,7 +197,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = write16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -209,7 +209,7 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) int ret; unsigned char *rbuf = alloca(256 * block_size); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = read16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -325,7 +325,7 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "Test we can perform basic BLOCK ERASE SANITIZE"); - ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); @@ -341,7 +341,7 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "BLOCK_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "BLOCK ERASE"); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 8, &data); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_sanitize_block_erase_reserved.c b/test-tool/test_sanitize_block_erase_reserved.c index 2c721ed..fa95933 100644 --- a/test-tool/test_sanitize_block_erase_reserved.c +++ b/test-tool/test_sanitize_block_erase_reserved.c @@ -63,7 +63,7 @@ void test_sanitize_block_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE BLOCK_ERASE is not " @@ -79,7 +79,7 @@ void test_sanitize_block_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 27856b3..7170199 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -33,7 +33,7 @@ check_wacereq(void) struct scsi_task *task_ret = NULL; logging(LOG_VERBOSE, "Read one block from LBA 0"); - read10(sd->iscsi_ctx, &task_ret, sd->iscsi_lun, 0, block_size, block_size, + read10(sd, &task_ret, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_PTR_NOT_NULL(task_ret); @@ -106,7 +106,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = write16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -118,7 +118,7 @@ check_lun_is_wiped(unsigned char *buf, uint64_t lba) int ret; unsigned char *rbuf = alloca(256 * block_size); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = read16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -184,7 +184,7 @@ test_sanitize_crypto_erase(void) logging(LOG_VERBOSE, "Test we can perform basic CRYPTO ERASE SANITIZE"); - ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); @@ -202,7 +202,7 @@ return; logging(LOG_VERBOSE, "CRYPTO_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "CRYPTO ERASE"); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 8, &data); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_sanitize_crypto_erase_reserved.c b/test-tool/test_sanitize_crypto_erase_reserved.c index e142305..ea18e97 100644 --- a/test-tool/test_sanitize_crypto_erase_reserved.c +++ b/test-tool/test_sanitize_crypto_erase_reserved.c @@ -63,7 +63,7 @@ void test_sanitize_crypto_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE CRYPTO_ERASE is not " @@ -79,7 +79,7 @@ void test_sanitize_crypto_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_exit_failure_mode.c b/test-tool/test_sanitize_exit_failure_mode.c index 40063ed..a056364 100644 --- a/test-tool/test_sanitize_exit_failure_mode.c +++ b/test-tool/test_sanitize_exit_failure_mode.c @@ -60,7 +60,7 @@ test_sanitize_exit_failure_mode(void) "be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "EXIT_FAILURE_MODE"); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_EXIT_FAILURE_MODE, 8, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_invalid_serviceaction.c b/test-tool/test_sanitize_invalid_serviceaction.c index 1c77037..e40c8e1 100644 --- a/test-tool/test_sanitize_invalid_serviceaction.c +++ b/test-tool/test_sanitize_invalid_serviceaction.c @@ -51,7 +51,7 @@ test_sanitize_invalid_serviceaction(void) logging(LOG_VERBOSE, "Verify that ServiceAction:0x%02d is " "an error.", i); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, i, 0, NULL); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " diff --git a/test-tool/test_sanitize_overwrite.c b/test-tool/test_sanitize_overwrite.c index 0fa7b52..5a908ab 100644 --- a/test-tool/test_sanitize_overwrite.c +++ b/test-tool/test_sanitize_overwrite.c @@ -33,7 +33,7 @@ init_lun_with_data(uint64_t lba) unsigned char *buf = alloca(256 * block_size); memset(buf, 'a', 256 * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = write16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -46,7 +46,7 @@ check_lun_is_wiped(uint64_t lba, char c) unsigned char *rbuf = alloca(256 * block_size); unsigned char *zbuf = alloca(256 * block_size); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = read16(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, rbuf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -124,7 +124,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -140,7 +140,7 @@ test_sanitize_overwrite(void) data.data[2] = (block_size / 2) >> 8; data.data[3] = (block_size / 2 ) & 0xff; - ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -151,7 +151,7 @@ test_sanitize_overwrite(void) data.data[2] = 0; data.data[3] = 4; - ret = sanitize(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -161,7 +161,7 @@ test_sanitize_overwrite(void) logging(LOG_VERBOSE, "Test OVERWRITE with ParamLen:%d is an " "error.", i); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, i, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " @@ -180,7 +180,7 @@ test_sanitize_overwrite(void) data.size = block_size + 8; data.data = alloca(block_size + 8); /* so we can send IP > blocksize */ memset(data.data, 0, data.size); - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, block_size + 5, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " @@ -199,7 +199,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -212,7 +212,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = 0x00; data.data[3] = 0x00; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); @@ -226,7 +226,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = (block_size + 4) >> 8; data.data[3] = (block_size + 4) & 0xff; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_overwrite_reserved.c b/test-tool/test_sanitize_overwrite_reserved.c index 94fef3c..50dc69c 100644 --- a/test-tool/test_sanitize_overwrite_reserved.c +++ b/test-tool/test_sanitize_overwrite_reserved.c @@ -73,7 +73,7 @@ void test_sanitize_overwrite_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE OVERWRITE is not " @@ -89,7 +89,7 @@ void test_sanitize_overwrite_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_invalidfieldincdb(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_readonly.c b/test-tool/test_sanitize_readonly.c index 89f8c8c..7d52ece 100644 --- a/test-tool/test_sanitize_readonly.c +++ b/test-tool/test_sanitize_readonly.c @@ -32,6 +32,7 @@ test_sanitize_readonly(void) int ret; struct iscsi_data data; struct scsi_command_descriptor *cd; + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test SANITIZE with READONLY devices"); @@ -40,14 +41,14 @@ test_sanitize_readonly(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Set Software Write Protect on the second connection"); - ret = set_swp(iscsic2, sd->iscsi_lun); + ret = set_swp(&sd2); CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { return; @@ -55,7 +56,7 @@ test_sanitize_readonly(void) logging(LOG_VERBOSE, "Use TESTUNITREADY to clear unit attention on " "first connection"); - while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { + while (testunitready_clear_ua(sd)) { sleep(1); } @@ -77,7 +78,7 @@ test_sanitize_readonly(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_writeprotected(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } @@ -92,7 +93,7 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_writeprotected(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } @@ -106,21 +107,20 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_writeprotected(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_writeprotected(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "Clear Software Write Protect on the second connection"); - ret = clear_swp(iscsic2, sd->iscsi_lun); + ret = clear_swp(&sd2); logging(LOG_VERBOSE, "Use TESTUNITREADY to clear unit attention on " "first connection"); - while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { + while (testunitready_clear_ua(sd)) { sleep(1); } - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_sanitize_reservations.c b/test-tool/test_sanitize_reservations.c index b3509c8..262dd65 100644 --- a/test-tool/test_sanitize_reservations.c +++ b/test-tool/test_sanitize_reservations.c @@ -32,6 +32,7 @@ test_sanitize_reservations(void) int ret; struct iscsi_data data; struct scsi_command_descriptor *cd; + struct scsi_device sd2; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test SANITIZE with RESERVATIONS"); @@ -40,15 +41,15 @@ test_sanitize_reservations(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, "Create a second connection to the target"); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd->iscsi_lun); - if (iscsic2 == NULL) { + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; } logging(LOG_VERBOSE, "Take out a RESERVE6 from the second " "initiator"); - ret = reserve6(iscsic2, sd->iscsi_lun); + ret = reserve6(&sd2); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +71,7 @@ test_sanitize_reservations(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_conflict(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); CU_ASSERT_EQUAL(ret, 0); } @@ -85,7 +86,7 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_conflict(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } @@ -99,12 +100,10 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_conflict(sd->iscsi_ctx, sd->iscsi_lun, + ret = sanitize_conflict(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); CU_ASSERT_EQUAL(ret, 0); } - - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index f92b864..f2bd11b 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -86,26 +86,26 @@ test_sanitize_reset(void) logging(LOG_VERBOSE, "Verify that the SANITIZE has started and that " "TESTUNITREADY fails with SANITIZE_IN_PROGRESS"); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that STARTSTOPUNIT fails with " "SANITIZE_IN_PROGRESS"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 1, 0, 1, 0, + ret = startstopunit(sd, 1, 0, 1, 0, 1, 0, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that READ16 fails with " "SANITIZE_IN_PROGRESS"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify that INQUIRY is still allowed while " "SANITIZE is in progress"); - ret = inquiry(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 0, 255, + ret = inquiry(sd, NULL, 0, 0, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -157,12 +157,12 @@ test_sanitize_reset(void) } logging(LOG_VERBOSE, "Verify that the SANITIZE is still going."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Wait until the SANITIZE operation has finished"); - while (testunitready_clear_ua(sd->iscsi_ctx, sd->iscsi_lun)) { + while (testunitready_clear_ua(sd)) { sleep(60); } } diff --git a/test-tool/test_startstopunit_noloej.c b/test-tool/test_startstopunit_noloej.c index e311aee..8005658 100644 --- a/test-tool/test_startstopunit_noloej.c +++ b/test-tool/test_startstopunit_noloej.c @@ -39,95 +39,95 @@ test_startstopunit_noloej(void) } logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==0"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 0, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==0 START==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 0, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==0"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 0, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==0 START==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 0, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==0"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 1, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==0 NO_FLUSH==1 START==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 1, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==0"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 1, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test that media is not ejected when LOEJ==0 IMMED==1 NO_FLUSH==1 START==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 1, 0, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, + startstopunit(sd, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_pwrcnd.c b/test-tool/test_startstopunit_pwrcnd.c index c902591..48b6574 100644 --- a/test-tool/test_startstopunit_pwrcnd.c +++ b/test-tool/test_startstopunit_pwrcnd.c @@ -40,18 +40,18 @@ test_startstopunit_pwrcnd(void) logging(LOG_VERBOSE, "Test that media is not ejected when PC!=0"); for (i = 1; i < 16; i++) { - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, i, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is not ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } logging(LOG_VERBOSE, "In case the target did eject the medium, load it again."); - startstopunit(sd->iscsi_ctx, sd->iscsi_lun, 1, 0, 0, 0, 1, 1, + startstopunit(sd, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); } diff --git a/test-tool/test_startstopunit_simple.c b/test-tool/test_startstopunit_simple.c index dd0f90a..951fa83 100644 --- a/test-tool/test_startstopunit_simple.c +++ b/test-tool/test_startstopunit_simple.c @@ -41,7 +41,7 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Media is not removable. STARTSTOPUNIT should fail"); } - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); if (!inq->rmb) { @@ -52,45 +52,45 @@ test_startstopunit_simple(void) logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 1, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can read from the media."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can eject removable the media with IMMED==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test TESTUNITREADY that medium is ejected."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test we can load the removable the media with IMMED==1"); - ret = startstopunit(sd->iscsi_ctx, sd->iscsi_lun, + ret = startstopunit(sd, 0, 0, 0, 0, 1, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Verify we can access the media again."); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_SANITIZE); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_testunitready_simple.c b/test-tool/test_testunitready_simple.c index 7624d54..e56b49d 100644 --- a/test-tool/test_testunitready_simple.c +++ b/test-tool/test_testunitready_simple.c @@ -30,7 +30,7 @@ test_testunitready_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test TESTUNITREADY"); - ret = testunitready(sd->iscsi_ctx, sd->iscsi_lun, + ret = testunitready(sd, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_unmap_0blocks.c b/test-tool/test_unmap_0blocks.c index dddee15..063b798 100644 --- a/test-tool/test_unmap_0blocks.c +++ b/test-tool/test_unmap_0blocks.c @@ -40,7 +40,7 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[0].lba = i; list[0].num = 0; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -49,7 +49,7 @@ test_unmap_0blocks(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 0; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, i, + ret = unmap(sd, 0, list, i, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } @@ -57,7 +57,7 @@ test_unmap_0blocks(void) logging(LOG_VERBOSE, "Test UNMAP of 0 blocks at end-of-LUN"); list[0].lba = num_blocks; list[0].num = 0; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -67,13 +67,13 @@ test_unmap_0blocks(void) list[i].lba = i/2; list[i].num = 0; } - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 256, + ret = unmap(sd, 0, list, 256, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test UNMAP without any descriptors."); - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 0, + ret = unmap(sd, 0, list, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_unmap_simple.c b/test-tool/test_unmap_simple.c index c21b88e..6e6f0fd 100644 --- a/test-tool/test_unmap_simple.c +++ b/test-tool/test_unmap_simple.c @@ -31,7 +31,7 @@ init_lun_with_data(unsigned char *buf, uint64_t lba) int ret; memset(buf, 'a', 256 * block_size); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, lba, 256 * block_size, + ret = write10(sd, lba, 256 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,12 +64,12 @@ test_unmap_simple(void) logging(LOG_VERBOSE, "UNMAP blocks 0-%d", i); list[0].lba = 0; list[0].num = i; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -99,12 +99,12 @@ test_unmap_simple(void) for (i = 0; i < 256; i++) { list[i].lba = i; list[i].num = 1; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, i + 1, + ret = unmap(sd, 0, list, i + 1, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Read blocks 0-%d", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_unmap_vpd.c b/test-tool/test_unmap_vpd.c index 4f11a11..ee060f7 100644 --- a/test-tool/test_unmap_vpd.c +++ b/test-tool/test_unmap_vpd.c @@ -40,7 +40,7 @@ test_unmap_vpd(void) logging(LOG_VERBOSE, "Check if UNMAP is available."); list[0].lba = 0; list[0].num = 0; - ret = unmap(sd->iscsi_ctx, sd->iscsi_lun, 0, list, 1, + ret = unmap(sd, 0, list, 1, EXPECT_STATUS_GOOD); if (ret != 0) { logging(LOG_VERBOSE, "UNMAP is not available. Verify that VPD " diff --git a/test-tool/test_verify10_0blocks.c b/test-tool/test_verify10_0blocks.c index 5f3a2d8..4ac008f 100644 --- a/test-tool/test_verify10_0blocks.c +++ b/test-tool/test_verify10_0blocks.c @@ -30,7 +30,7 @@ test_verify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==0"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = verify10(sd, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks one block past end-of-LUN"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = verify10(sd, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==2^31"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = verify10(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 0-blocks at LBA==-1"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = verify10(sd, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_beyond_eol.c b/test-tool/test_verify10_beyond_eol.c index 73897aa..9b80296 100644 --- a/test-tool/test_verify10_beyond_eol.c +++ b/test-tool/test_verify10_beyond_eol.c @@ -42,7 +42,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = verify10(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = verify10(sd, 0x80000000, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = verify10(sd, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = verify10(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_flags.c b/test-tool/test_verify10_flags.c index 1cb7600..5bb109f 100644 --- a/test-tool/test_verify10_flags.c +++ b/test-tool/test_verify10_flags.c @@ -34,14 +34,14 @@ test_verify10_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY10 flags"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY10 with DPO==1"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify10(sd, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_verify10_flags(void) logging(LOG_VERBOSE, "Test VERIFY10 with BYTCHK==1"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify10(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch.c b/test-tool/test_verify10_mismatch.c index a9c95a9..93e0c98 100644 --- a/test-tool/test_verify10_mismatch.c +++ b/test-tool/test_verify10_mismatch.c @@ -40,7 +40,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify10(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify10_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify10_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_mismatch_no_cmp.c b/test-tool/test_verify10_mismatch_no_cmp.c index 3f60ad8..f8637b1 100644 --- a/test-tool/test_verify10_mismatch_no_cmp.c +++ b/test-tool/test_verify10_mismatch_no_cmp.c @@ -40,7 +40,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -49,7 +49,7 @@ test_verify10_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify10(sd, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,7 +67,7 @@ test_verify10_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -76,7 +76,7 @@ test_verify10_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_simple.c b/test-tool/test_verify10_simple.c index 6d9c515..dca1139 100644 --- a/test-tool/test_verify10_simple.c +++ b/test-tool/test_verify10_simple.c @@ -38,12 +38,12 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify10(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,12 +59,12 @@ test_verify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify10_vrprotect.c b/test-tool/test_verify10_vrprotect.c index dc769cb..171e53c 100644 --- a/test-tool/test_verify10_vrprotect.c +++ b/test-tool/test_verify10_vrprotect.c @@ -40,12 +40,12 @@ test_verify10_vrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify10(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify10(sd, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_verify12_0blocks.c b/test-tool/test_verify12_0blocks.c index 6813d10..ea1b3d0 100644 --- a/test-tool/test_verify12_0blocks.c +++ b/test-tool/test_verify12_0blocks.c @@ -30,7 +30,7 @@ test_verify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==0"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = verify12(sd, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks one block past end-of-LUN"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = verify12(sd, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==2^31"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = verify12(sd, 0x80000000, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 0-blocks at LBA==-1"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = verify12(sd, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_beyond_eol.c b/test-tool/test_verify12_beyond_eol.c index 3d153a9..4d56cf2 100644 --- a/test-tool/test_verify12_beyond_eol.c +++ b/test-tool/test_verify12_beyond_eol.c @@ -42,7 +42,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = verify12(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = verify12(sd, 0x80000000, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = verify12(sd, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = verify12(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_flags.c b/test-tool/test_verify12_flags.c index 4b6a76d..6c1900a 100644 --- a/test-tool/test_verify12_flags.c +++ b/test-tool/test_verify12_flags.c @@ -35,14 +35,14 @@ test_verify12_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY12 flags"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = read12(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY12 with DPO==1"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify12(sd, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,7 +54,7 @@ test_verify12_flags(void) logging(LOG_VERBOSE, "Test VERIFY12 with BYTCHK==1"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify12(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_mismatch.c b/test-tool/test_verify12_mismatch.c index 92ffbbf..03f2c50 100644 --- a/test-tool/test_verify12_mismatch.c +++ b/test-tool/test_verify12_mismatch.c @@ -40,7 +40,7 @@ test_verify12_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read12(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -48,7 +48,7 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify12(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify12_mismatch(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify12_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_mismatch_no_cmp.c b/test-tool/test_verify12_mismatch_no_cmp.c index e982833..0d948ce 100644 --- a/test-tool/test_verify12_mismatch_no_cmp.c +++ b/test-tool/test_verify12_mismatch_no_cmp.c @@ -40,7 +40,7 @@ test_verify12_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read12(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -48,7 +48,7 @@ test_verify12_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify12(sd, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -66,7 +66,7 @@ test_verify12_mismatch_no_cmp(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -75,7 +75,7 @@ test_verify12_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_simple.c b/test-tool/test_verify12_simple.c index 0dd6b81..3d43b90 100644 --- a/test-tool/test_verify12_simple.c +++ b/test-tool/test_verify12_simple.c @@ -38,12 +38,12 @@ test_verify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify12(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,12 +59,12 @@ test_verify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify12_vrprotect.c b/test-tool/test_verify12_vrprotect.c index 30df81e..f17c584 100644 --- a/test-tool/test_verify12_vrprotect.c +++ b/test-tool/test_verify12_vrprotect.c @@ -41,10 +41,10 @@ test_verify12_vrprotect(void) logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, block_size, + ret = read10(sd, NULL, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify12(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify12(sd, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_verify16_0blocks.c b/test-tool/test_verify16_0blocks.c index 15ecb04..2805ef0 100644 --- a/test-tool/test_verify16_0blocks.c +++ b/test-tool/test_verify16_0blocks.c @@ -30,7 +30,7 @@ test_verify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==0"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = verify16(sd, 0, 0, block_size, 0, 0, 1, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -41,21 +41,21 @@ test_verify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks one block past end-of-LUN"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = verify16(sd, num_blocks + 1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==2^63"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, + ret = verify16(sd, 0x8000000000000000ULL, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test VERIFY16 0-blocks at LBA==-1"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = verify16(sd, -1, 0, block_size, 0, 0, 1, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_beyond_eol.c b/test-tool/test_verify16_beyond_eol.c index 59aae3c..e494b97 100644 --- a/test-tool/test_verify16_beyond_eol.c +++ b/test-tool/test_verify16_beyond_eol.c @@ -39,7 +39,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = verify16(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -57,7 +57,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = verify16(sd, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +70,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = verify16(sd, -1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_verify16_beyond_eol(void) break; } - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = verify16(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 1, buf, EXPECT_LBA_OOB); diff --git a/test-tool/test_verify16_flags.c b/test-tool/test_verify16_flags.c index 4ebfa18..a91608a 100644 --- a/test-tool/test_verify16_flags.c +++ b/test-tool/test_verify16_flags.c @@ -35,12 +35,12 @@ test_verify16_flags(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test VERIFY16 flags"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Test VERIFY16 with DPO==1"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify16(sd, 0, block_size, block_size, 0, 1, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -52,7 +52,7 @@ test_verify16_flags(void) logging(LOG_VERBOSE, "Test VERIFY16 with BYTCHK==1"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify16(sd, 0, block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_mismatch.c b/test-tool/test_verify16_mismatch.c index d8d31e9..61701be 100644 --- a/test-tool/test_verify16_mismatch.c +++ b/test-tool/test_verify16_mismatch.c @@ -41,7 +41,7 @@ test_verify16_mismatch(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -49,7 +49,7 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify16(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); if (ret == -2) { @@ -68,7 +68,7 @@ test_verify16_mismatch(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -77,7 +77,7 @@ test_verify16_mismatch(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_MISCOMPARE); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_mismatch_no_cmp.c b/test-tool/test_verify16_mismatch_no_cmp.c index 3ad82cb..0c4fe39 100644 --- a/test-tool/test_verify16_mismatch_no_cmp.c +++ b/test-tool/test_verify16_mismatch_no_cmp.c @@ -41,7 +41,7 @@ test_verify16_mismatch_no_cmp(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -49,7 +49,7 @@ test_verify16_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify16(sd, 0, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -68,7 +68,7 @@ test_verify16_mismatch_no_cmp(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -77,7 +77,7 @@ test_verify16_mismatch_no_cmp(void) buf[offset] ^= 'X'; logging(LOG_VERBOSE, "Flip some bits in the data"); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_simple.c b/test-tool/test_verify16_simple.c index 6389782..66c266f 100644 --- a/test-tool/test_verify16_simple.c +++ b/test-tool/test_verify16_simple.c @@ -38,10 +38,10 @@ test_verify16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, i * block_size, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = verify16(sd, 0, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,12 +58,12 @@ test_verify16_simple(void) break; } - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = verify16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 1, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_verify16_vrprotect.c b/test-tool/test_verify16_vrprotect.c index 1f91be3..cd0dc22 100644 --- a/test-tool/test_verify16_vrprotect.c +++ b/test-tool/test_verify16_vrprotect.c @@ -41,10 +41,10 @@ test_verify16_vrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = read16(sd, 0, block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); - ret = verify16(sd->iscsi_ctx, sd->iscsi_lun, 0, block_size, + ret = verify16(sd, 0, block_size, block_size, i, 0, 1, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_write10_0blocks.c b/test-tool/test_write10_0blocks.c index 8621841..6967174 100644 --- a/test-tool/test_write10_0blocks.c +++ b/test-tool/test_write10_0blocks.c @@ -32,7 +32,7 @@ test_write10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==0"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = write10(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_write10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITE10 0-blocks one block past end-of-LUN"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = write10(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==2^31"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = write10(sd, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 0-blocks at LBA==-1"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = write10(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_beyond_eol.c b/test-tool/test_write10_beyond_eol.c index 52f74e4..1e1ab09 100644 --- a/test-tool/test_write10_beyond_eol.c +++ b/test-tool/test_write10_beyond_eol.c @@ -44,7 +44,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = write10(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = write10(sd, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = write10(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_write10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = write10(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_flags.c b/test-tool/test_write10_flags.c index 9961116..f3305a8 100644 --- a/test-tool/test_write10_flags.c +++ b/test-tool/test_write10_flags.c @@ -38,7 +38,7 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 flags"); logging(LOG_VERBOSE, "Test WRITE10 with DPO==1"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_write10_flags(void) logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==0"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==1 FUA_NV==1"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with FUA==0 FUA_NV==1"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE10 with DPO==1 FUA==1 FUA_NV==1"); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index a2e27f6..07f8931 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -241,7 +241,7 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write10(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -289,7 +289,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, + ret = read10(sd, NULL, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -317,7 +317,7 @@ test_write10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write10(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -365,7 +365,7 @@ test_write10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, + ret = read10(sd, NULL, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_simple.c b/test-tool/test_write10_simple.c index 74f21ab..aa50f82 100644 --- a/test-tool/test_write10_simple.c +++ b/test-tool/test_write10_simple.c @@ -42,7 +42,7 @@ test_write10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write10(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -58,7 +58,7 @@ test_write10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write10_wrprotect.c b/test-tool/test_write10_wrprotect.c index acd4bc5..84ae438 100644 --- a/test-tool/test_write10_wrprotect.c +++ b/test-tool/test_write10_wrprotect.c @@ -44,7 +44,7 @@ test_write10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_write12_0blocks.c b/test-tool/test_write12_0blocks.c index 81f9765..9d5cae3 100644 --- a/test-tool/test_write12_0blocks.c +++ b/test-tool/test_write12_0blocks.c @@ -37,7 +37,7 @@ test_write12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==0"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = write12(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_write12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks one block past end-of-LUN"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = write12(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==2^31"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = write12(sd, 0x80000000, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 0-blocks at LBA==-1"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = write12(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_beyond_eol.c b/test-tool/test_write12_beyond_eol.c index ceb8c8d..a466356 100644 --- a/test-tool/test_write12_beyond_eol.c +++ b/test-tool/test_write12_beyond_eol.c @@ -44,7 +44,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = write12(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = write12(sd, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = write12(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_write12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = write12(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_flags.c b/test-tool/test_write12_flags.c index c610707..f2f68d4 100644 --- a/test-tool/test_write12_flags.c +++ b/test-tool/test_write12_flags.c @@ -38,7 +38,7 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 flags"); logging(LOG_VERBOSE, "Test WRITE12 with DPO==1"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -50,28 +50,28 @@ test_write12_flags(void) logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==0"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==1 FUA_NV==1"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with FUA==0 FUA_NV==1"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE12 with DPO==1 FUA==1 FUA_NV==1"); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_residuals.c b/test-tool/test_write12_residuals.c index 0551bc6..036f5df 100644 --- a/test-tool/test_write12_residuals.c +++ b/test-tool/test_write12_residuals.c @@ -241,7 +241,7 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write12(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -289,7 +289,7 @@ test_write12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read12(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -317,7 +317,7 @@ test_write12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write12(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -365,7 +365,7 @@ test_write12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read12(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_simple.c b/test-tool/test_write12_simple.c index 6e4b5ec..1d9860b 100644 --- a/test-tool/test_write12_simple.c +++ b/test-tool/test_write12_simple.c @@ -41,7 +41,7 @@ test_write12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write12(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_write12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write12_wrprotect.c b/test-tool/test_write12_wrprotect.c index dc573ba..b48ea12 100644 --- a/test-tool/test_write12_wrprotect.c +++ b/test-tool/test_write12_wrprotect.c @@ -45,7 +45,7 @@ test_write12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write12(sd, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_write16_0blocks.c b/test-tool/test_write16_0blocks.c index dd8b9c5..8eb6c8f 100644 --- a/test-tool/test_write16_0blocks.c +++ b/test-tool/test_write16_0blocks.c @@ -33,7 +33,7 @@ test_write16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==0"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = write16(sd, 0, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_write16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks one block past end-of-LUN"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = write16(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==2^63"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, 0, + ret = write16(sd, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 0-blocks at LBA==-1"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = write16(sd, -1, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_beyond_eol.c b/test-tool/test_write16_beyond_eol.c index 78ba03c..6da51d6 100644 --- a/test-tool/test_write16_beyond_eol.c +++ b/test-tool/test_write16_beyond_eol.c @@ -42,7 +42,7 @@ test_write16_beyond_eol(void) break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = write16(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = write16(sd, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -71,7 +71,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = write16(sd, -1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -83,7 +83,7 @@ test_write16_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = write16(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_flags.c b/test-tool/test_write16_flags.c index 16f2bfe..3750c8a 100644 --- a/test-tool/test_write16_flags.c +++ b/test-tool/test_write16_flags.c @@ -39,7 +39,7 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 flags"); logging(LOG_VERBOSE, "Test WRITE16 with DPO==1"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, 0, 1, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -51,28 +51,28 @@ test_write16_flags(void) logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==0"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, 0, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==1 FUA_NV==1"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, 0, 0, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with FUA==0 FUA_NV==1"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, 0, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITE16 with DPO==1 FUA==1 FUA_NV==1"); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, 0, 1, 1, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index ae6bfbc..6a6b46b 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -236,7 +236,7 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write16(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -284,7 +284,7 @@ test_write16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read16(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -312,7 +312,7 @@ test_write16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write16(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -360,7 +360,7 @@ test_write16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read16(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_simple.c b/test-tool/test_write16_simple.c index 3e1de5a..10f54ea 100644 --- a/test-tool/test_write16_simple.c +++ b/test-tool/test_write16_simple.c @@ -43,7 +43,7 @@ test_write16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,7 +59,7 @@ test_write16_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_write16_wrprotect.c b/test-tool/test_write16_wrprotect.c index 778ff10..242dc2a 100644 --- a/test-tool/test_write16_wrprotect.c +++ b/test-tool/test_write16_wrprotect.c @@ -44,7 +44,7 @@ test_write16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, block_size, block_size, i, 0, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writesame10_0blocks.c b/test-tool/test_writesame10_0blocks.c index 6151faf..cc07488 100644 --- a/test-tool/test_writesame10_0blocks.c +++ b/test-tool/test_writesame10_0blocks.c @@ -40,7 +40,7 @@ test_writesame10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -59,21 +59,21 @@ test_writesame10_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks one block past end-of-LUN"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, + ret = writesame10(sd, num_blocks + 1, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==2^31"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = writesame10(sd, 0x80000000, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==-1"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writesame10(sd, -1, block_size, 0, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_beyond_eol.c b/test-tool/test_writesame10_beyond_eol.c index ce53a6c..183455e 100644 --- a/test-tool/test_writesame10_beyond_eol.c +++ b/test-tool/test_writesame10_beyond_eol.c @@ -43,7 +43,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i + 1, + ret = writesame10(sd, num_blocks - i + 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -56,7 +56,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = writesame10(sd, 0x80000000, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -65,7 +65,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writesame10(sd, -1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -74,7 +74,7 @@ test_writesame10_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME10 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = writesame10(sd, num_blocks - 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_simple.c b/test-tool/test_writesame10_simple.c index 36b197a..7f33baf 100644 --- a/test-tool/test_writesame10_simple.c +++ b/test-tool/test_writesame10_simple.c @@ -40,7 +40,7 @@ test_writesame10_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -52,7 +52,7 @@ test_writesame10_simple(void) logging(LOG_VERBOSE, "Test WRITESAME10 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame10(sd, num_blocks - i, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap.c b/test-tool/test_writesame10_unmap.c index d33a66f..07d7870 100644 --- a/test-tool/test_writesame10_unmap.c +++ b/test-tool/test_writesame10_unmap.c @@ -44,14 +44,14 @@ test_writesame10_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -62,7 +62,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -83,14 +83,14 @@ test_writesame10_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame10(sd, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,7 +101,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -118,7 +118,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Verify that WRITESAME10 ANCHOR==1 + UNMAP==0 is " "invalid"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 1, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -128,13 +128,13 @@ test_writesame10_unmap(void) if (inq_lbp->anc_sup) { logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME10 ANCHOR==1 + UNMAP==0 no " "ANC_SUP so expecting to fail"); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); } @@ -159,14 +159,14 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write10(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); memset(buf, 0, block_size); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -177,7 +177,7 @@ test_writesame10_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, + ret = read10(sd, NULL, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -196,7 +196,7 @@ test_writesame10_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap_unaligned.c b/test-tool/test_writesame10_unmap_unaligned.c index 9147f27..3a121eb 100644 --- a/test-tool/test_writesame10_unmap_unaligned.c +++ b/test-tool/test_writesame10_unmap_unaligned.c @@ -41,7 +41,7 @@ test_writesame10_unmap_unaligned(void) logging(LOG_VERBOSE, "Test that unaligned WRITESAME10 Unmap succeeds. LBPPB==%d", lbppb); for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10 at LBA:%d", lbppb - i, i); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, i, + ret = writesame10(sd, i, block_size, lbppb - i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame10_unmap_until_end.c b/test-tool/test_writesame10_unmap_until_end.c index 05dffa3..6b9bfdd 100644 --- a/test-tool/test_writesame10_unmap_until_end.c +++ b/test-tool/test_writesame10_unmap_until_end.c @@ -47,13 +47,13 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME10", i); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame10(sd, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,7 +64,7 @@ test_writesame10_unmap_until_end(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, num_blocks - i, + ret = read10(sd, NULL, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame10_unmap_vpd.c b/test-tool/test_writesame10_unmap_vpd.c index aece9d6..736fac9 100644 --- a/test-tool/test_writesame10_unmap_vpd.c +++ b/test-tool/test_writesame10_unmap_vpd.c @@ -42,7 +42,7 @@ test_writesame10_unmap_vpd(void) logging(LOG_VERBOSE, "Check if WRITESAME10 can be used for UNMAP."); logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME10"); memset(buf, 0, block_size); - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret != 0) { diff --git a/test-tool/test_writesame10_wrprotect.c b/test-tool/test_writesame10_wrprotect.c index c6f1a91..ad02d06 100644 --- a/test-tool/test_writesame10_wrprotect.c +++ b/test-tool/test_writesame10_wrprotect.c @@ -45,7 +45,7 @@ test_writesame10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame10(sd, 0, block_size, 1, 0, 0, i, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_writesame16_0blocks.c b/test-tool/test_writesame16_0blocks.c index b547c9e..68cff38 100644 --- a/test-tool/test_writesame16_0blocks.c +++ b/test-tool/test_writesame16_0blocks.c @@ -34,7 +34,7 @@ test_writesame16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 0, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -54,21 +54,21 @@ test_writesame16_0blocks(void) } logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, + ret = writesame16(sd, num_blocks + 1, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = writesame16(sd, 0x8000000000000000ULL, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writesame16(sd, -1, block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_beyond_eol.c b/test-tool/test_writesame16_beyond_eol.c index 12ea43a..4a68ace 100644 --- a/test-tool/test_writesame16_beyond_eol.c +++ b/test-tool/test_writesame16_beyond_eol.c @@ -38,7 +38,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks one block beyond the end"); memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i + 1, + ret = writesame16(sd, num_blocks - i + 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -52,7 +52,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = writesame16(sd, 0x8000000000000000ULL, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -61,7 +61,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 1-256 blocks at LBA==-1"); for (i = 1; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writesame16(sd, -1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -70,7 +70,7 @@ test_writesame16_beyond_eol(void) logging(LOG_VERBOSE, "Test WRITESAME16 2-256 blocks all but one block beyond the end"); for (i = 2; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = writesame16(sd, num_blocks - 1, block_size, i, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_simple.c b/test-tool/test_writesame16_simple.c index 3ec0bd1..ac7eded 100644 --- a/test-tool/test_writesame16_simple.c +++ b/test-tool/test_writesame16_simple.c @@ -40,7 +40,7 @@ test_writesame16_simple(void) memset(buf, 0, block_size); for (i = 1; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -53,7 +53,7 @@ test_writesame16_simple(void) logging(LOG_VERBOSE, "Test WRITESAME16 of 1-256 blocks at the end of the LUN"); for (i = 1; i <= 256; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame16(sd, num_blocks - i, block_size, i, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_unmap.c b/test-tool/test_writesame16_unmap.c index 02e2ddb..04280c8 100644 --- a/test-tool/test_writesame16_unmap.c +++ b/test-tool/test_writesame16_unmap.c @@ -46,12 +46,12 @@ test_writesame16_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -66,7 +66,7 @@ test_writesame16_unmap(void) "blocks back and verify they are all zero"); logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -84,14 +84,14 @@ test_writesame16_unmap(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame16(sd, num_blocks - i, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -101,7 +101,7 @@ test_writesame16_unmap(void) "blocks back and verify they are all zero"); logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -115,7 +115,7 @@ test_writesame16_unmap(void) } logging(LOG_VERBOSE, "Verify that WRITESAME16 ANCHOR==1 + UNMAP==0 is invalid"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 1, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -125,12 +125,12 @@ test_writesame16_unmap(void) if (inq_lbp->anc_sup) { logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0"); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_STATUS_GOOD); } else { logging(LOG_VERBOSE, "Test WRITESAME16 ANCHOR==1 + UNMAP==0 no ANC_SUP so expecting to fail"); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 1, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); } @@ -156,14 +156,14 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -174,7 +174,7 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -191,7 +191,7 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -208,14 +208,14 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, i * block_size); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = write16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -226,7 +226,7 @@ test_writesame16_unmap(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = read16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); @@ -243,7 +243,7 @@ test_writesame16_unmap(void) "INVALID_FIELD_IN_CDB."); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, i, 0, 1, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writesame16_unmap_unaligned.c b/test-tool/test_writesame16_unmap_unaligned.c index 7e53a47..b25c499 100644 --- a/test-tool/test_writesame16_unmap_unaligned.c +++ b/test-tool/test_writesame16_unmap_unaligned.c @@ -41,7 +41,7 @@ test_writesame16_unmap_unaligned(void) for (i = 1; i < lbppb; i++) { logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16 at LBA:%d", lbppb - i, i); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, i, 0, lbppb - i, + ret = writesame16(sd, i, 0, lbppb - i, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { diff --git a/test-tool/test_writesame16_unmap_until_end.c b/test-tool/test_writesame16_unmap_until_end.c index c9db6e9..76e0d58 100644 --- a/test-tool/test_writesame16_unmap_until_end.c +++ b/test-tool/test_writesame16_unmap_until_end.c @@ -47,11 +47,11 @@ test_writesame16_unmap_until_end(void) for (i = 1; i <= 256; i++) { logging(LOG_VERBOSE, "Write %d blocks of 0xFF", i); memset(buf, 0xff, block_size * i); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = write16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); logging(LOG_VERBOSE, "Unmap %d blocks using WRITESAME16", i); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writesame16(sd, num_blocks - i, 0, i, 0, 1, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -67,7 +67,7 @@ test_writesame16_unmap_until_end(void) logging(LOG_VERBOSE, "Read %d blocks and verify they " "are now zero", i); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = read16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame16_unmap_vpd.c b/test-tool/test_writesame16_unmap_vpd.c index c6f1108..81c8c4c 100644 --- a/test-tool/test_writesame16_unmap_vpd.c +++ b/test-tool/test_writesame16_unmap_vpd.c @@ -43,7 +43,7 @@ test_writesame16_unmap_vpd(void) logging(LOG_VERBOSE, "Unmap 1 block using WRITESAME16"); memset(buf, 0, block_size); - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret != 0) { diff --git a/test-tool/test_writesame16_wrprotect.c b/test-tool/test_writesame16_wrprotect.c index dd38a4d..001306c 100644 --- a/test-tool/test_writesame16_wrprotect.c +++ b/test-tool/test_writesame16_wrprotect.c @@ -45,7 +45,7 @@ test_writesame16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writesame16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writesame16(sd, 0, block_size, 1, 0, 0, i, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { diff --git a/test-tool/test_writeverify10_0blocks.c b/test-tool/test_writeverify10_0blocks.c index 7ee7d46..bda5bbe 100644 --- a/test-tool/test_writeverify10_0blocks.c +++ b/test-tool/test_writeverify10_0blocks.c @@ -37,7 +37,7 @@ test_writeverify10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==0"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = writeverify10(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_writeverify10_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks one block past end-of-LUN"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = writeverify10(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==2^31"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = writeverify10(sd, 0x80000000, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 0-blocks at LBA==-1"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = writeverify10(sd, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_beyond_eol.c b/test-tool/test_writeverify10_beyond_eol.c index 705124d..fa6778a 100644 --- a/test-tool/test_writeverify10_beyond_eol.c +++ b/test-tool/test_writeverify10_beyond_eol.c @@ -44,7 +44,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = writeverify10(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = writeverify10(sd, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = writeverify10(sd, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify10_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = writeverify10(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_flags.c b/test-tool/test_writeverify10_flags.c index 2cf59be..2461cbe 100644 --- a/test-tool/test_writeverify10_flags.c +++ b/test-tool/test_writeverify10_flags.c @@ -38,7 +38,7 @@ test_writeverify10_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY10 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY10 with DPO==1"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify10(sd, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify10_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY10 with BYTCHK==1"); - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify10(sd, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index 79b6d73..6c8069a 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -44,7 +44,7 @@ test_writeverify10_residuals(void) CHECK_FOR_SBC; /* check if writeverify10 is supported */ - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = writeverify10(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -246,7 +246,7 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write10(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -294,7 +294,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, + ret = read10(sd, NULL, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -322,7 +322,7 @@ test_writeverify10_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write10(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write10(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -370,7 +370,7 @@ test_writeverify10_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read10(sd->iscsi_ctx, NULL, sd->iscsi_lun, 0, 2* block_size, + ret = read10(sd, NULL, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_simple.c b/test-tool/test_writeverify10_simple.c index d59446d..4e64767 100644 --- a/test-tool/test_writeverify10_simple.c +++ b/test-tool/test_writeverify10_simple.c @@ -41,7 +41,7 @@ test_writeverify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = writeverify10(sd, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_writeverify10_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writeverify10(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify10_wrprotect.c b/test-tool/test_writeverify10_wrprotect.c index efb1cc7..8f38524 100644 --- a/test-tool/test_writeverify10_wrprotect.c +++ b/test-tool/test_writeverify10_wrprotect.c @@ -44,7 +44,7 @@ test_writeverify10_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify10(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify10(sd, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writeverify12_0blocks.c b/test-tool/test_writeverify12_0blocks.c index 893f641..f23287a 100644 --- a/test-tool/test_writeverify12_0blocks.c +++ b/test-tool/test_writeverify12_0blocks.c @@ -37,7 +37,7 @@ test_writeverify12_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==0"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, block_size, + ret = writeverify12(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -48,21 +48,21 @@ test_writeverify12_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks one block past end-of-LUN"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, 0, + ret = writeverify12(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==2^31"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, 0, + ret = writeverify12(sd, 0x80000000, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 0-blocks at LBA==-1"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, -1, 0, block_size, + ret = writeverify12(sd, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_beyond_eol.c b/test-tool/test_writeverify12_beyond_eol.c index be503fd..009ba1f 100644 --- a/test-tool/test_writeverify12_beyond_eol.c +++ b/test-tool/test_writeverify12_beyond_eol.c @@ -44,7 +44,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = writeverify12(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -61,7 +61,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0x80000000, + ret = writeverify12(sd, 0x80000000, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -73,7 +73,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, -1, i * block_size, + ret = writeverify12(sd, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify12_beyond_eol(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = writeverify12(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_flags.c b/test-tool/test_writeverify12_flags.c index 13a2abc..5c0a6e3 100644 --- a/test-tool/test_writeverify12_flags.c +++ b/test-tool/test_writeverify12_flags.c @@ -38,7 +38,7 @@ test_writeverify12_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY12 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY12 with DPO==1"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify12(sd, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify12_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY12 with BYTCHK==1"); - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify12(sd, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index 4285dea..ffe91f7 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -44,7 +44,7 @@ test_writeverify12_residuals(void) CHECK_FOR_SBC; /* check if writeverify12 is supported */ - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = writeverify12(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -246,7 +246,7 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write12(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -294,7 +294,7 @@ test_writeverify12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read12(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -322,7 +322,7 @@ test_writeverify12_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write12(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -370,7 +370,7 @@ test_writeverify12_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read12(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read12(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_simple.c b/test-tool/test_writeverify12_simple.c index 57e14e1..8ddefa3 100644 --- a/test-tool/test_writeverify12_simple.c +++ b/test-tool/test_writeverify12_simple.c @@ -41,7 +41,7 @@ test_writeverify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = writeverify12(sd, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -57,7 +57,7 @@ test_writeverify12_simple(void) if (maximum_transfer_length && maximum_transfer_length < i) { break; } - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writeverify12(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify12_wrprotect.c b/test-tool/test_writeverify12_wrprotect.c index 0e00407..8923d65 100644 --- a/test-tool/test_writeverify12_wrprotect.c +++ b/test-tool/test_writeverify12_wrprotect.c @@ -44,7 +44,7 @@ test_writeverify12_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify12(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify12(sd, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); diff --git a/test-tool/test_writeverify16_0blocks.c b/test-tool/test_writeverify16_0blocks.c index c00a623..cfbe32b 100644 --- a/test-tool/test_writeverify16_0blocks.c +++ b/test-tool/test_writeverify16_0blocks.c @@ -33,7 +33,7 @@ test_writeverify16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==0"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify16(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -44,21 +44,21 @@ test_writeverify16_0blocks(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks one block past end-of-LUN"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1, + ret = writeverify16(sd, num_blocks + 1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==2^63"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = writeverify16(sd, 0x8000000000000000ULL, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 0-blocks at LBA==-1"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writeverify16(sd, -1, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_beyond_eol.c b/test-tool/test_writeverify16_beyond_eol.c index 4ee704f..11e5b81 100644 --- a/test-tool/test_writeverify16_beyond_eol.c +++ b/test-tool/test_writeverify16_beyond_eol.c @@ -41,7 +41,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks + 1 - i, + ret = writeverify16(sd, num_blocks + 1 - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { @@ -59,7 +59,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0x8000000000000000ULL, + ret = writeverify16(sd, 0x8000000000000000ULL, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -72,7 +72,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, -1, + ret = writeverify16(sd, -1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -85,7 +85,7 @@ test_writeverify16_beyond_eol(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - 1, + ret = writeverify16(sd, num_blocks - 1, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_flags.c b/test-tool/test_writeverify16_flags.c index 62d8d13..6316b83 100644 --- a/test-tool/test_writeverify16_flags.c +++ b/test-tool/test_writeverify16_flags.c @@ -38,7 +38,7 @@ test_writeverify16_flags(void) logging(LOG_VERBOSE, "Test WRITEVERIFY16 flags"); logging(LOG_VERBOSE, "Test WRITEVERIFY16 with DPO==1"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify16(sd, 0, block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -49,7 +49,7 @@ test_writeverify16_flags(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITEVERIFY16 with BYTCHK==1"); - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify16(sd, 0, block_size, block_size, 0, 0, 1, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index a648551..281e3f0 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -44,7 +44,7 @@ test_writeverify16_residuals(void) CHECK_FOR_SBC; /* check if writeverify16 is supported */ - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, + ret = writeverify16(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -247,7 +247,7 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write16(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -295,7 +295,7 @@ test_writeverify16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read16(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -323,7 +323,7 @@ test_writeverify16_residuals(void) logging(LOG_VERBOSE, "Write two blocks of 'a'"); memset(buf, 'a', 10000); - ret = write16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2 * block_size, + ret = write16(sd, 0, 2 * block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -371,7 +371,7 @@ test_writeverify16_residuals(void) task = NULL; logging(LOG_VERBOSE, "Read the two blocks"); - ret = read16(sd->iscsi_ctx, sd->iscsi_lun, 0, 2* block_size, + ret = read16(sd, 0, 2* block_size, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_simple.c b/test-tool/test_writeverify16_simple.c index ff4973d..581b055 100644 --- a/test-tool/test_writeverify16_simple.c +++ b/test-tool/test_writeverify16_simple.c @@ -43,7 +43,7 @@ test_writeverify16_simple(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, i * block_size, + ret = writeverify16(sd, 0, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -60,7 +60,7 @@ test_writeverify16_simple(void) break; } - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, num_blocks - i, + ret = writeverify16(sd, num_blocks - i, i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_writeverify16_wrprotect.c b/test-tool/test_writeverify16_wrprotect.c index 6ec225d..b104c88 100644 --- a/test-tool/test_writeverify16_wrprotect.c +++ b/test-tool/test_writeverify16_wrprotect.c @@ -46,7 +46,7 @@ test_writeverify16_wrprotect(void) if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) { logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail."); for (i = 1; i < 8; i++) { - ret = writeverify16(sd->iscsi_ctx, sd->iscsi_lun, 0, + ret = writeverify16(sd, 0, block_size, block_size, i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); From 74a50052cd5fd73137fbddee089bd18794727562 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 18:37:35 -0700 Subject: [PATCH 24/53] TESTS: get rid of iscsic2 Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-test-cu.c | 36 ++---------------- test-tool/iscsi-test-cu.h | 2 - test-tool/test_prout_reserve_access.c | 48 ++++++++++++++++++------ test-tool/test_prout_reserve_ownership.c | 48 ++++++++++++++++++------ test-tool/test_reserve6_2initiators.c | 1 - test-tool/test_reserve6_itnexus_loss.c | 1 - 6 files changed, 75 insertions(+), 61 deletions(-) diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 3ee2ca0..b51fb4b 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -410,7 +410,6 @@ typedef struct libiscsi_suite_info { } libiscsi_suite_info; #define NON_PGR_FUNCS suite_init, suite_cleanup, test_setup, test_teardown -#define PGR_FUNCS suite_init_pgr, suite_cleanup_pgr, test_setup, test_teardown /* SCSI protocol tests */ static libiscsi_suite_info scsi_suites[] = { @@ -427,7 +426,7 @@ static libiscsi_suite_info scsi_suites[] = { { "PrinReadKeys", NON_PGR_FUNCS, tests_prin_read_keys }, { "PrinServiceactionRange", NON_PGR_FUNCS, tests_prin_serviceaction_range }, { "ProutRegister", NON_PGR_FUNCS, tests_prout_register }, - { "ProutReserve", PGR_FUNCS, tests_prout_reserve }, + { "ProutReserve", NON_PGR_FUNCS, tests_prout_reserve }, { "Read6", NON_PGR_FUNCS, tests_read6 }, { "Read10", NON_PGR_FUNCS, tests_read10 }, { "Read12", NON_PGR_FUNCS, tests_read12 }, @@ -508,7 +507,7 @@ static libiscsi_suite_info all_suites[] = { { "PrinServiceactionRange", NON_PGR_FUNCS, tests_prin_serviceaction_range }, { "ProutRegister", NON_PGR_FUNCS, tests_prout_register }, - { "ProutReserve", PGR_FUNCS, tests_prout_reserve }, + { "ProutReserve", NON_PGR_FUNCS, tests_prout_reserve }, { "Read6", NON_PGR_FUNCS, tests_read6 }, { "Read10", NON_PGR_FUNCS, tests_read10 }, { "Read12", NON_PGR_FUNCS, tests_read12 }, @@ -553,7 +552,7 @@ static libiscsi_suite_info scsi_usb_sbc_suites[] = { { "PrinServiceactionRange", NON_PGR_FUNCS, tests_prin_serviceaction_range }, { "ProutRegister", NON_PGR_FUNCS, tests_prout_register }, - { "ProutReserve", PGR_FUNCS, tests_prout_reserve }, + { "ProutReserve", NON_PGR_FUNCS, tests_prout_reserve }, { "Read6", NON_PGR_FUNCS, tests_read6 }, { "Read10", NON_PGR_FUNCS, tests_read10 }, { "Read12", NON_PGR_FUNCS, tests_read12 }, @@ -597,11 +596,8 @@ static struct test_family families[] = { * globals for test setup and teardown */ struct scsi_task *task; -int tgt_lun2; -struct iscsi_context *iscsic2; unsigned char *read_write_buf; - static void print_usage(void) { @@ -710,32 +706,6 @@ suite_cleanup(void) return 0; } -int -suite_init_pgr(void) -{ - suite_init(); - iscsic2 = iscsi_context_login(initiatorname2, sd->iscsi_url, &tgt_lun2); - if (iscsic2 == NULL) { - fprintf(stderr, - "error: Failed to login to target for test set-up\n"); - suite_cleanup(); - return 1; - } - return 0; -} - -int -suite_cleanup_pgr(void) -{ - if (iscsic2) { - iscsi_logout_sync(iscsic2); - iscsi_destroy_context(iscsic2); - iscsic2 = NULL; - } - suite_cleanup(); - return 0; -} - static void list_all_tests(void) { diff --git a/test-tool/iscsi-test-cu.h b/test-tool/iscsi-test-cu.h index 638a802..cd82f74 100644 --- a/test-tool/iscsi-test-cu.h +++ b/test-tool/iscsi-test-cu.h @@ -33,8 +33,6 @@ /* globals between setup, tests, and teardown */ extern struct scsi_task *task; -extern struct iscsi_context *iscsic2; -extern int tgt_lun2; extern unsigned char *read_write_buf; #ifndef HAVE_CU_SUITEINFO_PSETUPFUNC diff --git a/test-tool/test_prout_reserve_access.c b/test-tool/test_prout_reserve_access.c index 94a1f63..ff39f89 100644 --- a/test-tool/test_prout_reserve_access.c +++ b/test-tool/test_prout_reserve_access.c @@ -124,11 +124,15 @@ test_prout_reserve_access_ea(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0, 0, 0, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -136,11 +140,15 @@ test_prout_reserve_access_we(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 1, 0, 1, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -148,11 +156,15 @@ test_prout_reserve_access_earo(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 1, 1, 0, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -160,11 +172,15 @@ test_prout_reserve_access_wero(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 1, 1, 1, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -172,11 +188,15 @@ test_prout_reserve_access_eaar(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1, 1, 0, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -184,9 +204,13 @@ test_prout_reserve_access_wear(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_access(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1, 1, 1, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_prout_reserve_ownership.c b/test-tool/test_prout_reserve_ownership.c index 6898e08..d57e600 100644 --- a/test-tool/test_prout_reserve_ownership.c +++ b/test-tool/test_prout_reserve_ownership.c @@ -98,10 +98,14 @@ test_prout_reserve_ownership_ea(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -109,10 +113,14 @@ test_prout_reserve_ownership_we(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -120,10 +128,14 @@ test_prout_reserve_ownership_earo(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_REGISTRANTS_ONLY, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -131,10 +143,14 @@ test_prout_reserve_ownership_wero(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_REGISTRANTS_ONLY, 0); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -142,10 +158,14 @@ test_prout_reserve_ownership_eaar(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_EXCLUSIVE_ACCESS_ALL_REGISTRANTS, 1); + iscsi_destroy_context(sd2.iscsi_ctx); } void @@ -153,8 +173,12 @@ test_prout_reserve_ownership_wear(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsic2; - sd2.iscsi_lun = tgt_lun2; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd2.iscsi_ctx == NULL) { + logging(LOG_VERBOSE, "Failed to login to target"); + return; + } verify_persistent_reserve_ownership(sd, &sd2, SCSI_PERSISTENT_RESERVE_TYPE_WRITE_EXCLUSIVE_ALL_REGISTRANTS, 1); + iscsi_destroy_context(sd2.iscsi_ctx); } diff --git a/test-tool/test_reserve6_2initiators.c b/test-tool/test_reserve6_2initiators.c index 54ed817..f063925 100644 --- a/test-tool/test_reserve6_2initiators.c +++ b/test-tool/test_reserve6_2initiators.c @@ -94,5 +94,4 @@ test_reserve6_2initiators(void) iscsi_logout_sync(sd2.iscsi_ctx); iscsi_destroy_context(sd2.iscsi_ctx); - iscsic2 = NULL; } diff --git a/test-tool/test_reserve6_itnexus_loss.c b/test-tool/test_reserve6_itnexus_loss.c index 369d3e1..adfa771 100644 --- a/test-tool/test_reserve6_itnexus_loss.c +++ b/test-tool/test_reserve6_itnexus_loss.c @@ -80,5 +80,4 @@ test_reserve6_itnexus_loss(void) finished: iscsi_logout_sync(sd2.iscsi_ctx); iscsi_destroy_context(sd2.iscsi_ctx); - iscsic2 = NULL; } From 5efc7bf9251be9b643a86083eb992a2d19c2713c Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 18:52:08 -0700 Subject: [PATCH 25/53] TESTS: create a helper/wrapper for sending scsi commands Create a wrapper for sending scsi_commands so that we can hide the libiscsi function far away from the "opcode" helpers. This means we only have a single place later to switch to a different type of device, such as a SG_IO one. Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 63 +++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 1775647..d59df1d 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -291,6 +291,11 @@ iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) return real_iscsi_queue_pdu(iscsi, pdu); } +static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi_task *task, struct iscsi_data *d) +{ + return iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, d); +} + int orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, @@ -319,7 +324,7 @@ orwrite(struct scsi_device *sdev, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("ORWRITE", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1047,7 +1052,7 @@ synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num, int sync_nv, task = scsi_cdb_synchronizecache10(lba, num_blocks, sync_nv, immed); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("SYNCHRONIZECACHE10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1070,7 +1075,7 @@ synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num, int sync_nv, task = scsi_cdb_synchronizecache16(lba, num_blocks, sync_nv, immed); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("SYNCHRONIZECACHE16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1250,7 +1255,7 @@ int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_f task = scsi_cdb_startstopunit(immed, pcm, pc, no_flush, loej, start); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("STARTSTOPUNIT", sdev, task, status, key, ascq, num_ascq); @@ -1272,7 +1277,7 @@ testunitready(struct scsi_device *sdev, int status, enum scsi_sense_key key, int task = scsi_cdb_testunitready(); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("TESTUNITREADY", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1357,7 +1362,7 @@ int compareandwrite(struct scsi_device *sdev, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("COMPAREANDWRITE", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1379,7 +1384,7 @@ int get_lba_status(struct scsi_device *sdev, struct scsi_task **out_task, uint64 task = scsi_cdb_get_lba_status(lba, len); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("GET_LBA_STATUS", sdev, task, status, key, ascq, num_ascq); if (out_task) { @@ -1404,7 +1409,7 @@ prefetch10(struct scsi_device *sdev, uint32_t lba, int num, int immed, int group task = scsi_cdb_prefetch10(lba, num, immed, group); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("PREFETCH10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1427,7 +1432,7 @@ prefetch16(struct scsi_device *sdev, uint64_t lba, int num, int immed, int group task = scsi_cdb_prefetch16(lba, num, immed, group); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("PREFETCH16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1483,7 +1488,7 @@ read6(struct scsi_device *sdev, uint32_t lba, task = scsi_cdb_read6(lba, datalen, blocksize); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READ6", sdev, task, status, key, ascq, num_ascq); if (data) { @@ -1516,7 +1521,7 @@ read10(struct scsi_device *sdev, struct scsi_task **out_task, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READ10", sdev, task, status, key, ascq, num_ascq); if (data) { @@ -1550,7 +1555,7 @@ read12(struct scsi_device *sdev, uint32_t lba, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READ12", sdev, task, status, key, ascq, num_ascq); if (data) { @@ -1582,7 +1587,7 @@ read16(struct scsi_device *sdev, uint64_t lba, dpo, fua, fua_nv, group); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READ16", sdev, task, status, key, ascq, num_ascq); if (data) { @@ -1608,7 +1613,7 @@ readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum task = scsi_cdb_readcapacity10(lba, pmi); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READCAPACITY10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1629,7 +1634,7 @@ readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_se task = scsi_cdb_serviceactionin16(SCSI_READCAPACITY16, alloc_len); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("READCAPACITY16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1686,7 +1691,7 @@ int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **out_ta alloc_len); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("INQUIRY", sdev, task, status, key, ascq, num_ascq); if (out_task) { @@ -1828,7 +1833,7 @@ unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_le iov->iov_len = xferlen; scsi_task_set_iov_out(task, iov, 1); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("UNMAP", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1855,7 +1860,7 @@ verify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("VERIFY10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1881,7 +1886,7 @@ verify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("VERIFY12", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1907,7 +1912,7 @@ verify16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("VERIFY16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1940,7 +1945,7 @@ write10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITE10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -1973,7 +1978,7 @@ write12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITE12", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2006,7 +2011,7 @@ write16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITE16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2045,7 +2050,7 @@ writesame10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int num, i d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITESAME10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2084,7 +2089,7 @@ writesame16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int num, i d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITESAME16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2120,7 +2125,7 @@ writeverify10(struct scsi_device *sdev, uint32_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITEVERIFY10", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2156,7 +2161,7 @@ writeverify12(struct scsi_device *sdev, uint32_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITEVERIFY12", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2192,7 +2197,7 @@ writeverify16(struct scsi_device *sdev, uint64_t lba, d.data = data; d.size = datalen; - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, &d); + task = send_scsi_command(sdev, task, &d); ret = check_result("WRITEVERIFY16", sdev, task, status, key, ascq, num_ascq); if (task) { @@ -2215,7 +2220,7 @@ inquiry(struct scsi_device *sdev, struct scsi_task **out_task, int evpd, int pag task = scsi_cdb_inquiry(evpd, page_code, maxsize); assert(task != NULL); - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, NULL); + task = send_scsi_command(sdev, task, NULL); ret = check_result("INQUIRY", sdev, task, status, key, ascq, num_ascq); if (out_task) { From 8ed2ad9b69c292929262fb37615e082795f0fb8c Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Thu, 18 Sep 2014 19:20:49 -0700 Subject: [PATCH 26/53] TESTS: start abstracting away the error string handling from transports Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 25 +++++++++----- test-tool/iscsi-support.h | 8 +++++ test-tool/iscsi-test-cu.c | 68 +++++++++++++++------------------------ 3 files changed, 51 insertions(+), 50 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index d59df1d..786f554 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -113,7 +113,7 @@ static int check_result(const char *opcode, struct scsi_device *sdev, if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send %s command: " - "%s", opcode, iscsi_get_error(sdev->iscsi_ctx)); + "%s", opcode, sdev->error_str); return -1; } if (task->status == SCSI_STATUS_CHECK_CONDITION @@ -125,7 +125,7 @@ static int check_result(const char *opcode, struct scsi_device *sdev, } if (status == SCSI_STATUS_GOOD && task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] %s command failed with " - "sense. %s", opcode, iscsi_get_error(sdev->iscsi_ctx)); + "sense. %s", opcode, sdev->error_str); return -1; } if (status != SCSI_STATUS_GOOD && task->status == SCSI_STATUS_GOOD) { @@ -158,7 +158,7 @@ static int check_result(const char *opcode, struct scsi_device *sdev, opcode, scsi_sense_key_str(key), key, scsi_sense_ascq_str(ascq[0]), ascq[0], - iscsi_get_error(sdev->iscsi_ctx)); + sdev->error_str); return -1; } logging(LOG_VERBOSE, "[OK] %s returned %s %s(0x%02x) %s(0x%04x)", @@ -168,6 +168,20 @@ static int check_result(const char *opcode, struct scsi_device *sdev, return 0; } +static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi_task *task, struct iscsi_data *d) +{ + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + sdev->error_str = NULL; + } + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, d); + if (task == NULL) { + sdev->error_str = strdup(iscsi_get_error(sdev->iscsi_ctx)); + } + + return task; +} + void logging(int level, const char *format, ...) { va_list ap; @@ -291,11 +305,6 @@ iscsi_queue_pdu(struct iscsi_context *iscsi, struct iscsi_pdu *pdu) return real_iscsi_queue_pdu(iscsi, pdu); } -static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi_task *task, struct iscsi_data *d) -{ - return iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, d); -} - 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 b79dc45..51b0d62 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -26,6 +26,10 @@ #include #include +#ifndef discard_const +#define discard_const(ptr) ((void *)((intptr_t)(ptr))) +#endif + extern const char *initiatorname1; extern const char *initiatorname2; @@ -184,9 +188,13 @@ extern int sbc3_support; extern int maximum_transfer_length; struct scsi_device { + const char *error_str; + struct iscsi_context *iscsi_ctx; int iscsi_lun; const char *iscsi_url; + + const char *sgio_dev; }; extern struct scsi_device *sd; diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index b51fb4b..06505ac 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -40,12 +40,7 @@ #include "iscsi-support.h" #include "iscsi-test-cu.h" - - - -#ifndef discard_const -#define discard_const(ptr) ((void *)((intptr_t)(ptr))) -#endif +#include "iscsi-support.h" #define PROG "iscsi-test-cu" @@ -866,7 +861,6 @@ int main(int argc, char *argv[]) { char *testname_re = NULL; - int lun; CU_BasicRunMode mode = CU_BRM_VERBOSE; CU_ErrorAction error_action = CUEA_IGNORE; int res; @@ -984,7 +978,7 @@ main(int argc, char *argv[]) return 10; } - sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &lun); + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); if (sd->iscsi_ctx == NULL) { printf("Failed to login to target\n"); return -1; @@ -995,24 +989,21 @@ main(int argc, char *argv[]) * All devices support readcapacity10 but only some support * readcapacity16 */ - task = iscsi_readcapacity10_sync(sd->iscsi_ctx, lun, 0, 0); + task = iscsi_readcapacity10_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0); if (task == NULL) { - printf("Failed to send READCAPACITY10 command: %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("Failed to send READCAPACITY10 command: %s\n", sd->error_str); iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (task->status != SCSI_STATUS_GOOD) { - printf("READCAPACITY10 command: failed with sense. %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("READCAPACITY10 command: failed with sense. %s\n", sd->error_str); scsi_free_scsi_task(task); iscsi_destroy_context(sd->iscsi_ctx); return -1; } rc10 = scsi_datain_unmarshall(task); if (rc10 == NULL) { - printf("failed to unmarshall READCAPACITY10 data. %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("failed to unmarshall READCAPACITY10 data.\n"); scsi_free_scsi_task(task); iscsi_destroy_context(sd->iscsi_ctx); return -1; @@ -1021,18 +1012,16 @@ main(int argc, char *argv[]) num_blocks = rc10->lba + 1; scsi_free_scsi_task(task); - rc16_task = iscsi_readcapacity16_sync(sd->iscsi_ctx, lun); + rc16_task = iscsi_readcapacity16_sync(sd->iscsi_ctx, sd->iscsi_lun); if (rc16_task == NULL) { - printf("Failed to send READCAPACITY16 command: %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("Failed to send READCAPACITY16 command: %s\n", sd->error_str); iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (rc16_task->status == SCSI_STATUS_GOOD) { rc16 = scsi_datain_unmarshall(rc16_task); if (rc16 == NULL) { - printf("failed to unmarshall READCAPACITY16 data. %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("failed to unmarshall READCAPACITY16 data. %s\n", sd->error_str); scsi_free_scsi_task(rc16_task); iscsi_destroy_context(sd->iscsi_ctx); return -1; @@ -1042,9 +1031,9 @@ main(int argc, char *argv[]) lbppb = 1 << rc16->lbppbe; } - inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 0, 0, 64); + inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 64); if (inq_task == NULL || inq_task->status != SCSI_STATUS_GOOD) { - printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); + printf("Inquiry command failed : %s\n", sd->error_str); return -1; } full_size = scsi_datain_getfullsize(inq_task); @@ -1052,10 +1041,9 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_task); /* we need more data for the full list */ - inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 0, 0, full_size); + inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, full_size); if (inq_task == NULL) { - printf("Inquiry command failed : %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("Inquiry command failed : %s\n", sd->error_str); return -1; } } @@ -1074,7 +1062,7 @@ main(int argc, char *argv[]) } /* try reading block limits vpd */ - inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64); + inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64); if (inq_bl_task && inq_bl_task->status != SCSI_STATUS_GOOD) { scsi_free_scsi_task(inq_bl_task); inq_bl_task = NULL; @@ -1084,8 +1072,8 @@ main(int argc, char *argv[]) if (full_size > inq_bl_task->datain.size) { scsi_free_scsi_task(inq_bl_task); - if ((inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size)) == NULL) { - printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); + if ((inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size)) == NULL) { + printf("Inquiry command failed : %s\n", sd->error_str); return -1; } } @@ -1098,7 +1086,7 @@ main(int argc, char *argv[]) } /* try reading block device characteristics vpd */ - inq_bdc_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255); + inq_bdc_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255); if (inq_bdc_task == NULL) { printf("Failed to read Block Device Characteristics page\n"); } @@ -1112,9 +1100,9 @@ main(int argc, char *argv[]) /* if thin provisioned we also need to read the VPD page for it */ if (rc16 && rc16->lbpme != 0){ - inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64); + inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64); if (inq_lbp_task == NULL || inq_lbp_task->status != SCSI_STATUS_GOOD) { - printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); + printf("Inquiry command failed : %s\n", sd->error_str); return -1; } full_size = scsi_datain_getfullsize(inq_lbp_task); @@ -1122,8 +1110,8 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_lbp_task); /* we need more data for the full list */ - if ((inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, full_size)) == NULL) { - printf("Inquiry command failed : %s\n", iscsi_get_error(sd->iscsi_ctx)); + if ((inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, full_size)) == NULL) { + printf("Inquiry command failed : %s\n", sd->error_str); return -1; } } @@ -1135,31 +1123,27 @@ main(int argc, char *argv[]) } } - rsop_task = iscsi_report_supported_opcodes_sync(sd->iscsi_ctx, lun, + rsop_task = iscsi_report_supported_opcodes_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535); if (rsop_task == NULL) { - printf("Failed to send REPORT_SUPPORTED_OPCODES command: %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("Failed to send REPORT_SUPPORTED_OPCODES command: %s\n", sd->error_str); iscsi_destroy_context(sd->iscsi_ctx); return -1; } if (rsop_task->status == SCSI_STATUS_GOOD) { rsop = scsi_datain_unmarshall(rsop_task); if (rsop == NULL) { - printf("failed to unmarshall REPORT_SUPPORTED_OPCODES " - "data. %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("failed to unmarshall REPORT_SUPPORTED_OPCODES data.\n"); scsi_free_scsi_task(rsop_task); } } /* check if the device is write protected or not */ - task = iscsi_modesense6_sync(sd->iscsi_ctx, lun, 0, SCSI_MODESENSE_PC_CURRENT, + task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); if (task == NULL) { - printf("Failed to send MODE_SENSE6 command: %s\n", - iscsi_get_error(sd->iscsi_ctx)); + printf("Failed to send MODE_SENSE6 command: %s\n", sd->error_str); iscsi_destroy_context(sd->iscsi_ctx); return -1; } From 48e14f5ccf2b40e7d2f5be1821d2e369b7f0e8d1 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 06:21:02 -0700 Subject: [PATCH 27/53] TESTS: update main program to use helpers instead of calling directly to libiscsi Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 36 ++++++---- test-tool/iscsi-support.h | 9 +-- test-tool/iscsi-test-cu.c | 90 ++++++++++++++++-------- test-tool/test_mandatory_sbc.c | 4 +- test-tool/test_nomedia_sbc.c | 4 +- test-tool/test_readcapacity10_simple.c | 2 +- test-tool/test_readcapacity16_alloclen.c | 2 +- test-tool/test_readcapacity16_simple.c | 2 +- test-tool/test_reserve6_2initiators.c | 6 +- 9 files changed, 102 insertions(+), 53 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 786f554..2a891a7 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1331,16 +1331,24 @@ out: * Returns -1 if allocating a SCSI task failed or if a communication error * occurred and a SCSI status if a SCSI response has been received. */ -int mode_sense(struct scsi_device *sdev) +int modesense6(struct scsi_device *sdev, struct scsi_task **out_task, int dbd, enum scsi_modesense_page_control pc, enum scsi_modesense_page_code page_code, int sub_page_code, unsigned char alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { - struct scsi_task *t; - enum scsi_status ret = -1; + struct scsi_task *task; + int ret; - t = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255); - if (t) { - ret = t->status; - scsi_free_scsi_task(t); + logging(LOG_VERBOSE, "Send MODESENSE6 (Expecting %s) ", + scsi_status_str(status)); + + task = scsi_cdb_modesense6(dbd, pc, page_code, sub_page_code, alloc_len); + assert(task != NULL); + + task = send_scsi_command(sdev, task, NULL); + + ret = check_result("MODESENSE6", sdev, task, status, key, ascq, num_ascq); + if (out_task) { + *out_task = task; + } else if (task) { + scsi_free_scsi_task(task); } return ret; } @@ -1609,7 +1617,7 @@ read16(struct scsi_device *sdev, uint64_t lba, } int -readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +readcapacity10(struct scsi_device *sdev, struct scsi_task **out_task, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1625,14 +1633,16 @@ readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum task = send_scsi_command(sdev, task, NULL); ret = check_result("READCAPACITY10", sdev, task, status, key, ascq, num_ascq); - if (task) { + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } return ret; } int -readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +readcapacity16(struct scsi_device *sdev, struct scsi_task **out_task, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; int ret; @@ -1646,7 +1656,9 @@ readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_se task = send_scsi_command(sdev, task, NULL); ret = check_result("READCAPACITY16", sdev, task, status, key, ascq, num_ascq); - if (task) { + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } return ret; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 51b0d62..e5093e0 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -266,9 +266,11 @@ int verify_read_works(struct scsi_device *sdev, unsigned char *buf); int verify_write_works(struct scsi_device *sdev, unsigned char *buf); int verify_read_fails(struct scsi_device *sdev, unsigned char *buf); int verify_write_fails(struct scsi_device *sdev, unsigned char *buf); -int inquiry(struct scsi_device *sdev, struct scsi_task **task, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); + int compareandwrite(struct scsi_device *sdev, uint64_t lba, unsigned char *data, uint32_t len, int blocksize, int wrprotect, int dpo, int fua, int group_number, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int get_lba_status(struct scsi_device *sdev, struct scsi_task **task, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int inquiry(struct scsi_device *sdev, struct scsi_task **task, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int modesense6(struct scsi_device *sdev, struct scsi_task **task, int dbd, enum scsi_modesense_page_control pc, enum scsi_modesense_page_code page_code, int sub_page_code, unsigned char alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); @@ -277,8 +279,8 @@ int read6(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksiz int read10(struct scsi_device *sdev, struct scsi_task **task, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int readcapacity10(struct scsi_device *sdev, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int readcapacity16(struct scsi_device *sdev, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int readcapacity10(struct scsi_device *sdev, struct scsi_task **task, uint32_t lba, int pmi, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int readcapacity16(struct scsi_device *sdev, struct scsi_task **task, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **save_task, int rctd, int options, int opcode, int sa, int alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int release6(struct scsi_device *sdev); int reserve6(struct scsi_device *sdev); @@ -292,7 +294,6 @@ int synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num_blocks, i int synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int testunitready_clear_ua(struct scsi_device *sdev); int testunitready(struct scsi_device *sdev, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int mode_sense(struct scsi_device *sdev); int unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify10(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int verify12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int vprotect, int dpo, int bytchk, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 06505ac..bb5ed59 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -673,6 +673,10 @@ test_teardown(void) int suite_init(void) { + if (sd->iscsi_ctx) { + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); + } sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); if (sd->iscsi_ctx == NULL) { fprintf(stderr, @@ -857,6 +861,24 @@ static void parse_and_add_tests(char *testname_re) parse_and_add_test(testname_re); } +static void free_scsi_device(struct scsi_device *sdev) +{ + if (sdev->error_str) { + free(discard_const(sdev->error_str)); + sdev->error_str = NULL; + } + if (sdev->iscsi_url) { + free(discard_const(sdev->iscsi_url)); + sdev->iscsi_url = NULL; + } + if (sdev->iscsi_ctx) { + iscsi_logout_sync(sdev->iscsi_ctx); + iscsi_destroy_context(sdev->iscsi_ctx); + sdev->iscsi_ctx = NULL; + } + free(sd); +} + int main(int argc, char *argv[]) { @@ -897,6 +919,7 @@ main(int argc, char *argv[]) int opt_idx = 0; sd = malloc(sizeof(struct scsi_device)); + memset(sd, '\0', sizeof(struct scsi_device)); while ((c = getopt_long(argc, argv, "?hli:I:t:sdgfAsSnuvxV", long_opts, &opt_idx)) > 0) { @@ -989,33 +1012,35 @@ main(int argc, char *argv[]) * All devices support readcapacity10 but only some support * readcapacity16 */ - task = iscsi_readcapacity10_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0); + task = NULL; + readcapacity10(sd, &task, 0, 0, EXPECT_STATUS_GOOD); if (task == NULL) { printf("Failed to send READCAPACITY10 command: %s\n", sd->error_str); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } if (task->status != SCSI_STATUS_GOOD) { printf("READCAPACITY10 command: failed with sense. %s\n", sd->error_str); scsi_free_scsi_task(task); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } rc10 = scsi_datain_unmarshall(task); if (rc10 == NULL) { printf("failed to unmarshall READCAPACITY10 data.\n"); scsi_free_scsi_task(task); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } block_size = rc10->block_size; num_blocks = rc10->lba + 1; scsi_free_scsi_task(task); - rc16_task = iscsi_readcapacity16_sync(sd->iscsi_ctx, sd->iscsi_lun); + rc16_task = NULL; + readcapacity16(sd, &rc16_task, 96, EXPECT_STATUS_GOOD); if (rc16_task == NULL) { printf("Failed to send READCAPACITY16 command: %s\n", sd->error_str); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } if (rc16_task->status == SCSI_STATUS_GOOD) { @@ -1023,7 +1048,7 @@ main(int argc, char *argv[]) if (rc16 == NULL) { printf("failed to unmarshall READCAPACITY16 data. %s\n", sd->error_str); scsi_free_scsi_task(rc16_task); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } block_size = rc16->block_length; @@ -1031,7 +1056,8 @@ main(int argc, char *argv[]) lbppb = 1 << rc16->lbppbe; } - inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, 64); + inq_task = NULL; + inquiry(sd, &inq_task, 0, 0, 64, EXPECT_STATUS_GOOD); if (inq_task == NULL || inq_task->status != SCSI_STATUS_GOOD) { printf("Inquiry command failed : %s\n", sd->error_str); return -1; @@ -1041,7 +1067,8 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_task); /* we need more data for the full list */ - inq_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, 0, full_size); + inq_task = NULL; + inquiry(sd, &inq_task, 0, 0, full_size, EXPECT_STATUS_GOOD); if (inq_task == NULL) { printf("Inquiry command failed : %s\n", sd->error_str); return -1; @@ -1062,7 +1089,8 @@ main(int argc, char *argv[]) } /* try reading block limits vpd */ - inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64); + inq_bl_task = NULL; + inquiry(sd, &inq_bl_task, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64, EXPECT_STATUS_GOOD); if (inq_bl_task && inq_bl_task->status != SCSI_STATUS_GOOD) { scsi_free_scsi_task(inq_bl_task); inq_bl_task = NULL; @@ -1072,7 +1100,10 @@ main(int argc, char *argv[]) if (full_size > inq_bl_task->datain.size) { scsi_free_scsi_task(inq_bl_task); - if ((inq_bl_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size)) == NULL) { + inq_bl_task = NULL; + inquiry(sd, &inq_bl_task, 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, full_size, + EXPECT_STATUS_GOOD); + if (inq_bl_task == NULL) { printf("Inquiry command failed : %s\n", sd->error_str); return -1; } @@ -1086,7 +1117,9 @@ main(int argc, char *argv[]) } /* try reading block device characteristics vpd */ - inq_bdc_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255); + inq_bdc_task = NULL; + inquiry(sd, &inq_bdc_task, 1, SCSI_INQUIRY_PAGECODE_BLOCK_DEVICE_CHARACTERISTICS, 255, + EXPECT_STATUS_GOOD); if (inq_bdc_task == NULL) { printf("Failed to read Block Device Characteristics page\n"); } @@ -1100,7 +1133,9 @@ main(int argc, char *argv[]) /* if thin provisioned we also need to read the VPD page for it */ if (rc16 && rc16->lbpme != 0){ - inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64); + inq_lbp_task = NULL; + inquiry(sd, &inq_lbp_task, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64, + EXPECT_STATUS_GOOD); if (inq_lbp_task == NULL || inq_lbp_task->status != SCSI_STATUS_GOOD) { printf("Inquiry command failed : %s\n", sd->error_str); return -1; @@ -1110,7 +1145,10 @@ main(int argc, char *argv[]) scsi_free_scsi_task(inq_lbp_task); /* we need more data for the full list */ - if ((inq_lbp_task = iscsi_inquiry_sync(sd->iscsi_ctx, sd->iscsi_lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, full_size)) == NULL) { + inq_lbp_task = NULL; + inquiry(sd, &inq_lbp_task, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, + full_size, EXPECT_STATUS_GOOD); + if (inq_lbp_task == NULL) { printf("Inquiry command failed : %s\n", sd->error_str); return -1; } @@ -1123,11 +1161,12 @@ main(int argc, char *argv[]) } } - rsop_task = iscsi_report_supported_opcodes_sync(sd->iscsi_ctx, sd->iscsi_lun, - 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535); + rsop_task = NULL; + report_supported_opcodes(sd, &rsop_task, 1, SCSI_REPORT_SUPPORTING_OPS_ALL, 0, 0, 65535, + EXPECT_STATUS_GOOD); if (rsop_task == NULL) { printf("Failed to send REPORT_SUPPORTED_OPCODES command: %s\n", sd->error_str); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } if (rsop_task->status == SCSI_STATUS_GOOD) { @@ -1139,12 +1178,12 @@ main(int argc, char *argv[]) } /* check if the device is write protected or not */ - task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_RETURN_ALL_PAGES, - 0, 255); + task = NULL; + modesense6(sd, &task, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255, + EXPECT_STATUS_GOOD); if (task == NULL) { printf("Failed to send MODE_SENSE6 command: %s\n", sd->error_str); - iscsi_destroy_context(sd->iscsi_ctx); + free_scsi_device(sd); return -1; } if (task->status == SCSI_STATUS_GOOD) { @@ -1160,9 +1199,6 @@ main(int argc, char *argv[]) } scsi_free_scsi_task(task); - iscsi_logout_sync(sd->iscsi_ctx); - iscsi_destroy_context(sd->iscsi_ctx); - if (is_usb) { printf("USB device. Clamping maximum transfer length to 120k\n"); maximum_transfer_length = 120 *1024 / block_size; @@ -1198,7 +1234,6 @@ main(int argc, char *argv[]) } CU_cleanup_registry(); - free(discard_const(sd->iscsi_url)); if (inq_task != NULL) { scsi_free_scsi_task(inq_task); @@ -1218,8 +1253,7 @@ main(int argc, char *argv[]) if (rsop_task != NULL) { scsi_free_scsi_task(rsop_task); } - if (sd != NULL) { - free(sd); - } + free_scsi_device(sd); + return 0; } diff --git a/test-tool/test_mandatory_sbc.c b/test-tool/test_mandatory_sbc.c index 011428a..9bc7d06 100644 --- a/test-tool/test_mandatory_sbc.c +++ b/test-tool/test_mandatory_sbc.c @@ -42,13 +42,13 @@ test_mandatory_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10."); - ret = readcapacity10(sd, 0, 0, + ret = readcapacity10(sd, NULL, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (sbc3_support) { logging(LOG_VERBOSE, "Test READCAPACITY16. The device claims SBC-3 support."); - ret = readcapacity16(sd, 15, + ret = readcapacity16(sd, NULL, 15, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_nomedia_sbc.c b/test-tool/test_nomedia_sbc.c index 929fa63..b9dc0af 100644 --- a/test-tool/test_nomedia_sbc.c +++ b/test-tool/test_nomedia_sbc.c @@ -91,12 +91,12 @@ test_nomedia_sbc(void) CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY10 when medium is ejected."); - ret = readcapacity10(sd, 0, 0, + ret = readcapacity10(sd, NULL, 0, 0, EXPECT_NO_MEDIUM); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test READCAPACITY16 when medium is ejected."); - ret = readcapacity16(sd, 15, + ret = readcapacity16(sd, NULL, 15, EXPECT_NO_MEDIUM); if (ret == -2) { if (sbc3_support) { diff --git a/test-tool/test_readcapacity10_simple.c b/test-tool/test_readcapacity10_simple.c index ca53e10..7c3ca7f 100644 --- a/test-tool/test_readcapacity10_simple.c +++ b/test-tool/test_readcapacity10_simple.c @@ -34,7 +34,7 @@ test_readcapacity10_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test basic READCAPACITY10"); - ret = readcapacity10(sd, 0, 0, + ret = readcapacity10(sd, NULL, 0, 0, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_readcapacity16_alloclen.c b/test-tool/test_readcapacity16_alloclen.c index 92e73cc..b620138 100644 --- a/test-tool/test_readcapacity16_alloclen.c +++ b/test-tool/test_readcapacity16_alloclen.c @@ -35,7 +35,7 @@ test_readcapacity16_alloclen(void) logging(LOG_VERBOSE, "Test that READCAPACITY16 with alloc_len 0-15 is not an error"); for (i = 0; i < 16; i++) { - ret = readcapacity16(sd, i, + ret = readcapacity16(sd, NULL, i, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim SBC-3 support."); diff --git a/test-tool/test_readcapacity16_simple.c b/test-tool/test_readcapacity16_simple.c index 21d58b4..d14bc61 100644 --- a/test-tool/test_readcapacity16_simple.c +++ b/test-tool/test_readcapacity16_simple.c @@ -34,7 +34,7 @@ test_readcapacity16_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that READCAPACITY16 works"); - ret = readcapacity16(sd, 16, + ret = readcapacity16(sd, NULL, 16, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] READCAPACITY16 is not implemented on this target and it does not claim support."); diff --git a/test-tool/test_reserve6_2initiators.c b/test-tool/test_reserve6_2initiators.c index f063925..4a4e733 100644 --- a/test-tool/test_reserve6_2initiators.c +++ b/test-tool/test_reserve6_2initiators.c @@ -68,11 +68,13 @@ test_reserve6_2initiators(void) logging(LOG_NORMAL, "Test we can still send MODE SENSE from the first initiator"); - ret = mode_sense(sd); + ret = modesense6(sd, NULL, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_NORMAL, "MODE SENSE should fail from the second initiator"); - ret = mode_sense(&sd2); + ret = modesense6(&sd2, NULL, 0, SCSI_MODESENSE_PC_CURRENT, SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, SCSI_STATUS_RESERVATION_CONFLICT); From bd6570c324974401ea8b2b0c1c7d6b580e328702 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 06:26:53 -0700 Subject: [PATCH 28/53] TESTS: create an abstraction to connect to a device Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-test-cu.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index bb5ed59..e7f9420 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -861,6 +861,15 @@ static void parse_and_add_tests(char *testname_re) parse_and_add_test(testname_re); } +static int connect_scsi_device(struct scsi_device *sdev, const char *initiatorname) +{ + sdev->iscsi_ctx = iscsi_context_login(initiatorname, sdev->iscsi_url, &sdev->iscsi_lun); + if (sdev->iscsi_ctx == NULL) { + return -1; + } + return 0; +} + static void free_scsi_device(struct scsi_device *sdev) { if (sdev->error_str) { @@ -1001,9 +1010,9 @@ main(int argc, char *argv[]) return 10; } - sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); - if (sd->iscsi_ctx == NULL) { - printf("Failed to login to target\n"); + if (connect_scsi_device(sd, initiatorname1)) { + fprintf(stderr, "Failed to connect to SCSI device\n"); + free_scsi_device(sd); return -1; } From 55c1f0d2ecb2bbd5993f009a59dbf8de53e1c727 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 16:26:46 -0700 Subject: [PATCH 29/53] TESTS: Add support to test against a /dev/sg device on linux Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 131 +++++++++++++++++++++++++++-- test-tool/iscsi-support.h | 1 + test-tool/iscsi-test-cu.c | 92 +++++++++++++++----- test-tool/test_read10_beyond_eol.c | 1 - test-tool/test_read16_beyond_eol.c | 1 - 5 files changed, 195 insertions(+), 31 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 2a891a7..eb30c25 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1,3 +1,4 @@ + /* iscsi-test tool support @@ -18,6 +19,8 @@ along with this program; if not, see . */ +#include "config.h" + #define _GNU_SOURCE #include #include @@ -31,6 +34,13 @@ #include #include #include + +#ifdef HAVE_SG_IO +#include +#include +#include +#endif + #include "slist.h" #include "iscsi.h" #include "scsi-lowlevel.h" @@ -170,16 +180,119 @@ static int check_result(const char *opcode, struct scsi_device *sdev, static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi_task *task, struct iscsi_data *d) { - if (sdev->error_str != NULL) { - free(discard_const(sdev->error_str)); - sdev->error_str = NULL; - } - task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, d); - if (task == NULL) { - sdev->error_str = strdup(iscsi_get_error(sdev->iscsi_ctx)); + if (sdev->iscsi_url) { + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + sdev->error_str = NULL; + } + task = iscsi_scsi_command_sync(sdev->iscsi_ctx, sdev->iscsi_lun, task, d); + if (task == NULL) { + sdev->error_str = strdup(iscsi_get_error(sdev->iscsi_ctx)); + } + + return task; } - return task; +#ifdef HAVE_SG_IO + if (sdev->sgio_dev) { + sg_io_hdr_t io_hdr; + unsigned int sense_len=32; + unsigned char sense[sense_len]; + char buf[1024]; + + memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); + io_hdr.interface_id = 'S'; + + /* CDB */ + io_hdr.cmdp = task->cdb; + io_hdr.cmd_len = task->cdb_size; + + /* Where to store the sense_data, if there was an error */ + io_hdr.sbp = sense; + io_hdr.mx_sb_len = sense_len; + sense_len=0; + + /* Transfer direction, either in or out. Linux does not yet + support bidirectional SCSI transfers ? + */ + switch (task->xfer_dir) { + case SCSI_XFER_WRITE: + io_hdr.dxfer_direction = SG_DXFER_TO_DEV; + io_hdr.dxferp = d->data; + io_hdr.dxfer_len = d->size; + break; + case SCSI_XFER_READ: + io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; + task->datain.size = task->expxferlen; + task->datain.data = malloc(task->expxferlen); + io_hdr.dxferp = task->datain.data; + io_hdr.dxfer_len = task->datain.size; + break; + } + + /* SCSI timeout in ms */ + io_hdr.timeout = 5000; + + if(ioctl(sdev->sgio_fd, SG_IO, &io_hdr) < 0){ + sdev->error_str = strdup("SG_IO ioctl failed"); + return NULL; + } + + /* now for the error processing */ + if(io_hdr.sb_len_wr > 0){ + task->status = SCSI_STATUS_CHECK_CONDITION; + task->sense.error_type = sense[0] & 0x7f; + switch (task->sense.error_type) { + case 0x70: + case 0x71: + task->sense.key = sense[2] & 0x0f; + task->sense.ascq = scsi_get_uint16(&sense[12]); + break; + case 0x72: + case 0x73: + task->sense.key = sense[1] & 0x0f; + task->sense.ascq = scsi_get_uint16(&sense[2]); + break; + } + sense_len=io_hdr.sb_len_wr; + snprintf(buf, sizeof(buf), "SENSE KEY:%s(%d) ASCQ:%s(0x%04x)", + scsi_sense_key_str(task->sense.key), + task->sense.key, + scsi_sense_ascq_str(task->sense.ascq), + task->sense.ascq); + sdev->error_str = strdup(buf); + return task; + } + + if(io_hdr.masked_status){ + task->status = SCSI_STATUS_ERROR; + task->sense.key = 0x0f; + task->sense.ascq = 0xffff; + + sdev->error_str = strdup("SCSI masked error"); + return NULL; + } + if(io_hdr.host_status){ + task->status = SCSI_STATUS_ERROR; + task->sense.key = 0x0f; + task->sense.ascq = 0xffff; + + snprintf(buf, sizeof(buf), "SCSI host error. Status=0x%x", io_hdr.host_status); + sdev->error_str = strdup(buf); + return task; + } + if(io_hdr.driver_status){ + task->status = SCSI_STATUS_ERROR; + task->sense.key = 0x0f; + task->sense.ascq = 0xffff; + + sdev->error_str = strdup("SCSI driver error"); + return NULL; + } + return task; + } +#endif + return NULL; } void logging(int level, const char *format, ...) @@ -1714,7 +1827,7 @@ int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **out_ta task = send_scsi_command(sdev, task, NULL); - ret = check_result("INQUIRY", sdev, task, status, key, ascq, num_ascq); + ret = check_result("REPORT_SUPPORTED_OPCODES", sdev, task, status, key, ascq, num_ascq); if (out_task) { *out_task = task; } else if (task) { diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index e5093e0..0cadb28 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -195,6 +195,7 @@ struct scsi_device { const char *iscsi_url; const char *sgio_dev; + int sgio_fd; }; extern struct scsi_device *sd; diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index e7f9420..70ad3c4 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -17,6 +17,8 @@ along with this program; if not, see . */ +#include "config.h" + #define _GNU_SOURCE #include #include @@ -30,6 +32,12 @@ #include #include +#ifdef HAVE_SG_IO +#include +#include +#include +#endif + #include #include #include @@ -673,15 +681,17 @@ test_teardown(void) int suite_init(void) { - if (sd->iscsi_ctx) { - iscsi_logout_sync(sd->iscsi_ctx); - iscsi_destroy_context(sd->iscsi_ctx); - } - sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); - if (sd->iscsi_ctx == NULL) { - fprintf(stderr, - "error: Failed to login to target for test set-up\n"); - return 1; + if (sd->iscsi_url) { + if (sd->iscsi_ctx) { + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); + } + sd->iscsi_ctx = iscsi_context_login(initiatorname1, sd->iscsi_url, &sd->iscsi_lun); + if (sd->iscsi_ctx == NULL) { + fprintf(stderr, + "error: Failed to login to target for test set-up\n"); + return 1; + } } #ifndef HAVE_CU_SUITEINFO_PSETUPFUNC /* libcunit version 1 */ @@ -697,10 +707,12 @@ suite_cleanup(void) /* libcunit version 1 */ test_teardown(); #endif - if (sd->iscsi_ctx) { - iscsi_logout_sync(sd->iscsi_ctx); - iscsi_destroy_context(sd->iscsi_ctx); - sd->iscsi_ctx = NULL; + if (sd->iscsi_url) { + if (sd->iscsi_ctx) { + iscsi_logout_sync(sd->iscsi_ctx); + iscsi_destroy_context(sd->iscsi_ctx); + sd->iscsi_ctx = NULL; + } } return 0; } @@ -863,11 +875,31 @@ static void parse_and_add_tests(char *testname_re) static int connect_scsi_device(struct scsi_device *sdev, const char *initiatorname) { - sdev->iscsi_ctx = iscsi_context_login(initiatorname, sdev->iscsi_url, &sdev->iscsi_lun); - if (sdev->iscsi_ctx == NULL) { - return -1; + if (sdev->iscsi_url) { + sdev->iscsi_ctx = iscsi_context_login(initiatorname, sdev->iscsi_url, &sdev->iscsi_lun); + if (sdev->iscsi_ctx == NULL) { + return -1; + } + return 0; } - return 0; +#ifdef HAVE_SG_IO + if (sdev->sgio_dev) { + int version; + + if ((sdev->sgio_fd = open(sdev->sgio_dev, O_RDWR)) == -1) { + fprintf(stderr, "Failed to open SG_IO device %s. Error:%s\n", sdev->sgio_dev, + strerror(errno)); + return -1; + } + if ((ioctl(sdev->sgio_fd, SG_GET_VERSION_NUM, &version) < 0) || (version < 30000)) { + fprintf(stderr, "%s is not a SCSI device node\n", sdev->sgio_dev); + close(sdev->sgio_fd); + return -1; + } + return 0; + } +#endif + return -1; } static void free_scsi_device(struct scsi_device *sdev) @@ -885,6 +917,15 @@ static void free_scsi_device(struct scsi_device *sdev) iscsi_destroy_context(sdev->iscsi_ctx); sdev->iscsi_ctx = NULL; } + + if (sdev->sgio_dev) { + free(discard_const(sdev->sgio_dev)); + sdev->sgio_dev = NULL; + } + if (sdev->sgio_fd != -1) { + close(sdev->sgio_fd); + sdev->sgio_fd = -1; + } free(sd); } @@ -929,6 +970,7 @@ main(int argc, char *argv[]) sd = malloc(sizeof(struct scsi_device)); memset(sd, '\0', sizeof(struct scsi_device)); + sd->sgio_fd = -1; while ((c = getopt_long(argc, argv, "?hli:I:t:sdgfAsSnuvxV", long_opts, &opt_idx)) > 0) { @@ -991,7 +1033,13 @@ main(int argc, char *argv[]) } if (optind < argc) { - sd->iscsi_url = strdup(argv[optind++]); + if (!strncmp(argv[optind], "iscsi://", 8)) { + sd->iscsi_url = strdup(argv[optind++]); +#ifdef HAVE_SG_IO + } else if (!strncmp(argv[optind], "/dev/sg", 7)) { + sd->sgio_dev = strdup(argv[optind++]); +#endif + } } if (optind < argc) { fprintf(stderr, "error: too many arguments\n"); @@ -1002,8 +1050,12 @@ main(int argc, char *argv[]) /* XXX why is this done? */ real_iscsi_queue_pdu = dlsym(RTLD_NEXT, "iscsi_queue_pdu"); - if (sd->iscsi_url == NULL) { - fprintf(stderr, "You must specify the URL\n"); + if (sd->iscsi_url == NULL && sd->sgio_dev== NULL ) { +#ifdef HAVE_SG_IO + fprintf(stderr, "You must specify either an iSCSI URL or a /dev/sg device\n"); +#else + fprintf(stderr, "You must specify either an iSCSI URL\n"); +#endif print_usage(); if (testname_re) free(testname_re); diff --git a/test-tool/test_read10_beyond_eol.c b/test-tool/test_read10_beyond_eol.c index 236ebe4..ae9aa95 100644 --- a/test-tool/test_read10_beyond_eol.c +++ b/test-tool/test_read10_beyond_eol.c @@ -46,7 +46,6 @@ test_read10_beyond_eol(void) CU_ASSERT_EQUAL(ret, 0); } - logging(LOG_VERBOSE, "Test READ10 1-256 blocks at LBA==2^31"); for (i = 1; i <= 256; i++) { if (maximum_transfer_length && maximum_transfer_length < i) { diff --git a/test-tool/test_read16_beyond_eol.c b/test-tool/test_read16_beyond_eol.c index 6e6138e..badf6b3 100644 --- a/test-tool/test_read16_beyond_eol.c +++ b/test-tool/test_read16_beyond_eol.c @@ -60,7 +60,6 @@ test_read16_beyond_eol(void) CU_ASSERT_EQUAL(ret, 0); } - logging(LOG_VERBOSE, "Test READ16 1-256 blocks at LBA==2^63"); for (i = 1; i <= 256; i++) { if (maximum_transfer_length && maximum_transfer_length < i) { From 59817c7959ca6953fca2c0157bc0ee8aa8a5beee Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 16:33:03 -0700 Subject: [PATCH 30/53] TESTS: rename the old and abandoned scsi-usb-sbc testsuite to LINUX Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-test-cu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 70ad3c4..48ea6f9 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -542,7 +542,7 @@ static libiscsi_suite_info all_suites[] = { { NULL, NULL, NULL, NULL, NULL, NULL }, }; -static libiscsi_suite_info scsi_usb_sbc_suites[] = { +static libiscsi_suite_info linux_suites[] = { { "CompareAndWrite", NON_PGR_FUNCS, tests_compareandwrite }, { "GetLBAStatus", NON_PGR_FUNCS, tests_get_lba_status }, { "Inquiry", NON_PGR_FUNCS, tests_inquiry }, @@ -588,11 +588,11 @@ struct test_family { }; static struct test_family families[] = { - { "ALL", all_suites }, - { "SCSI", scsi_suites }, - { "iSCSI", iscsi_suites }, - { "SCSI-USB-SBC", scsi_usb_sbc_suites }, - { NULL, NULL} + { "ALL", all_suites }, + { "SCSI", scsi_suites }, + { "iSCSI", iscsi_suites }, + { "LINUX", linux_suites }, + { NULL, NULL} }; /* From 1e3cc445c8d0bd1c03c3b150c4182a8a564af294 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 17:15:48 -0700 Subject: [PATCH 31/53] TESTS: Remove some tests that wont work yet for /dev/sg Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 16 ++++------------ test-tool/iscsi-test-cu.c | 7 ------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index eb30c25..c3e7d12 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1920,8 +1920,8 @@ int unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; - struct scsi_iovec *iov; unsigned char *data; + struct iscsi_data d; int xferlen; int i; int ret; @@ -1956,18 +1956,10 @@ unmap(struct scsi_device *sdev, int anchor, struct unmap_list *list, int list_le scsi_set_uint32(&data[8 + 16 * i + 8], list[i].num); } - iov = scsi_malloc(task, sizeof(struct scsi_iovec)); - if (iov == NULL) { - logging(LOG_NORMAL, "Out-of-memory: Failed to create " - "iov array."); - scsi_free_scsi_task(task); - return -1; - } - iov->iov_base = data; - iov->iov_len = xferlen; - scsi_task_set_iov_out(task, iov, 1); + d.data = data; + d.size = xferlen; - task = send_scsi_command(sdev, task, NULL); + task = send_scsi_command(sdev, task, &d); ret = check_result("UNMAP", sdev, task, status, key, ascq, num_ascq); if (task) { diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index 48ea6f9..d76e376 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -547,15 +547,9 @@ static libiscsi_suite_info linux_suites[] = { { "GetLBAStatus", NON_PGR_FUNCS, tests_get_lba_status }, { "Inquiry", NON_PGR_FUNCS, tests_inquiry }, { "Mandatory", NON_PGR_FUNCS, tests_mandatory }, - { "ModeSense6", NON_PGR_FUNCS, tests_modesense6 }, { "OrWrite", NON_PGR_FUNCS, tests_orwrite }, { "Prefetch10", NON_PGR_FUNCS, tests_prefetch10 }, { "Prefetch16", NON_PGR_FUNCS, tests_prefetch16 }, - { "PrinReadKeys", NON_PGR_FUNCS, tests_prin_read_keys }, - { "PrinServiceactionRange", NON_PGR_FUNCS, - tests_prin_serviceaction_range }, - { "ProutRegister", NON_PGR_FUNCS, tests_prout_register }, - { "ProutReserve", NON_PGR_FUNCS, tests_prout_reserve }, { "Read6", NON_PGR_FUNCS, tests_read6 }, { "Read10", NON_PGR_FUNCS, tests_read10 }, { "Read12", NON_PGR_FUNCS, tests_read12 }, @@ -565,7 +559,6 @@ static libiscsi_suite_info linux_suites[] = { { "ReadOnly", NON_PGR_FUNCS, tests_readonly }, { "ReportSupportedOpcodes", NON_PGR_FUNCS, tests_report_supported_opcodes }, - { "Reserve6", NON_PGR_FUNCS, tests_reserve6 }, { "TestUnitReady", NON_PGR_FUNCS, tests_testunitready }, { "Unmap", NON_PGR_FUNCS, tests_unmap }, { "Verify10", NON_PGR_FUNCS, tests_verify10 }, From d11e4175f7f51598bfb700e6065fedb1e411e13a Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 19 Sep 2014 17:33:21 -0700 Subject: [PATCH 32/53] TESTS: Dont memcpy if task==NULL Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index c3e7d12..ca4e5e6 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1621,7 +1621,7 @@ read6(struct scsi_device *sdev, uint32_t lba, task = send_scsi_command(sdev, task, NULL); ret = check_result("READ6", sdev, task, status, key, ascq, num_ascq); - if (data) { + if (data && task) { memcpy(data, task->datain.data, task->datain.size); } if (task) { @@ -1654,7 +1654,7 @@ read10(struct scsi_device *sdev, struct scsi_task **out_task, task = send_scsi_command(sdev, task, NULL); ret = check_result("READ10", sdev, task, status, key, ascq, num_ascq); - if (data) { + if (data && task) { memcpy(data, task->datain.data, task->datain.size); } if (out_task) { @@ -1688,7 +1688,7 @@ read12(struct scsi_device *sdev, uint32_t lba, task = send_scsi_command(sdev, task, NULL); ret = check_result("READ12", sdev, task, status, key, ascq, num_ascq); - if (data) { + if (data && task) { memcpy(data, task->datain.data, task->datain.size); } if (task) { @@ -1720,7 +1720,7 @@ read16(struct scsi_device *sdev, uint64_t lba, task = send_scsi_command(sdev, task, NULL); ret = check_result("READ16", sdev, task, status, key, ascq, num_ascq); - if (data) { + if (data && task) { memcpy(data, task->datain.data, task->datain.size); } if (task) { From ef20220ac2067d4c319081a780b9278aeeed6e47 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 14:19:35 -0700 Subject: [PATCH 33/53] iscsi-test-cy.c: drop READ6 from the linux tests. it is obsolete --- test-tool/iscsi-test-cu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/test-tool/iscsi-test-cu.c b/test-tool/iscsi-test-cu.c index d76e376..ce57f7f 100644 --- a/test-tool/iscsi-test-cu.c +++ b/test-tool/iscsi-test-cu.c @@ -550,7 +550,6 @@ static libiscsi_suite_info linux_suites[] = { { "OrWrite", NON_PGR_FUNCS, tests_orwrite }, { "Prefetch10", NON_PGR_FUNCS, tests_prefetch10 }, { "Prefetch16", NON_PGR_FUNCS, tests_prefetch16 }, - { "Read6", NON_PGR_FUNCS, tests_read6 }, { "Read10", NON_PGR_FUNCS, tests_read10 }, { "Read12", NON_PGR_FUNCS, tests_read12 }, { "Read16", NON_PGR_FUNCS, tests_read16 }, From f2904be1f6203ba1deae76417000a363e772b639 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 14:19:58 -0700 Subject: [PATCH 34/53] Typo Signed-off-by: Ronnie Sahlberg --- test-tool/test_writeverify10_beyond_eol.c | 2 +- test-tool/test_writeverify10_wrprotect.c | 2 +- test-tool/test_writeverify12_0blocks.c | 2 +- test-tool/test_writeverify12_beyond_eol.c | 2 +- test-tool/test_writeverify12_flags.c | 2 +- test-tool/test_writeverify12_simple.c | 2 +- test-tool/test_writeverify12_wrprotect.c | 2 +- test-tool/test_writeverify16_0blocks.c | 2 +- test-tool/test_writeverify16_beyond_eol.c | 2 +- test-tool/test_writeverify16_flags.c | 2 +- test-tool/test_writeverify16_residuals.c | 2 +- test-tool/test_writeverify16_simple.c | 2 +- test-tool/test_writeverify16_wrprotect.c | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/test-tool/test_writeverify10_beyond_eol.c b/test-tool/test_writeverify10_beyond_eol.c index fa6778a..6dad866 100644 --- a/test-tool/test_writeverify10_beyond_eol.c +++ b/test-tool/test_writeverify10_beyond_eol.c @@ -48,7 +48,7 @@ test_writeverify10_beyond_eol(void) i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY10 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); return; } diff --git a/test-tool/test_writeverify10_wrprotect.c b/test-tool/test_writeverify10_wrprotect.c index 8f38524..7364ddb 100644 --- a/test-tool/test_writeverify10_wrprotect.c +++ b/test-tool/test_writeverify10_wrprotect.c @@ -49,7 +49,7 @@ test_writeverify10_wrprotect(void) i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY10 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY10 is not implemented."); CU_PASS("WRITEVERIFY10 is not implemented."); return; } diff --git a/test-tool/test_writeverify12_0blocks.c b/test-tool/test_writeverify12_0blocks.c index f23287a..4f84f21 100644 --- a/test-tool/test_writeverify12_0blocks.c +++ b/test-tool/test_writeverify12_0blocks.c @@ -41,7 +41,7 @@ test_writeverify12_0blocks(void) 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); return; } diff --git a/test-tool/test_writeverify12_beyond_eol.c b/test-tool/test_writeverify12_beyond_eol.c index 009ba1f..0a158c4 100644 --- a/test-tool/test_writeverify12_beyond_eol.c +++ b/test-tool/test_writeverify12_beyond_eol.c @@ -48,7 +48,7 @@ test_writeverify12_beyond_eol(void) i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); return; } diff --git a/test-tool/test_writeverify12_flags.c b/test-tool/test_writeverify12_flags.c index 5c0a6e3..a894e29 100644 --- a/test-tool/test_writeverify12_flags.c +++ b/test-tool/test_writeverify12_flags.c @@ -42,7 +42,7 @@ test_writeverify12_flags(void) block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); return; } diff --git a/test-tool/test_writeverify12_simple.c b/test-tool/test_writeverify12_simple.c index 8ddefa3..1fc0054 100644 --- a/test-tool/test_writeverify12_simple.c +++ b/test-tool/test_writeverify12_simple.c @@ -45,7 +45,7 @@ test_writeverify12_simple(void) block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); return; } diff --git a/test-tool/test_writeverify12_wrprotect.c b/test-tool/test_writeverify12_wrprotect.c index 8923d65..fac88d4 100644 --- a/test-tool/test_writeverify12_wrprotect.c +++ b/test-tool/test_writeverify12_wrprotect.c @@ -49,7 +49,7 @@ test_writeverify12_wrprotect(void) i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY12 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY12 is not implemented."); CU_PASS("WRITEVERIFY12 is not implemented."); return; } diff --git a/test-tool/test_writeverify16_0blocks.c b/test-tool/test_writeverify16_0blocks.c index cfbe32b..ef0d29c 100644 --- a/test-tool/test_writeverify16_0blocks.c +++ b/test-tool/test_writeverify16_0blocks.c @@ -37,7 +37,7 @@ test_writeverify16_0blocks(void) 0, block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); return; } diff --git a/test-tool/test_writeverify16_beyond_eol.c b/test-tool/test_writeverify16_beyond_eol.c index 11e5b81..7af0a7f 100644 --- a/test-tool/test_writeverify16_beyond_eol.c +++ b/test-tool/test_writeverify16_beyond_eol.c @@ -45,7 +45,7 @@ test_writeverify16_beyond_eol(void) i * block_size, block_size, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); return; } diff --git a/test-tool/test_writeverify16_flags.c b/test-tool/test_writeverify16_flags.c index 6316b83..911a417 100644 --- a/test-tool/test_writeverify16_flags.c +++ b/test-tool/test_writeverify16_flags.c @@ -42,7 +42,7 @@ test_writeverify16_flags(void) block_size, block_size, 0, 1, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); return; } diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index 281e3f0..bc264cc 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -48,7 +48,7 @@ test_writeverify16_residuals(void) block_size, 0, 0, 0, 0, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("[SKIPPED] Target does not support WRITEVERIFY16. Skipping test"); return; } diff --git a/test-tool/test_writeverify16_simple.c b/test-tool/test_writeverify16_simple.c index 581b055..d36558a 100644 --- a/test-tool/test_writeverify16_simple.c +++ b/test-tool/test_writeverify16_simple.c @@ -47,7 +47,7 @@ test_writeverify16_simple(void) block_size, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); return; } diff --git a/test-tool/test_writeverify16_wrprotect.c b/test-tool/test_writeverify16_wrprotect.c index b104c88..48ef14a 100644 --- a/test-tool/test_writeverify16_wrprotect.c +++ b/test-tool/test_writeverify16_wrprotect.c @@ -51,7 +51,7 @@ test_writeverify16_wrprotect(void) i, 0, 0, 0, buf, EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { - logging(LOG_NORMAL, "[SKIPPED] WRITE1VERIFY16 is not implemented."); + logging(LOG_NORMAL, "[SKIPPED] WRITEVERIFY16 is not implemented."); CU_PASS("WRITEVERIFY16 is not implemented."); return; } From 2af45d9ad4475af1602e70e674d23c303c686c62 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 14:58:12 -0700 Subject: [PATCH 35/53] initialize sense to keep valgrind happy valgrind does not know that sense will be initialized by the ioctl so we need to to it explicitely to keep it from warning us. Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index ca4e5e6..889abbc 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1,4 +1,3 @@ - /* iscsi-test tool support @@ -200,6 +199,7 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi unsigned char sense[sense_len]; char buf[1024]; + memset(sense, 0, sizeof(sense)); memset(&io_hdr, 0, sizeof(sg_io_hdr_t)); io_hdr.interface_id = 'S'; From 38798e2090fb7cc6b36eb3622f14f36fb77be78d Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 15:10:38 -0700 Subject: [PATCH 36/53] initialize task->datain.data to keep valgrind happy Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 889abbc..ca1ea8d 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -224,7 +224,8 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi case SCSI_XFER_READ: io_hdr.dxfer_direction = SG_DXFER_FROM_DEV; task->datain.size = task->expxferlen; - task->datain.data = malloc(task->expxferlen); + task->datain.data = malloc(task->datain.size); + memset(task->datain.data, 0, task->datain.size); io_hdr.dxferp = task->datain.data; io_hdr.dxfer_len = task->datain.size; break; From 264ea509c8e1befa517606ab540a2bff3117684b Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 15:14:51 -0700 Subject: [PATCH 37/53] iscsi-support.c: fix memory leaks. Thanks valgrind, you rock Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index ca1ea8d..7569983 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -235,6 +235,9 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi io_hdr.timeout = 5000; if(ioctl(sdev->sgio_fd, SG_IO, &io_hdr) < 0){ + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + } sdev->error_str = strdup("SG_IO ioctl failed"); return NULL; } @@ -261,6 +264,9 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi task->sense.key, scsi_sense_ascq_str(task->sense.ascq), task->sense.ascq); + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + } sdev->error_str = strdup(buf); return task; } @@ -270,6 +276,9 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi task->sense.key = 0x0f; task->sense.ascq = 0xffff; + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + } sdev->error_str = strdup("SCSI masked error"); return NULL; } @@ -279,6 +288,9 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi task->sense.ascq = 0xffff; snprintf(buf, sizeof(buf), "SCSI host error. Status=0x%x", io_hdr.host_status); + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + } sdev->error_str = strdup(buf); return task; } @@ -287,6 +299,9 @@ static struct scsi_task *send_scsi_command(struct scsi_device *sdev, struct scsi task->sense.key = 0x0f; task->sense.ascq = 0xffff; + if (sdev->error_str != NULL) { + free(discard_const(sdev->error_str)); + } sdev->error_str = strdup("SCSI driver error"); return NULL; } From 839276dd7cc355673bfa92e2380c2b03490fae5c Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 15:24:41 -0700 Subject: [PATCH 38/53] TESTS: fix memory leaks in report supported opcodes tests Signed-off-by: Ronnie Sahlberg --- test-tool/test_report_supported_opcodes_one_command.c | 2 ++ test-tool/test_report_supported_opcodes_rctd.c | 2 ++ test-tool/test_report_supported_opcodes_servactv.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/test-tool/test_report_supported_opcodes_one_command.c b/test-tool/test_report_supported_opcodes_one_command.c index a8001c8..d11eca9 100644 --- a/test-tool/test_report_supported_opcodes_one_command.c +++ b/test-tool/test_report_supported_opcodes_one_command.c @@ -47,10 +47,12 @@ test_report_supported_opcodes_one_command(void) logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); CU_PASS("READ_SUPPORTED_OPCODES is not implemented."); + scsi_free_scsi_task(rso_task); return; } CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { + scsi_free_scsi_task(rso_task); return; } diff --git a/test-tool/test_report_supported_opcodes_rctd.c b/test-tool/test_report_supported_opcodes_rctd.c index 011820a..cb6f3b8 100644 --- a/test-tool/test_report_supported_opcodes_rctd.c +++ b/test-tool/test_report_supported_opcodes_rctd.c @@ -47,10 +47,12 @@ test_report_supported_opcodes_rctd(void) logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); CU_PASS("READ_SUPPORTED_OPCODES is not implemented."); + scsi_free_scsi_task(rso_task); return; } CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { + scsi_free_scsi_task(rso_task); return; } diff --git a/test-tool/test_report_supported_opcodes_servactv.c b/test-tool/test_report_supported_opcodes_servactv.c index 56a6662..307f373 100644 --- a/test-tool/test_report_supported_opcodes_servactv.c +++ b/test-tool/test_report_supported_opcodes_servactv.c @@ -45,10 +45,12 @@ test_report_supported_opcodes_servactv(void) logging(LOG_NORMAL, "[SKIPPED] READ_SUPPORTED_OPCODES is not " "implemented."); CU_PASS("READ_SUPPORTED_OPCODES is not implemented."); + scsi_free_scsi_task(rso_task); return; } CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { + scsi_free_scsi_task(rso_task); return; } From 47d7e4b0acf3dd0912a8d406ffc8eff73be73ea7 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sun, 21 Sep 2014 15:30:40 -0700 Subject: [PATCH 39/53] TESTS: make sure ascq_ok is initialized Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 7569983..daa1443 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -118,7 +118,7 @@ static int check_result(const char *opcode, struct scsi_device *sdev, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { - int ascq_ok; + int ascq_ok = 0; if (task == NULL) { logging(LOG_NORMAL, "[FAILED] Failed to send %s command: " From 5f9444b91a5561343ae582f7d87a0c069bf7ec50 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 23 Sep 2014 17:27:08 -0700 Subject: [PATCH 40/53] libiscsi.def: we do not need to specify scsi_cdb_compareandwrite twice Signed-off-by: Ronnie Sahlberg --- lib/libiscsi.def | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/libiscsi.def b/lib/libiscsi.def index 962df11..df17bdc 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -157,7 +157,6 @@ iscsi_writesame16_task scsi_association_to_str scsi_cdb_compareandwrite scsi_cdb_inquiry -scsi_cdb_compareandwrite scsi_cdb_get_lba_status scsi_cdb_modeselect6 scsi_cdb_modeselect10 From 0666691b2aaebf57f6e52c08883b2ca598a6a9e6 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 23 Sep 2014 20:57:59 -0700 Subject: [PATCH 41/53] TESTS: pass an actual block to the ritesame16/0blocks test Signed-off-by: Ronnie Sahlberg --- test-tool/test_writesame10_0blocks.c | 1 + test-tool/test_writesame16_0blocks.c | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/test-tool/test_writesame10_0blocks.c b/test-tool/test_writesame10_0blocks.c index cc07488..4bcd001 100644 --- a/test-tool/test_writesame10_0blocks.c +++ b/test-tool/test_writesame10_0blocks.c @@ -40,6 +40,7 @@ test_writesame10_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME10 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); + memset(buf, 0, block_size); ret = writesame10(sd, 0, block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); diff --git a/test-tool/test_writesame16_0blocks.c b/test-tool/test_writesame16_0blocks.c index 68cff38..b9091c4 100644 --- a/test-tool/test_writesame16_0blocks.c +++ b/test-tool/test_writesame16_0blocks.c @@ -27,6 +27,7 @@ void test_writesame16_0blocks(void) { int ret; + unsigned char *buf = alloca(block_size); CHECK_FOR_DATALOSS; CHECK_FOR_SBC; @@ -34,8 +35,9 @@ test_writesame16_0blocks(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==0 (WSNZ=%d)", inq_bl->wsnz); + memset(buf, 0, block_size); ret = writesame16(sd, 0, - block_size, 0, 0, 0, 0, 0, NULL, + block_size, 0, 0, 0, 0, 0, buf, EXPECT_STATUS_GOOD); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] WRITESAME16 is not implemented."); @@ -55,21 +57,21 @@ test_writesame16_0blocks(void) logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks one block past end-of-LUN"); ret = writesame16(sd, num_blocks + 1, - block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + block_size, inq_bl->wsnz, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==2^63"); ret = writesame16(sd, 0x8000000000000000ULL, - block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + block_size, inq_bl->wsnz, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Test WRITESAME16 0-blocks at LBA==-1"); ret = writesame16(sd, -1, - block_size, inq_bl->wsnz, 0, 0, 0, 0, NULL, + block_size, inq_bl->wsnz, 0, 0, 0, 0, buf, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); } From abbf9a11b05e17425a06bfdfd50b5807ac39a8ed Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 08:10:14 -0700 Subject: [PATCH 42/53] TESTS: change modeselect to become /dev/sg-aware Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 122 +++++++++++++------------- test-tool/iscsi-support.h | 1 + test-tool/test_modesense6_all_pages.c | 32 ++----- test-tool/test_modesense6_residuals.c | 67 +++++--------- test-tool/test_sanitize_readonly.c | 5 +- 5 files changed, 96 insertions(+), 131 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index daa1443..bfd4356 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1482,6 +1482,40 @@ int modesense6(struct scsi_device *sdev, struct scsi_task **out_task, int dbd, e return ret; } +int modeselect6(struct scsi_device *sdev, int pf, int sp, struct scsi_mode_page *mp, int status, enum scsi_sense_key key, int *ascq, int num_ascq) +{ + struct scsi_task *task; + int ret; + struct scsi_data *data; + struct iscsi_data d; + + logging(LOG_VERBOSE, "Send MODESELECT6 (Expecting %s) ", + scsi_status_str(status)); + + task = scsi_cdb_modeselect6(pf, sp, 255); + assert(task != NULL); + + data = scsi_modesense_dataout_marshall(task, mp, 1); + if (data == NULL) { + logging(LOG_VERBOSE, "Failed to marshall MODESELECT6 data"); + scsi_free_scsi_task(task); + return -1; + } + + d.data = data->data; + d.size = data->size; + task->cdb[4] = data->size; + task->expxferlen = data->size; + + task = send_scsi_command(sdev, task, &d); + + ret = check_result("MODESELECT6", sdev, task, status, key, ascq, num_ascq); + if (task) { + scsi_free_scsi_task(task); + } + return ret; +} + int compareandwrite(struct scsi_device *sdev, uint64_t lba, unsigned char *data, uint32_t datalen, int blocksize, int wrprotect, int dpo, @@ -2394,29 +2428,21 @@ get_command_descriptor(int opcode, int sa) int set_swp(struct scsi_device *sdev) { - int ret = 0; + int ret; struct scsi_task *sense_task = NULL; - struct scsi_task *select_task = NULL; struct scsi_mode_sense *ms; struct scsi_mode_page *mp; logging(LOG_VERBOSE, "Read CONTROL page"); - sense_task = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, - 1, SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_CONTROL, - 0, 255); - if (sense_task == NULL) { - logging(LOG_NORMAL, "Failed to send MODE_SENSE6 command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; - goto finished; - } - if (sense_task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "MODE_SENSE6 failed: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; + ret = modesense6(sdev, &sense_task, 1, SCSI_MODESENSE_PC_CURRENT, + SCSI_MODEPAGE_CONTROL, 0, 255, + EXPECT_STATUS_GOOD); + if (ret) { + logging(LOG_NORMAL, "Failed to read CONTROL mode page."); goto finished; } + logging(LOG_VERBOSE, "[SUCCESS] CONTROL page fetched."); + ms = scsi_datain_unmarshall(sense_task); if (ms == NULL) { logging(LOG_NORMAL, "failed to unmarshall mode sense datain " @@ -2434,56 +2460,38 @@ int set_swp(struct scsi_device *sdev) logging(LOG_VERBOSE, "Turn SWP ON"); mp->control.swp = 1; - select_task = iscsi_modeselect6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, - 1, 0, mp); - if (select_task == NULL) { - logging(LOG_NORMAL, "Failed to send MODE_SELECT6 command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; - goto finished; - } - if (select_task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "MODE_SELECT6 failed: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; + ret = modeselect6(sdev, 1, 0, mp, + EXPECT_STATUS_GOOD); + if (ret) { + logging(LOG_NORMAL, "Failed to write CONTROL mode page."); goto finished; } + logging(LOG_VERBOSE, "[SUCCESS] CONTROL page written."); finished: if (sense_task != NULL) { scsi_free_scsi_task(sense_task); } - if (select_task != NULL) { - scsi_free_scsi_task(select_task); - } return ret; } int clear_swp(struct scsi_device *sdev) { - int ret = 0; + int ret; struct scsi_task *sense_task = NULL; - struct scsi_task *select_task = NULL; struct scsi_mode_sense *ms; struct scsi_mode_page *mp; logging(LOG_VERBOSE, "Read CONTROL page"); - sense_task = iscsi_modesense6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, - 1, SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_CONTROL, - 0, 255); - if (sense_task == NULL) { - logging(LOG_NORMAL, "Failed to send MODE_SENSE6 command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; - goto finished; - } - if (sense_task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "MODE_SENSE6 failed: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; + ret = modesense6(sdev, &sense_task, 1, SCSI_MODESENSE_PC_CURRENT, + SCSI_MODEPAGE_CONTROL, 0, 255, + EXPECT_STATUS_GOOD); + if (ret) { + logging(LOG_NORMAL, "Failed to read CONTROL mode page."); goto finished; } + logging(LOG_VERBOSE, "[SUCCESS] CONTROL page fetched."); + ms = scsi_datain_unmarshall(sense_task); if (ms == NULL) { logging(LOG_NORMAL, "failed to unmarshall mode sense datain " @@ -2501,27 +2509,17 @@ int clear_swp(struct scsi_device *sdev) logging(LOG_VERBOSE, "Turn SWP OFF"); mp->control.swp = 0; - select_task = iscsi_modeselect6_sync(sdev->iscsi_ctx, sdev->iscsi_lun, - 1, 0, mp); - if (select_task == NULL) { - logging(LOG_NORMAL, "Failed to send MODE_SELECT6 command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; - goto finished; - } - if (select_task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "MODE_SELECT6 failed: %s", - iscsi_get_error(sdev->iscsi_ctx)); - ret = -1; + ret = modeselect6(sdev, 1, 0, mp, + EXPECT_STATUS_GOOD); + if (ret) { + logging(LOG_NORMAL, "Failed to write CONTROL mode page."); goto finished; } + logging(LOG_VERBOSE, "[SUCCESS] CONTROL page written."); finished: if (sense_task != NULL) { scsi_free_scsi_task(sense_task); } - if (select_task != NULL) { - scsi_free_scsi_task(select_task); - } return ret; } diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 0cadb28..8739601 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -272,6 +272,7 @@ int compareandwrite(struct scsi_device *sdev, uint64_t lba, unsigned char *data, int get_lba_status(struct scsi_device *sdev, struct scsi_task **task, uint64_t lba, uint32_t len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int inquiry(struct scsi_device *sdev, struct scsi_task **task, int evpd, int page_code, int maxsize, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int modesense6(struct scsi_device *sdev, struct scsi_task **task, int dbd, enum scsi_modesense_page_control pc, enum scsi_modesense_page_code page_code, int sub_page_code, unsigned char alloc_len, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int modeselect6(struct scsi_device *sdev, int pf, int sp, struct scsi_mode_page *mp, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int wrprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_modesense6_all_pages.c b/test-tool/test_modesense6_all_pages.c index 1f0ddc0..9cf9461 100644 --- a/test-tool/test_modesense6_all_pages.c +++ b/test-tool/test_modesense6_all_pages.c @@ -28,39 +28,28 @@ void test_modesense6_all_pages(void) { struct scsi_mode_sense *ms; + struct scsi_task *ms_task = NULL; + int ret; logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test of MODESENSE6 AllPages"); - if (task != NULL) { - scsi_free_scsi_task(task); - task = NULL; - } - logging(LOG_VERBOSE, "Send MODESENSE6 command to fetch AllPages"); - task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, - SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_RETURN_ALL_PAGES, - 0, 255); - if (task == NULL || task->status != SCSI_STATUS_GOOD) { - logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " - "command:%s", - iscsi_get_error(sd->iscsi_ctx)); - CU_FAIL("[FAILED] Failed to fetch the All Pages page."); - return; - } + ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT, + SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255, + EXPECT_STATUS_GOOD); + CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched."); logging(LOG_VERBOSE, "Try to unmarshall the DATA-IN buffer."); - ms = scsi_datain_unmarshall(task); + ms = scsi_datain_unmarshall(ms_task); if (ms == NULL) { logging(LOG_VERBOSE, "[FAILED] failed to unmarshall mode sense " "datain buffer"); CU_FAIL("[FAILED] Failed to unmarshall the data-in buffer."); - scsi_free_scsi_task(task); - task = NULL; + scsi_free_scsi_task(ms_task); return; } logging(LOG_VERBOSE, "[SUCCESS] Unmarshalling successful."); @@ -75,8 +64,5 @@ test_modesense6_all_pages(void) CU_ASSERT_TRUE(ms->mode_data_length >= 3); - if (task != NULL) { - scsi_free_scsi_task(task); - task = NULL; - } + scsi_free_scsi_task(ms_task); } diff --git a/test-tool/test_modesense6_residuals.c b/test-tool/test_modesense6_residuals.c index ab0eb97..ab0dbbf 100644 --- a/test-tool/test_modesense6_residuals.c +++ b/test-tool/test_modesense6_residuals.c @@ -27,6 +27,9 @@ void test_modesense6_residuals(void) { + struct scsi_task *ms_task = NULL; + int ret; + logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test of MODESENSE6 Residuals"); @@ -36,95 +39,69 @@ test_modesense6_residuals(void) logging(LOG_VERBOSE, "Try a MODESENSE6 command with 4 bytes of " "transfer length and verify that we don't get residuals."); - if (task != NULL) { - scsi_free_scsi_task(task); - task = NULL; - } - task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, - SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_RETURN_ALL_PAGES, - 0, 4); - if (task == NULL || task->status != SCSI_STATUS_GOOD) { - logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " - "command:%s", - iscsi_get_error(sd->iscsi_ctx)); - CU_FAIL("[FAILED] Failed to fetch the All Pages page."); - return; - } + ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT, + SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 4, + EXPECT_STATUS_GOOD); + CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched."); logging(LOG_VERBOSE, "Verify that we got at most 4 bytes of DATA-IN"); - if (task->datain.size > 4) { + if (ms_task->datain.size > 4) { logging(LOG_NORMAL, "[FAILED] got more than 4 bytes of " "DATA-IN."); } else { logging(LOG_VERBOSE, "[SUCCESS] <= 4 bytes of DATA-IN " "received."); } - CU_ASSERT_TRUE(task->datain.size <= 4); + CU_ASSERT_TRUE(ms_task->datain.size <= 4); logging(LOG_VERBOSE, "Verify residual overflow flag not set"); - if (task->residual_status == SCSI_RESIDUAL_OVERFLOW) { + if (ms_task->residual_status == SCSI_RESIDUAL_OVERFLOW) { logging(LOG_VERBOSE, "[FAILED] Target set residual " "overflow flag"); } - CU_ASSERT_NOT_EQUAL(task->residual_status, SCSI_RESIDUAL_OVERFLOW); + CU_ASSERT_NOT_EQUAL(ms_task->residual_status, SCSI_RESIDUAL_OVERFLOW); logging(LOG_VERBOSE, "Try a MODESENSE6 command with 255 bytes of " "transfer length and verify that we get residuals if the target returns less than the requested amount of data."); - if (task != NULL) { - scsi_free_scsi_task(task); - task = NULL; - } - task = iscsi_modesense6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, - SCSI_MODESENSE_PC_CURRENT, - SCSI_MODEPAGE_RETURN_ALL_PAGES, - 0, 255); - if (task == NULL || task->status != SCSI_STATUS_GOOD) { - logging(LOG_VERBOSE, "[FAILED] Failed to send MODE_SENSE6 " - "command:%s", - iscsi_get_error(sd->iscsi_ctx)); - CU_FAIL("[FAILED] Failed to fetch the All Pages page."); - return; - } + scsi_free_scsi_task(ms_task); + ret = modesense6(sd, &ms_task, 0, SCSI_MODESENSE_PC_CURRENT, + SCSI_MODEPAGE_RETURN_ALL_PAGES, 0, 255, + EXPECT_STATUS_GOOD); + CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "[SUCCESS] All Pages fetched."); - - if (task->datain.size == 255) { + if (ms_task->datain.size == 255) { logging(LOG_VERBOSE, "We got all 255 bytes of data back " "from the target. Verify that underflow is not set."); - if (task->residual_status == SCSI_RESIDUAL_UNDERFLOW) { + if (ms_task->residual_status == SCSI_RESIDUAL_UNDERFLOW) { logging(LOG_VERBOSE, "[FAILED] Target set residual " "underflow flag"); } else { logging(LOG_VERBOSE, "[SUCCESS] Residual underflow " "is not set"); } - CU_ASSERT_NOT_EQUAL(task->residual_status, + CU_ASSERT_NOT_EQUAL(ms_task->residual_status, SCSI_RESIDUAL_UNDERFLOW); } else { logging(LOG_VERBOSE, "We got less than the requested 255 bytes " "from the target. Verify that underflow is set."); - if (task->residual_status != SCSI_RESIDUAL_UNDERFLOW) { + if (ms_task->residual_status != SCSI_RESIDUAL_UNDERFLOW) { logging(LOG_VERBOSE, "[FAILED] Target did not set " "residual underflow flag"); } else { logging(LOG_VERBOSE, "[SUCCESS] Residual underflow " "is set"); } - CU_ASSERT_EQUAL(task->residual_status, + CU_ASSERT_EQUAL(ms_task->residual_status, SCSI_RESIDUAL_UNDERFLOW); } - - if (task != NULL) { - scsi_free_scsi_task(task); - task = NULL; - } + scsi_free_scsi_task(ms_task); } diff --git a/test-tool/test_sanitize_readonly.c b/test-tool/test_sanitize_readonly.c index 7d52ece..f526a26 100644 --- a/test-tool/test_sanitize_readonly.c +++ b/test-tool/test_sanitize_readonly.c @@ -41,7 +41,10 @@ test_sanitize_readonly(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, "Create a second connection to the target"); - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; From 45d87238e2324c4ecda3dec03a87d339894c54f8 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 08:58:24 -0700 Subject: [PATCH 43/53] TESTS: Flag a whole bunch of tests as not supported on non-iSCSI backends Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 6 +- test-tool/iscsi-support.h | 2 +- test-tool/test_iscsi_cmdsn_toohigh.c | 8 +++ test-tool/test_iscsi_cmdsn_toolow.c | 8 +++ test-tool/test_iscsi_datasn_invalid.c | 7 ++ test-tool/test_preventallow_2_itnexuses.c | 8 +++ test-tool/test_preventallow_cold_reset.c | 8 +++ test-tool/test_preventallow_itnexus_loss.c | 8 +++ test-tool/test_preventallow_logout.c | 8 +++ test-tool/test_preventallow_lun_reset.c | 8 +++ test-tool/test_preventallow_warm_reset.c | 8 +++ test-tool/test_prout_reserve_access.c | 78 +++++++++++++++++++-- test-tool/test_prout_reserve_ownership.c | 78 +++++++++++++++++++-- test-tool/test_read10_invalid.c | 8 +++ test-tool/test_read10_residuals.c | 8 +++ test-tool/test_read12_residuals.c | 8 +++ test-tool/test_read16_residuals.c | 8 +++ test-tool/test_read6_beyond_eol.c | 6 +- test-tool/test_read6_simple.c | 11 +-- test-tool/test_reserve6_2initiators.c | 7 ++ test-tool/test_reserve6_itnexus_loss.c | 7 ++ test-tool/test_reserve6_logout.c | 7 ++ test-tool/test_reserve6_lun_reset.c | 7 ++ test-tool/test_reserve6_target_cold_reset.c | 7 ++ test-tool/test_reserve6_target_warm_reset.c | 7 ++ test-tool/test_sanitize_block_erase.c | 2 +- test-tool/test_sanitize_readonly.c | 8 +++ test-tool/test_sanitize_reservations.c | 8 +++ test-tool/test_sanitize_reset.c | 8 +++ test-tool/test_write10_residuals.c | 8 +++ test-tool/test_write12_residuals.c | 8 +++ test-tool/test_write16_residuals.c | 8 +++ test-tool/test_writeverify10_residuals.c | 8 +++ test-tool/test_writeverify12_residuals.c | 8 +++ test-tool/test_writeverify16_residuals.c | 16 +++++ 35 files changed, 384 insertions(+), 24 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index bfd4356..7296e9f 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -1653,7 +1653,7 @@ preventallow(struct scsi_device *sdev, int prevent) } int -read6(struct scsi_device *sdev, uint32_t lba, +read6(struct scsi_device *sdev, struct scsi_task **out_task, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) @@ -1674,7 +1674,9 @@ read6(struct scsi_device *sdev, uint32_t lba, if (data && task) { memcpy(data, task->datain.data, task->datain.size); } - if (task) { + if (out_task) { + *out_task = task; + } else if (task) { scsi_free_scsi_task(task); } return ret; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 8739601..91feb0a 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -277,7 +277,7 @@ int orwrite(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocks int prefetch10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int prefetch16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int immed, int group, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int preventallow(struct scsi_device *sdev, int prevent); -int read6(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); +int read6(struct scsi_device *sdev, struct scsi_task **task, uint32_t lba, uint32_t datalen, int blocksize, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read10(struct scsi_device *sdev, struct scsi_task **task, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read12(struct scsi_device *sdev, uint32_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int read16(struct scsi_device *sdev, uint64_t lba, uint32_t datalen, int blocksize, int rdprotect, int dpo, int fua, int fua_nv, int group, unsigned char *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_iscsi_cmdsn_toohigh.c b/test-tool/test_iscsi_cmdsn_toohigh.c index 013716a..eb7aa53 100644 --- a/test-tool/test_iscsi_cmdsn_toohigh.c +++ b/test-tool/test_iscsi_cmdsn_toohigh.c @@ -51,6 +51,14 @@ void test_iscsi_cmdsn_toohigh(void) logging(LOG_VERBOSE, "Test sending invalid iSCSI CMDSN"); logging(LOG_VERBOSE, "CMDSN MUST be in the range EXPCMDSN and MAXCMDSN"); + 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; + } + logging(LOG_VERBOSE, "RFC3720:3.2.2.1 CMDSN > MAXCMDSN must be silently ignored by the target"); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == MAXCMDSN+1. Should be ignored by the target."); diff --git a/test-tool/test_iscsi_cmdsn_toolow.c b/test-tool/test_iscsi_cmdsn_toolow.c index 0372f5f..c9cbc40 100644 --- a/test-tool/test_iscsi_cmdsn_toolow.c +++ b/test-tool/test_iscsi_cmdsn_toolow.c @@ -51,6 +51,14 @@ void test_iscsi_cmdsn_toolow(void) logging(LOG_VERBOSE, "Test sending invalid iSCSI CMDSN"); logging(LOG_VERBOSE, "CMDSN MUST be in the range EXPCMDSN and MAXCMDSN"); + 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; + } + logging(LOG_VERBOSE, "RFC3720:3.2.2.1 CMDSN < EXPCMDSN must be silently ignored by the target"); logging(LOG_VERBOSE, "Send a TESTUNITREADY with CMDSN == EXPCMDSN-1. Should be ignored by the target."); diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c index 7d7d7b9..f16d5ec 100644 --- a/test-tool/test_iscsi_datasn_invalid.c +++ b/test-tool/test_iscsi_datasn_invalid.c @@ -65,6 +65,13 @@ void test_iscsi_datasn_invalid(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test sending invalid iSCSI DATASN"); + 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; + } logging(LOG_VERBOSE, "Send 2 DATAIN with DATASN==0. Should fail."); change_datasn = 1; diff --git a/test-tool/test_preventallow_2_itnexuses.c b/test-tool/test_preventallow_2_itnexuses.c index a14854c..a957fe3 100644 --- a/test-tool/test_preventallow_2_itnexuses.c +++ b/test-tool/test_preventallow_2_itnexuses.c @@ -36,6 +36,14 @@ test_preventallow_2_itnexuses(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that PREVENT MEDIUM REMOVAL are seen on other nexuses as well"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_cold_reset.c b/test-tool/test_preventallow_cold_reset.c index 5ccf5fa..a604b2e 100644 --- a/test-tool/test_preventallow_cold_reset.c +++ b/test-tool/test_preventallow_cold_reset.c @@ -35,6 +35,14 @@ test_preventallow_cold_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_itnexus_loss.c b/test-tool/test_preventallow_itnexus_loss.c index ac4ccb4..38b8d0f 100644 --- a/test-tool/test_preventallow_itnexus_loss.c +++ b/test-tool/test_preventallow_itnexus_loss.c @@ -35,6 +35,14 @@ test_preventallow_itnexus_loss(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that IT-Nexus loss clears PREVENT MEDIUM REMOVAL"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_logout.c b/test-tool/test_preventallow_logout.c index d92238a..e78baed 100644 --- a/test-tool/test_preventallow_logout.c +++ b/test-tool/test_preventallow_logout.c @@ -35,6 +35,14 @@ test_preventallow_logout(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that Logout loss clears PREVENT MEDIUM REMOVAL"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_lun_reset.c b/test-tool/test_preventallow_lun_reset.c index 7efb2b8..f7c0502 100644 --- a/test-tool/test_preventallow_lun_reset.c +++ b/test-tool/test_preventallow_lun_reset.c @@ -35,6 +35,14 @@ test_preventallow_lun_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_preventallow_warm_reset.c b/test-tool/test_preventallow_warm_reset.c index 87c68f8..42604d1 100644 --- a/test-tool/test_preventallow_warm_reset.c +++ b/test-tool/test_preventallow_warm_reset.c @@ -35,6 +35,14 @@ test_preventallow_warm_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that Target Warm Reset clears PREVENT MEDIUM REMOVAL"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PREVENTALLOW test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Set the PREVENT flag"); ret = preventallow(sd, 1); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_prout_reserve_access.c b/test-tool/test_prout_reserve_access.c index ff39f89..c3c5ce3 100644 --- a/test-tool/test_prout_reserve_access.c +++ b/test-tool/test_prout_reserve_access.c @@ -124,7 +124,18 @@ test_prout_reserve_access_ea(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -140,7 +151,18 @@ test_prout_reserve_access_we(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -156,7 +178,18 @@ test_prout_reserve_access_earo(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -172,7 +205,18 @@ test_prout_reserve_access_wero(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -188,7 +232,18 @@ test_prout_reserve_access_eaar(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -204,7 +259,18 @@ test_prout_reserve_access_wear(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; diff --git a/test-tool/test_prout_reserve_ownership.c b/test-tool/test_prout_reserve_ownership.c index d57e600..54c7638 100644 --- a/test-tool/test_prout_reserve_ownership.c +++ b/test-tool/test_prout_reserve_ownership.c @@ -98,7 +98,18 @@ test_prout_reserve_ownership_ea(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -113,7 +124,18 @@ test_prout_reserve_ownership_we(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -128,7 +150,18 @@ test_prout_reserve_ownership_earo(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -143,7 +176,18 @@ test_prout_reserve_ownership_wero(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -158,7 +202,18 @@ test_prout_reserve_ownership_eaar(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; @@ -173,7 +228,18 @@ test_prout_reserve_ownership_wear(void) { struct scsi_device sd2; - sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This PERSISTENT RESERVE test is " + "only supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + + memset(&sd2, 0, sizeof(sd2)); + sd2.iscsi_url = sd->iscsi_url; + sd2.iscsi_lun = sd->iscsi_lun; + sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd2.iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { logging(LOG_VERBOSE, "Failed to login to target"); return; diff --git a/test-tool/test_read10_invalid.c b/test-tool/test_read10_invalid.c index 4dfed15..40e55c2 100644 --- a/test-tool/test_read10_invalid.c +++ b/test-tool/test_read10_invalid.c @@ -39,6 +39,14 @@ test_read10_invalid(void) logging(LOG_VERBOSE, "Test invalid READ10 commands"); logging(LOG_VERBOSE, "Block size is %zu", block_size); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This READ10 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a read10 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_read10_residuals.c b/test-tool/test_read10_residuals.c index bb89c15..f546efa 100644 --- a/test-tool/test_read10_residuals.c +++ b/test-tool/test_read10_residuals.c @@ -40,6 +40,14 @@ test_read10_residuals(void) logging(LOG_VERBOSE, "Test READ10 commands with residuals"); logging(LOG_VERBOSE, "Block size is %zu", block_size); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This READ10 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a read10 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_read12_residuals.c b/test-tool/test_read12_residuals.c index e359075..1deddc0 100644 --- a/test-tool/test_read12_residuals.c +++ b/test-tool/test_read12_residuals.c @@ -36,6 +36,14 @@ test_read12_residuals(void) logging(LOG_VERBOSE, "Test READ12 commands with residuals"); logging(LOG_VERBOSE, "Block size is %zu", block_size); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This READ12 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_read16_residuals.c b/test-tool/test_read16_residuals.c index a914754..125b662 100644 --- a/test-tool/test_read16_residuals.c +++ b/test-tool/test_read16_residuals.c @@ -36,6 +36,14 @@ test_read16_residuals(void) logging(LOG_VERBOSE, "Test READ16 commands with residuals"); logging(LOG_VERBOSE, "Block size is %zu", block_size); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This READ16 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_read6_beyond_eol.c b/test-tool/test_read6_beyond_eol.c index eecf32f..b0020ef 100644 --- a/test-tool/test_read6_beyond_eol.c +++ b/test-tool/test_read6_beyond_eol.c @@ -38,7 +38,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 1-255 blocks one block beyond the end"); for (i = 1; i <= 255; i++) { - ret = read6(sd, num_blocks + 1 - i, + ret = read6(sd, NULL, num_blocks + 1 - i, i * block_size, block_size, NULL, EXPECT_LBA_OOB); if (ret == -2) { @@ -52,7 +52,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 1-255 blocks at LBA==0x1fffff"); for (i = 1; i <= 255; i++) { - ret = read6(sd, 0x1fffff, + ret = read6(sd, NULL, 0x1fffff, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); @@ -61,7 +61,7 @@ test_read6_beyond_eol(void) logging(LOG_VERBOSE, "Test READ6 2-255 blocks all but one block beyond the end"); for (i = 2; i <= 255; i++) { - ret = read6(sd, num_blocks - 1, + ret = read6(sd, NULL, num_blocks - 1, i * block_size, block_size, NULL, EXPECT_LBA_OOB); CU_ASSERT_EQUAL(ret, 0); diff --git a/test-tool/test_read6_simple.c b/test-tool/test_read6_simple.c index f9d1d95..eb98a9f 100644 --- a/test-tool/test_read6_simple.c +++ b/test-tool/test_read6_simple.c @@ -34,7 +34,7 @@ test_read6_simple(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test READ6 of 1-255 blocks at the start of the LUN"); for (i = 1; i <= 255; i++) { - ret = read6(sd, 0, i * block_size, + ret = read6(sd, NULL, 0, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); if (ret == -2) { @@ -51,7 +51,7 @@ test_read6_simple(void) CU_PASS("LUN is too big for read-at-eol tests with READ6. Skipping test.\n"); } else { for (i = 1; i <= 255; i++) { - ret = read6(sd, num_blocks - i, + ret = read6(sd, NULL, num_blocks - i, i * block_size, block_size, NULL, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -64,11 +64,12 @@ test_read6_simple(void) logging(LOG_VERBOSE, "Test sending a READ6 with transfer length == 0 " "(meaning 256 blocks)"); /* 256 is converted to 0 when the CDB is marshalled by the helper */ - task = iscsi_read6_sync(sd->iscsi_ctx, sd->iscsi_lun, 0, - 256 * block_size, block_size); + ret = read6(sd, &task, 0, + 256 * block_size, block_size, NULL, + EXPECT_STATUS_GOOD); if (task->status != SCSI_STATUS_GOOD) { logging(LOG_NORMAL, "[FAILED] READ6 command: " - "failed with sense. %s", iscsi_get_error(sd->iscsi_ctx)); + "failed with sense. %s", sd->error_str ); } CU_ASSERT_EQUAL(task->status, SCSI_STATUS_GOOD); diff --git a/test-tool/test_reserve6_2initiators.c b/test-tool/test_reserve6_2initiators.c index 4a4e733..b95ebf0 100644 --- a/test-tool/test_reserve6_2initiators.c +++ b/test-tool/test_reserve6_2initiators.c @@ -34,6 +34,13 @@ test_reserve6_2initiators(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test RESERVE6/RELEASE6 across two initiators"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_reserve6_itnexus_loss.c b/test-tool/test_reserve6_itnexus_loss.c index adfa771..0555f18 100644 --- a/test-tool/test_reserve6_itnexus_loss.c +++ b/test-tool/test_reserve6_itnexus_loss.c @@ -34,6 +34,13 @@ test_reserve6_itnexus_loss(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on it-nexus loss"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_reserve6_logout.c b/test-tool/test_reserve6_logout.c index 85193f1..5feacba 100644 --- a/test-tool/test_reserve6_logout.c +++ b/test-tool/test_reserve6_logout.c @@ -34,6 +34,13 @@ test_reserve6_logout(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on logout"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_NORMAL, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_reserve6_lun_reset.c b/test-tool/test_reserve6_lun_reset.c index 110d710..9175056 100644 --- a/test-tool/test_reserve6_lun_reset.c +++ b/test-tool/test_reserve6_lun_reset.c @@ -34,6 +34,13 @@ test_reserve6_lun_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on lun reset"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_reserve6_target_cold_reset.c b/test-tool/test_reserve6_target_cold_reset.c index 8a76ef7..9b98168 100644 --- a/test-tool/test_reserve6_target_cold_reset.c +++ b/test-tool/test_reserve6_target_cold_reset.c @@ -34,6 +34,13 @@ test_reserve6_target_cold_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on target cold reset"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_reserve6_target_warm_reset.c b/test-tool/test_reserve6_target_warm_reset.c index 078d393..cf31e84 100644 --- a/test-tool/test_reserve6_target_warm_reset.c +++ b/test-tool/test_reserve6_target_warm_reset.c @@ -34,6 +34,13 @@ test_reserve6_target_warm_reset(void) logging(LOG_VERBOSE, LOG_BLANK_LINE); logging(LOG_VERBOSE, "Test that RESERVE6 is released on target warm reset"); + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This RESERVE6 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } logging(LOG_VERBOSE, "Take out a RESERVE6 from the first initiator"); ret = reserve6(sd); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index 1cb6d77..33dde5c 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -121,7 +121,7 @@ check_unmap(void) if (task_ret->status != SCSI_STATUS_GOOD) { logging(LOG_VERBOSE, "[FAILED] Failed to read LBA mapping " "from the target. Sense: %s", - iscsi_get_error(sd->iscsi_ctx)); + sd->error_str); CU_FAIL("[FAILED] Failed to read LBA mapping " "from the target."); scsi_free_scsi_task(task_ret); diff --git a/test-tool/test_sanitize_readonly.c b/test-tool/test_sanitize_readonly.c index f526a26..5577338 100644 --- a/test-tool/test_sanitize_readonly.c +++ b/test-tool/test_sanitize_readonly.c @@ -40,6 +40,14 @@ test_sanitize_readonly(void) CHECK_FOR_SANITIZE; CHECK_FOR_DATALOSS; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This SANITIZE test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Create a second connection to the target"); memset(&sd2, 0, sizeof(sd2)); sd2.iscsi_url = sd->iscsi_url; diff --git a/test-tool/test_sanitize_reservations.c b/test-tool/test_sanitize_reservations.c index 262dd65..9a272a6 100644 --- a/test-tool/test_sanitize_reservations.c +++ b/test-tool/test_sanitize_reservations.c @@ -40,6 +40,14 @@ test_sanitize_reservations(void) CHECK_FOR_SANITIZE; CHECK_FOR_DATALOSS; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This SANITIZE test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Create a second connection to the target"); sd2.iscsi_ctx = iscsi_context_login(initiatorname2, sd->iscsi_url, &sd2.iscsi_lun); if (sd2.iscsi_ctx == NULL) { diff --git a/test-tool/test_sanitize_reset.c b/test-tool/test_sanitize_reset.c index f2bd11b..604d112 100644 --- a/test-tool/test_sanitize_reset.c +++ b/test-tool/test_sanitize_reset.c @@ -46,6 +46,14 @@ test_sanitize_reset(void) CHECK_FOR_SANITIZE; CHECK_FOR_DATALOSS; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This SANITIZE test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + logging(LOG_VERBOSE, "Check that SANITIZE OVERWRITE will continue " "even after Task/Lun/Target/* reset."); cd = get_command_descriptor(SCSI_OPCODE_SANITIZE, diff --git a/test-tool/test_write10_residuals.c b/test-tool/test_write10_residuals.c index 07f8931..7c68d47 100644 --- a/test-tool/test_write10_residuals.c +++ b/test-tool/test_write10_residuals.c @@ -43,6 +43,14 @@ test_write10_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITE10 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a write10 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_write12_residuals.c b/test-tool/test_write12_residuals.c index 036f5df..854b840 100644 --- a/test-tool/test_write12_residuals.c +++ b/test-tool/test_write12_residuals.c @@ -43,6 +43,14 @@ test_write12_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITE12 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a write12 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_write16_residuals.c b/test-tool/test_write16_residuals.c index 6a6b46b..6860994 100644 --- a/test-tool/test_write16_residuals.c +++ b/test-tool/test_write16_residuals.c @@ -43,6 +43,14 @@ test_write16_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITE16 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a write16 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); diff --git a/test-tool/test_writeverify10_residuals.c b/test-tool/test_writeverify10_residuals.c index 6c8069a..287ec85 100644 --- a/test-tool/test_writeverify10_residuals.c +++ b/test-tool/test_writeverify10_residuals.c @@ -43,6 +43,14 @@ test_writeverify10_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITEVERIFY10 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* check if writeverify10 is supported */ ret = writeverify10(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, diff --git a/test-tool/test_writeverify12_residuals.c b/test-tool/test_writeverify12_residuals.c index ffe91f7..879bbf8 100644 --- a/test-tool/test_writeverify12_residuals.c +++ b/test-tool/test_writeverify12_residuals.c @@ -43,6 +43,14 @@ test_writeverify12_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITEVERIFY12 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* check if writeverify12 is supported */ ret = writeverify12(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, diff --git a/test-tool/test_writeverify16_residuals.c b/test-tool/test_writeverify16_residuals.c index bc264cc..72f84a8 100644 --- a/test-tool/test_writeverify16_residuals.c +++ b/test-tool/test_writeverify16_residuals.c @@ -43,6 +43,14 @@ test_writeverify16_residuals(void) CHECK_FOR_DATALOSS; CHECK_FOR_SBC; + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] This WRITEVERIFY16 test is only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* check if writeverify16 is supported */ ret = writeverify16(sd, 0, 0, block_size, 0, 0, 0, 0, NULL, @@ -53,6 +61,14 @@ test_writeverify16_residuals(void) return; } + if (sd->iscsi_ctx == NULL) { + const char *err = "[SKIPPED] WRITEVERIFY16 tests are only " + "supported for iSCSI backends"; + logging(LOG_NORMAL, "%s", err); + CU_PASS(err); + return; + } + /* Try a writeverify16 of 1 block but xferlength == 0 */ task = malloc(sizeof(struct scsi_task)); CU_ASSERT_PTR_NOT_NULL(task); From edbfb12232af1a3d997c66191a204844d1dbb558 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 09:27:02 -0700 Subject: [PATCH 44/53] TESTS: Allow inquiry data to contain padding IFF it is all zero Some implementations may send oversized data coming back from Inquiry. Warn about this instead of failing the test but then perform additional checks that the padding MUST be zero or else fail the test. Signed-off-by: Ronnie Sahlberg --- test-tool/test_inquiry_standard.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/test-tool/test_inquiry_standard.c b/test-tool/test_inquiry_standard.c index d4c110e..4ea35f4 100644 --- a/test-tool/test_inquiry_standard.c +++ b/test-tool/test_inquiry_standard.c @@ -83,13 +83,29 @@ test_inquiry_standard(void) CU_ASSERT_EQUAL(std_inq->response_data_format, 2); logging(LOG_VERBOSE, "Verify additional-length is correct"); - if (std_inq->additional_length != task->datain.size - 5) { + if (std_inq->additional_length > task->datain.size - 5) { logging(LOG_NORMAL, "[FAILED] Bad additional length " "returned. Should be %d but device returned %d.", task->datain.size - 5, std_inq->additional_length); + logging(LOG_NORMAL, "[FAILED] Additional length points " + "beyond end of data"); + CU_FAIL("Additional length points beyond end of data"); + } + if (std_inq->additional_length < task->datain.size - 5) { + logging(LOG_NORMAL, "[WARNING] Bad additional length " + "returned. Should be %d but device returned %d. ", + task->datain.size - 5, + std_inq->additional_length); + logging(LOG_VERBOSE, "Verify that all padding data is 0"); + for (i = std_inq->additional_length + 6; i < task->datain.size; i++) { + if (!task->datain.data[i]) + continue; + logging(LOG_NORMAL, "[FAILED] Padding data is not zero." + " Are we leaking data?"); + CU_FAIL("Padding data is not zero. Leaking data?"); + } } - CU_ASSERT_EQUAL(std_inq->additional_length, task->datain.size - 5); logging(LOG_VERBOSE, "Verify VENDOR_IDENTIFICATION is in ASCII"); for (i = 8; i < 16; i++) { From f3205bb095f0ff83649236762eb6ba7886e16e4e Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 09:48:16 -0700 Subject: [PATCH 45/53] scsi-lowlevel.c: check that task/datain are valid before we unmarshalling Signed-off-by: Ronnie Sahlberg --- lib/scsi-lowlevel.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index 696626b..600b7c2 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -3252,19 +3252,18 @@ scsi_datain_getfullsize(struct scsi_task *task) void * scsi_datain_unmarshall(struct scsi_task *task) { - switch (task->cdb[0]) { - case SCSI_OPCODE_TESTUNITREADY: + if (!task || !task->datain.size) return NULL; + + switch (task->cdb[0]) { case SCSI_OPCODE_INQUIRY: return scsi_inquiry_datain_unmarshall(task); case SCSI_OPCODE_MODESENSE6: - return scsi_modesense_datain_unmarshall(task, 1); + return scsi_modesense_datain_unmarshall(task, 1); case SCSI_OPCODE_MODESENSE10: return scsi_modesense_datain_unmarshall(task, 0); case SCSI_OPCODE_READCAPACITY10: return scsi_readcapacity10_datain_unmarshall(task); - case SCSI_OPCODE_SYNCHRONIZECACHE10: - return NULL; case SCSI_OPCODE_READTOC: return scsi_readtoc_datain_unmarshall(task); case SCSI_OPCODE_REPORTLUNS: From d411f12bbc43e0d0e79a8ccf2a754601f2554098 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Sat, 27 Sep 2014 12:54:34 -0700 Subject: [PATCH 46/53] TESTS: tweak inquiry blocklimits test Signed-off-by: Ronnie Sahlberg --- test-tool/test_inquiry_block_limits.c | 54 ++++++++++++++------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/test-tool/test_inquiry_block_limits.c b/test-tool/test_inquiry_block_limits.c index 75179bd..e917f65 100644 --- a/test-tool/test_inquiry_block_limits.c +++ b/test-tool/test_inquiry_block_limits.c @@ -38,9 +38,10 @@ test_inquiry_block_limits(void) CHECK_FOR_SBC; - logging(LOG_VERBOSE, "Block device. Verify that we can read Block Limits VPD"); + logging(LOG_VERBOSE, "Block device. Verify that we can read Block " + "Limits VPD"); ret = inquiry(sd, &bl_task, - 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 64, + 1, SCSI_INQUIRY_PAGECODE_BLOCK_LIMITS, 255, EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); if (ret != 0) { @@ -57,45 +58,46 @@ test_inquiry_block_limits(void) goto finished; } - logging(LOG_VERBOSE, "Verify that the PageLength matches up with the size of the DATA-IN buffer."); + logging(LOG_VERBOSE, "Verify that the PageLength matches up with the " + "size of the DATA-IN buffer."); CU_ASSERT_EQUAL(bl_task->datain.size, bl_task->datain.data[3] + 4); if (bl_task->datain.size != bl_task->datain.data[3] + 4) { logging(LOG_NORMAL, "[FAILURE] Invalid PageLength returned. " "Was %d but expected %d", bl_task->datain.data[3], bl_task->datain.size - 4); } else { - logging(LOG_VERBOSE, "[SUCCESS] PageLength matches DataIn buffer size"); + logging(LOG_VERBOSE, "[SUCCESS] PageLength matches DataIn " + "buffer size"); } logging(LOG_VERBOSE, "Verify that the PageLength matches SCSI-level."); /* if it is not SBC3 then we assume it must be SBC2 */ if (sbc3_support) { - logging(LOG_VERBOSE, "Device claims SBC-3. Verify that " "PageLength == 0x3C"); + logging(LOG_VERBOSE, "Device claims SBC-3. Verify that " "page size is >= 60"); } else { logging(LOG_VERBOSE, "Device is not SBC-3. Verify that " - "PageLength == 0x0C (but allow 0x3C too. Some SBC-2 " + "PageLength == 8 (but allow >= 60 too. Some SBC-2 " "devices support some SBC-3 features."); } - switch (bl_task->datain.data[3]) { - case 0x3c: - /* accept 0x3c (==SBC-3) for all levels */ - if (!sbc3_support) { - logging(LOG_NORMAL, "[WARNING] SBC-3 pagelength (0x3C) " - "returned but SBC-3 support was not claimed " - "in the standard inquiry page."); - } - break; - case 0x0c: - /* only accept 0x0c for levels < SBC-3 */ - if (!sbc3_support) { - break; - } - /* fallthrough */ - default: - CU_FAIL("[FAILED] Invalid pagelength returned"); - logging(LOG_NORMAL, "[FAILURE] Invalid PageLength returned."); - } + if (bl_task->datain.data[3] == 8) { + if (sbc3_support) { + logging(LOG_NORMAL, "[FAILURE] Invalid PageLength " + "returned. SBC3 claimed but page length " + "is 8."); + CU_FAIL("[FAILED] Invalid pagelength returned. " + "SBC3 claimed but page length is 8."); + } + } else if (bl_task->datain.size >= 60) { + if (!sbc3_support) { + logging(LOG_NORMAL, "[WARNING] SBC-3 pagelength " + "(>=60) returned but SBC-3 support was not " + "claimed in the standard inquiry page."); + CU_FAIL("[WARNING] SBC-3 pagelength " + "(>=60) returned but SBC-3 support was not " + "claimed in the standard inquiry page."); + } + } if (bl_task->datain.data[3] != 0x3c) { goto finished; @@ -108,7 +110,7 @@ test_inquiry_block_limits(void) */ logging(LOG_VERBOSE, "Try reading the logical block provisioning VPD"); ret = inquiry(sd, &lbp_task, - 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64, + 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 255, EXPECT_STATUS_GOOD); if (ret == 0) { lbp = scsi_datain_unmarshall(lbp_task); From 14461757c441796f325be325bf02e35672535e06 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 8 Oct 2014 06:23:43 -0700 Subject: [PATCH 47/53] TESTS: Allow Hardware/Software write protect as valid ASCQ Add 0x2701/0x2702 to the list of valid ASCQ values we accept for devices that are write protected. Signed-off-by: Ronnie Sahlberg --- include/scsi-lowlevel.h | 2 ++ lib/scsi-lowlevel.c | 6 ++++++ test-tool/iscsi-support.c | 6 ++++-- test-tool/iscsi-support.h | 4 ++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/include/scsi-lowlevel.h b/include/scsi-lowlevel.h index 343ff19..598f270 100644 --- a/include/scsi-lowlevel.h +++ b/include/scsi-lowlevel.h @@ -159,6 +159,8 @@ EXTERN const char *scsi_sense_key_str(int key); #define SCSI_SENSE_ASCQ_LOGICAL_UNIT_NOT_SUPPORTED 0x2500 #define SCSI_SENSE_ASCQ_INVALID_FIELD_IN_PARAMETER_LIST 0x2600 #define SCSI_SENSE_ASCQ_WRITE_PROTECTED 0x2700 +#define SCSI_SENSE_ASCQ_HARDWARE_WRITE_PROTECTED 0x2701 +#define SCSI_SENSE_ASCQ_SOFTWARE_WRITE_PROTECTED 0x2702 #define SCSI_SENSE_ASCQ_BUS_RESET 0x2900 #define SCSI_SENSE_ASCQ_POWER_ON_OCCURED 0x2901 #define SCSI_SENSE_ASCQ_SCSI_BUS_RESET_OCCURED 0x2902 diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index 600b7c2..6b65369 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -188,6 +188,12 @@ scsi_sense_ascq_str(int ascq) "INVALID_FIELD_IN_PARAMETER_LIST"}, {SCSI_SENSE_ASCQ_WRITE_PROTECTED, "WRITE_PROTECTED"}, + {SCSI_SENSE_ASCQ_WRITE_PROTECTED, + "WRITE_PROTECTED"}, + {SCSI_SENSE_ASCQ_HARDWARE_WRITE_PROTECTED, + "HARDWARE_WRITE_PROTECTED"}, + {SCSI_SENSE_ASCQ_SOFTWARE_WRITE_PROTECTED, + "SOFTWARE_WRITE_PROTECTED"}, {SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, "MEDIUM_NOT_PRESENT"}, {SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED, diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 7296e9f..2b4c75e 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -66,8 +66,10 @@ int lba_oob_ascqs[1] = { int invalid_cdb_ascqs[1] = { SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB }; -int write_protect_ascqs[1] = { - SCSI_SENSE_ASCQ_WRITE_PROTECTED +int write_protect_ascqs[3] = { + SCSI_SENSE_ASCQ_WRITE_PROTECTED, + SCSI_SENSE_ASCQ_HARDWARE_WRITE_PROTECTED, + SCSI_SENSE_ASCQ_SOFTWARE_WRITE_PROTECTED }; int sanitize_ascqs[1] = { SCSI_SENSE_ASCQ_SANITIZE_IN_PROGRESS diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index 91feb0a..cd4434c 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -38,14 +38,14 @@ extern const char *initiatorname2; #define EXPECT_LBA_OOB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, lba_oob_ascqs, 1 #define EXPECT_INVALID_FIELD_IN_CDB SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, invalid_cdb_ascqs, 1 #define EXPECT_MISCOMPARE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_MISCOMPARE, miscompare_ascqs, 1 -#define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 1 +#define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 3 #define EXPECT_SANITIZE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, sanitize_ascqs, 1 #define EXPECT_REMOVAL_PREVENTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, removal_ascqs, 1 int no_medium_ascqs[3]; int lba_oob_ascqs[1]; int invalid_cdb_ascqs[1]; -int write_protect_ascqs[1]; +int write_protect_ascqs[3]; int sanitize_ascqs[1]; int removal_ascqs[1]; int miscompare_ascqs[1]; From 0763dc57439009a70623482e714ab61415289bc9 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 14 Oct 2014 11:47:36 +0200 Subject: [PATCH 48/53] libiscsi: Clear PS bit before sending MODE SELECT A quote from SPC-4: "When using the MODE SENSE command, a parameters saveable (PS) bit set to one indicates that the mode page may be saved by the logical unit in a nonvolatile, vendor specific location. A PS bit set to zero indicates that the device server is not able to save the supported parameters. When using the MODE SELECT command, the PS bit is reserved." Hence clear the PS bit after having queried a mode page via MODE SENSE and before changing it via MODE SELECT. Signed-off-by: Bart Van Assche --- test-tool/iscsi-support.c | 6 ++++++ utils/iscsi-swp.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index 2b4c75e..c009d70 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -2461,6 +2461,9 @@ int set_swp(struct scsi_device *sdev) goto finished; } + /* For MODE SELECT PS is reserved and hence must be cleared */ + mp->ps = 0; + logging(LOG_VERBOSE, "Turn SWP ON"); mp->control.swp = 1; @@ -2510,6 +2513,9 @@ int clear_swp(struct scsi_device *sdev) goto finished; } + /* For MODE SELECT PS is reserved and hence must be cleared */ + mp->ps = 0; + logging(LOG_VERBOSE, "Turn SWP OFF"); mp->control.swp = 0; diff --git a/utils/iscsi-swp.c b/utils/iscsi-swp.c index fc34281..c282df4 100644 --- a/utils/iscsi-swp.c +++ b/utils/iscsi-swp.c @@ -206,6 +206,9 @@ int main(int argc, char *argv[]) goto finished; } + /* For MODE SELECT PS is reserved and hence must be cleared */ + mp->ps = 0; + printf("SWP:%d\n", mp->control.swp); switch (swp) { From eee66727a7bb9f784e738304d0ed4c79b8c9dce2 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 14 Oct 2014 11:48:03 +0200 Subject: [PATCH 49/53] test_iscsi_datasn_invalid: Make terminology consistent with RFC 3720 According to RFC 3720 the data associated with a SCSI WRITE command is sent via Data-Out PDU's. Update log texts accordingly and also make the capitalization of DataSN consistent with RFC 3720. Signed-off-by: Bart Van Assche --- test-tool/test_iscsi_datasn_invalid.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test-tool/test_iscsi_datasn_invalid.c b/test-tool/test_iscsi_datasn_invalid.c index f16d5ec..61cbae7 100644 --- a/test-tool/test_iscsi_datasn_invalid.c +++ b/test-tool/test_iscsi_datasn_invalid.c @@ -35,19 +35,19 @@ static int my_iscsi_queue_pdu(struct iscsi_context *iscsi _U_, struct iscsi_pdu } switch (change_datasn) { case 1: - /* change datasn to 0 */ + /* change DataSN to 0 */ scsi_set_uint32(&pdu->outdata.data[36], 0); break; case 2: - /* change datasn to 27 */ + /* change DataSN to 27 */ scsi_set_uint32(&pdu->outdata.data[36], 27); break; case 3: - /* change datasn to -1 */ + /* change DataSN to -1 */ scsi_set_uint32(&pdu->outdata.data[36], -1); break; case 4: - /* change datasn from (0,1) to (1,0) */ + /* change DataSN from (0,1) to (1,0) */ datasn = scsi_get_uint32(&pdu->outdata.data[36]); scsi_set_uint32(&pdu->outdata.data[36], 1 - datasn); break; @@ -63,7 +63,7 @@ void test_iscsi_datasn_invalid(void) CHECK_FOR_DATALOSS; logging(LOG_VERBOSE, LOG_BLANK_LINE); - logging(LOG_VERBOSE, "Test sending invalid iSCSI DATASN"); + logging(LOG_VERBOSE, "Test sending invalid iSCSI DataSN"); if (sd->iscsi_ctx == NULL) { const char *err = "[SKIPPED] This test is " @@ -73,7 +73,7 @@ void test_iscsi_datasn_invalid(void) return; } - logging(LOG_VERBOSE, "Send 2 DATAIN with DATASN==0. Should fail."); + logging(LOG_VERBOSE, "Send two Data-Out PDU's with DataSN==0. Should fail."); change_datasn = 1; sd->iscsi_ctx->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; @@ -96,7 +96,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); - logging(LOG_VERBOSE, "Send DATAIN with DATASN==27. Should fail"); + 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; @@ -119,7 +119,7 @@ void test_iscsi_datasn_invalid(void) iscsi_set_noautoreconnect(sd->iscsi_ctx, 0); - logging(LOG_VERBOSE, "Send DATAIN with DATASN==-1. Should fail"); + 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; @@ -143,7 +143,7 @@ void test_iscsi_datasn_invalid(void) - logging(LOG_VERBOSE, "Send DATAIN in reverse order (datasn == 1,0). Should fail"); + 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; From 30355f8cc0e3dfb6e33ef6e1efc9df3a5c1679d1 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 14 Oct 2014 11:48:34 +0200 Subject: [PATCH 50/53] test_inquiry_block_limits: Only query VPD page B2h if LBPME = 1 In the READ CAPACITY response support for logical block provisioning is indicated via the LBPME (logical block provisioning management enabled) bit. Since the logical block provisioning VPD page (B2h) is optional, only query it if LBPME = 1. Signed-off-by: Bart Van Assche --- test-tool/test_inquiry_block_limits.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test-tool/test_inquiry_block_limits.c b/test-tool/test_inquiry_block_limits.c index e917f65..3976088 100644 --- a/test-tool/test_inquiry_block_limits.c +++ b/test-tool/test_inquiry_block_limits.c @@ -24,10 +24,19 @@ #include "iscsi-support.h" #include "iscsi-test-cu.h" +static void check_lbp(int *supports_lbp) +{ + *supports_lbp = 0; + + CHECK_FOR_THIN_PROVISIONING; + + *supports_lbp = 1; +} + void test_inquiry_block_limits(void) { - int ret; + int supports_lbp, ret; struct scsi_inquiry_block_limits *bl; struct scsi_task *bl_task = NULL; struct scsi_inquiry_logical_block_provisioning *lbp = NULL; @@ -103,6 +112,9 @@ test_inquiry_block_limits(void) goto finished; } + check_lbp(&supports_lbp); + if (!supports_lbp) + goto finished; /* * MAXIMUM UNMAP LBA COUNT From fe9620092c5ddc1bc910141bdb7fd58933b22bbc Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 14 Oct 2014 11:49:23 +0200 Subject: [PATCH 51/53] test tool: Detect unsupported opcodes correctly There is no agreement among the T10 committee whether a SCSI target should report "invalid opcode", "invalid field in CDB" or "invalid field in parameter list" if the opcode consists of two bytes. Hence accept all three sense codes for two-byte opcodes. For more information see also Frederick Knight, RE: INVALID COMMAND OPERATION CODE, T10 Reflector, 16 May 2008 (http://t10.org/ftp/t10/t10r/2008/r0805167.htm). Signed-off-by: Bart Van Assche --- test-tool/iscsi-support.c | 102 +++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index c009d70..b9c649a 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -115,6 +115,40 @@ static const char *scsi_status_str(int status) return "UNKNOWN"; } +static int status_is_invalid_field_in_cdb(struct scsi_task *task) +{ + return task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST + && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB; +} + +/* + * There is no agreement among the T10 committee whether a SCSI target should + * report "invalid opcode", "invalid field in CDB" or "invalid field in + * parameter list" if the opcode consists of two bytes. Hence accept all three + * sense codes for two-byte opcodes. For more information see also Frederick + * Knight, RE: INVALID COMMAND OPERATION CODE, T10 Reflector, 16 May 2008 + * (http://t10.org/ftp/t10/t10r/2008/r0805167.htm). + */ +static int status_is_invalid_opcode(struct scsi_task *task) +{ + if (task->status == SCSI_STATUS_CHECK_CONDITION + && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST) { + if (task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) + return 1; + switch (task->cdb[0]) { + case SCSI_OPCODE_MAINTENANCE_IN: + case SCSI_OPCODE_SERVICE_ACTION_IN: + switch (task->sense.ascq) { + case SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB: + case SCSI_SENSE_ASCQ_INVALID_FIELD_IN_PARAMETER_LIST: + return 1; + } + } + } + return 0; +} + static int check_result(const char *opcode, struct scsi_device *sdev, struct scsi_task *task, int status, enum scsi_sense_key key, @@ -127,9 +161,7 @@ static int check_result(const char *opcode, struct scsi_device *sdev, "%s", opcode, sdev->error_str); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] %s is not implemented.", opcode); return -2; @@ -493,9 +525,7 @@ prin_task(struct scsi_device *sdev, int service_action, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE IN is not implemented."); return -2; @@ -541,9 +571,7 @@ prin_read_keys(struct scsi_device *sdev, struct scsi_task **tp, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if ((*tp)->status == SCSI_STATUS_CHECK_CONDITION - && (*tp)->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && (*tp)->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(*tp)) { logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE IN is not implemented."); return -2; } @@ -597,9 +625,7 @@ prout_register_and_ignore(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION && - task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST && - task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] PROUT Not Supported"); ret = -2; goto dun; @@ -648,9 +674,7 @@ prout_register_key(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE OUT is not implemented."); return -2; @@ -692,9 +716,7 @@ prin_verify_key_presence(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE IN is not implemented."); return -2; @@ -767,9 +789,7 @@ prout_reregister_key_fails(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE OUT is not implemented."); return -2; @@ -817,9 +837,7 @@ prout_reserve(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE OUT is not implemented."); return -2; @@ -866,9 +884,7 @@ prout_release(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE OUT is not implemented."); return -2; @@ -907,9 +923,7 @@ prin_verify_reserved_as(struct scsi_device *sdev, iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE IN is not implemented."); return -2; @@ -980,9 +994,7 @@ prin_verify_not_reserved(struct scsi_device *sdev) iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { scsi_free_scsi_task(task); logging(LOG_NORMAL, "[SKIPPED] PERSISTENT RESERVE IN is not implemented."); return -2; @@ -1240,9 +1252,7 @@ int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_le iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " "implemented on target"); scsi_free_scsi_task(task); @@ -1277,9 +1287,7 @@ int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, in iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " "implemented on target"); scsi_free_scsi_task(task); @@ -1291,9 +1299,7 @@ int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, in scsi_free_scsi_task(task); return -1; } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_ILLEGAL_REQUEST - || task->sense.ascq != SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB) { + if (!status_is_invalid_field_in_cdb(task)) { logging(LOG_NORMAL, "[FAILED] SANITIZE failed with wrong " "sense. Should have failed with ILLEGAL_REQUEST/" "INVALID_FIELD_IN_CDB. Sense:%s\n", @@ -1635,9 +1641,7 @@ preventallow(struct scsi_device *sdev, int prevent) "command: %s", iscsi_get_error(sdev->iscsi_ctx)); return -1; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] PREVENTALLOW is not implemented on target"); scsi_free_scsi_task(task); return -2; @@ -1907,9 +1911,7 @@ reserve6(struct scsi_device *sdev) res = -1; break; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] RESERVE6 is not " "implemented on target"); res = -2; @@ -1947,9 +1949,7 @@ reserve6_conflict(struct scsi_device *sdev) res = -1; break; } - if (task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_OPERATION_CODE) { + if (status_is_invalid_opcode(task)) { logging(LOG_NORMAL, "[SKIPPED] RESERVE6 is not" " implemented on target"); res = -2; From 8ac7d6408259cef287ac0f78e9ac679a82f76d44 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 14 Oct 2014 19:25:17 -0700 Subject: [PATCH 52/53] TESTS: convert most of SANITIZE to new saner api Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 126 +++--------------- test-tool/iscsi-support.h | 4 +- test-tool/test_sanitize_block_erase.c | 8 +- .../test_sanitize_block_erase_reserved.c | 8 +- test-tool/test_sanitize_crypto_erase.c | 8 +- .../test_sanitize_crypto_erase_reserved.c | 8 +- test-tool/test_sanitize_exit_failure_mode.c | 4 +- .../test_sanitize_invalid_serviceaction.c | 4 +- test-tool/test_sanitize_overwrite.c | 33 ++--- test-tool/test_sanitize_overwrite_reserved.c | 9 +- test-tool/test_sanitize_readonly.c | 13 +- 11 files changed, 66 insertions(+), 159 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index b9c649a..aa9c73b 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -115,13 +115,6 @@ static const char *scsi_status_str(int status) return "UNKNOWN"; } -static int status_is_invalid_field_in_cdb(struct scsi_task *task) -{ - return task->status == SCSI_STATUS_CHECK_CONDITION - && task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST - && task->sense.ascq == SCSI_SENSE_ASCQ_INVALID_FIELD_IN_CDB; -} - /* * There is no agreement among the T10 committee whether a SCSI target should * report "invalid opcode", "invalid field in CDB" or "invalid field in @@ -1236,82 +1229,34 @@ synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num, int sync_nv, return ret; } -int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) +int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; + int ret; - logging(LOG_VERBOSE, "Send SANITIZE IMMED:%d AUSE:%d SA:%d " - "PARAM_LEN:%d", + logging(LOG_VERBOSE, "Send SANITIZE (Expecting %s) IMMED:%d AUSE:%d " + "SA:%d PARAM_LEN:%d", + scsi_status_str(status), immed, ause, sa, param_len); + if (!data_loss) { + printf("--dataloss flag is not set in. Skipping sanitize\n"); + return -1; + } + task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, data); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - return -1; - } - if (status_is_invalid_opcode(task)) { - logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " - "implemented on target"); - scsi_free_scsi_task(task); - return -2; - } - if (task->status != SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] SANITIZE command: failed with sense. %s", - iscsi_get_error(sdev->iscsi_ctx)); - scsi_free_scsi_task(task); - return -1; - } - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SANITIZE returned SUCCESS."); - return 0; -} + task = scsi_cdb_sanitize(immed, ause, sa, param_len); -int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) -{ - struct scsi_task *task; + assert(task != NULL); - logging(LOG_VERBOSE, "Send SANITIZE (Expecting INVALID_FIELD_IN_CDB) " - "IMMED:%d AUSE:%d SA:%d " - "PARAM_LEN:%d", - immed, ause, sa, param_len); + task = send_scsi_command(sdev, task, data); - task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, - data); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - return -1; - } - if (status_is_invalid_opcode(task)) { - logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " - "implemented on target"); + ret = check_result("SANITIZE", sdev, task, status, key, ascq, num_ascq); + if (task) { scsi_free_scsi_task(task); - return -2; } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SANITIZE successful but should " - "have failed with ILLEGAL_REQUEST/INVALID_FIELD_IN_CDB"); - scsi_free_scsi_task(task); - return -1; - } - if (!status_is_invalid_field_in_cdb(task)) { - logging(LOG_NORMAL, "[FAILED] SANITIZE failed with wrong " - "sense. Should have failed with ILLEGAL_REQUEST/" - "INVALID_FIELD_IN_CDB. Sense:%s\n", - iscsi_get_error(sdev->iscsi_ctx)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SANITIZE returned ILLEGAL_REQUEST/" - "INVALID_FIELD_IB_CDB."); - return 0; + return ret; } int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) @@ -1349,45 +1294,6 @@ int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int return 0; } -int sanitize_writeprotected(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send SANITIZE (Expecting WRITE_PROTECTED) " - "IMMED:%d AUSE:%d SA:%d " - "PARAM_LEN:%d", - immed, ause, sa, param_len); - - task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, - data); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, "[FAILED] SANITIZE successful but should " - "have failed with DATA_PROTECTION/WRITE_PROTECTED"); - scsi_free_scsi_task(task); - return -1; - } - if (task->status != SCSI_STATUS_CHECK_CONDITION - || task->sense.key != SCSI_SENSE_DATA_PROTECTION - || task->sense.ascq != SCSI_SENSE_ASCQ_WRITE_PROTECTED) { - logging(LOG_NORMAL, "[FAILED] SANITIZE failed with wrong " - "sense. Should have failed with DATA_PRTOTECTION/" - "WRITE_PROTECTED. Sense:%s\n", - iscsi_get_error(sdev->iscsi_ctx)); - scsi_free_scsi_task(task); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SANITIZE returned DATA_PROTECTION/WRITE_PROTECTED."); - return 0; -} - int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index cd4434c..c9e4f28 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -287,10 +287,8 @@ int report_supported_opcodes(struct scsi_device *sdev, struct scsi_task **save_t int release6(struct scsi_device *sdev); int reserve6(struct scsi_device *sdev); int reserve6_conflict(struct scsi_device *sdev); -int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); +int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int sanitize_invalidfieldincdb(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); -int sanitize_writeprotected(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_sanitize_block_erase.c b/test-tool/test_sanitize_block_erase.c index 33dde5c..f7cf647 100644 --- a/test-tool/test_sanitize_block_erase.c +++ b/test-tool/test_sanitize_block_erase.c @@ -325,8 +325,8 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "Test we can perform basic BLOCK ERASE SANITIZE"); - ret = sanitize(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Check that the first 256 LBAs are wiped."); @@ -341,8 +341,8 @@ test_sanitize_block_erase(void) logging(LOG_VERBOSE, "BLOCK_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "BLOCK ERASE"); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 8, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 8, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); if (inq_bdc) { diff --git a/test-tool/test_sanitize_block_erase_reserved.c b/test-tool/test_sanitize_block_erase_reserved.c index fa95933..4af0b63 100644 --- a/test-tool/test_sanitize_block_erase_reserved.c +++ b/test-tool/test_sanitize_block_erase_reserved.c @@ -63,8 +63,8 @@ void test_sanitize_block_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE BLOCK_ERASE is not " "implemented on target."); @@ -79,8 +79,8 @@ void test_sanitize_block_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_sanitize_crypto_erase.c b/test-tool/test_sanitize_crypto_erase.c index 7170199..008afe1 100644 --- a/test-tool/test_sanitize_crypto_erase.c +++ b/test-tool/test_sanitize_crypto_erase.c @@ -184,8 +184,8 @@ test_sanitize_crypto_erase(void) logging(LOG_VERBOSE, "Test we can perform basic CRYPTO ERASE SANITIZE"); - ret = sanitize(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Check that the first 256 LBAs are wiped."); @@ -202,8 +202,8 @@ return; logging(LOG_VERBOSE, "CRYPTO_ERASE parameter list length must be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "CRYPTO ERASE"); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 8, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 8, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); if (inq_bdc) { diff --git a/test-tool/test_sanitize_crypto_erase_reserved.c b/test-tool/test_sanitize_crypto_erase_reserved.c index ea18e97..01a4e78 100644 --- a/test-tool/test_sanitize_crypto_erase_reserved.c +++ b/test-tool/test_sanitize_crypto_erase_reserved.c @@ -63,8 +63,8 @@ void test_sanitize_crypto_erase_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE CRYPTO_ERASE is not " "implemented on target."); @@ -79,8 +79,8 @@ void test_sanitize_crypto_erase_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_sanitize_exit_failure_mode.c b/test-tool/test_sanitize_exit_failure_mode.c index a056364..fc937c2 100644 --- a/test-tool/test_sanitize_exit_failure_mode.c +++ b/test-tool/test_sanitize_exit_failure_mode.c @@ -60,7 +60,7 @@ test_sanitize_exit_failure_mode(void) "be 0"); logging(LOG_VERBOSE, "Test that non-zero param length is an error for " "EXIT_FAILURE_MODE"); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_EXIT_FAILURE_MODE, 8, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_EXIT_FAILURE_MODE, 8, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_invalid_serviceaction.c b/test-tool/test_sanitize_invalid_serviceaction.c index e40c8e1..1b1dc5c 100644 --- a/test-tool/test_sanitize_invalid_serviceaction.c +++ b/test-tool/test_sanitize_invalid_serviceaction.c @@ -51,8 +51,8 @@ test_sanitize_invalid_serviceaction(void) logging(LOG_VERBOSE, "Verify that ServiceAction:0x%02d is " "an error.", i); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, i, 0, NULL); + ret = sanitize(sd, 0, 0, i, 0, NULL, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " "implemented."); diff --git a/test-tool/test_sanitize_overwrite.c b/test-tool/test_sanitize_overwrite.c index 5a908ab..b3c53f3 100644 --- a/test-tool/test_sanitize_overwrite.c +++ b/test-tool/test_sanitize_overwrite.c @@ -124,8 +124,8 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "Check that the first 256 LBAs are wiped."); @@ -140,8 +140,8 @@ test_sanitize_overwrite(void) data.data[2] = (block_size / 2) >> 8; data.data[3] = (block_size / 2 ) & 0xff; - ret = sanitize(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); @@ -151,8 +151,8 @@ test_sanitize_overwrite(void) data.data[2] = 0; data.data[3] = 4; - ret = sanitize(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_STATUS_GOOD); CU_ASSERT_EQUAL(ret, 0); logging(LOG_VERBOSE, "OVERWRITE parameter list length must " @@ -161,8 +161,8 @@ test_sanitize_overwrite(void) logging(LOG_VERBOSE, "Test OVERWRITE with ParamLen:%d is an " "error.", i); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, i, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, i, &data, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " "implemented."); @@ -180,8 +180,9 @@ test_sanitize_overwrite(void) data.size = block_size + 8; data.data = alloca(block_size + 8); /* so we can send IP > blocksize */ memset(data.data, 0, data.size); - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, block_size + 5, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, block_size + 5, &data, + EXPECT_INVALID_FIELD_IN_CDB); + if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE is not " "implemented."); @@ -199,8 +200,8 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -212,8 +213,8 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = 0x00; data.data[3] = 0x00; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); @@ -226,7 +227,7 @@ test_sanitize_overwrite(void) data.data[1] = 0x00; data.data[2] = (block_size + 4) >> 8; data.data[3] = (block_size + 4) & 0xff; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } diff --git a/test-tool/test_sanitize_overwrite_reserved.c b/test-tool/test_sanitize_overwrite_reserved.c index 50dc69c..eb89a1c 100644 --- a/test-tool/test_sanitize_overwrite_reserved.c +++ b/test-tool/test_sanitize_overwrite_reserved.c @@ -73,8 +73,8 @@ void test_sanitize_overwrite_reserved(void) logging(LOG_VERBOSE, "Send SANITIZE command with the reserved " "bit in byte 1 set to 1"); change_num = 1; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data, + EXPECT_INVALID_FIELD_IN_CDB); if (ret == -2) { logging(LOG_NORMAL, "[SKIPPED] SANITIZE OVERWRITE is not " "implemented on target."); @@ -89,8 +89,9 @@ void test_sanitize_overwrite_reserved(void) "byte %d set to non-zero", i); change_num = i; - ret = sanitize_invalidfieldincdb(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, + &data, + EXPECT_INVALID_FIELD_IN_CDB); CU_ASSERT_EQUAL(ret, 0); } } diff --git a/test-tool/test_sanitize_readonly.c b/test-tool/test_sanitize_readonly.c index 5577338..1dc9b6c 100644 --- a/test-tool/test_sanitize_readonly.c +++ b/test-tool/test_sanitize_readonly.c @@ -89,8 +89,9 @@ test_sanitize_readonly(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_writeprotected(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, + &data, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); } @@ -104,8 +105,8 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_writeprotected(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); } @@ -118,8 +119,8 @@ test_sanitize_readonly(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_writeprotected(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_WRITE_PROTECTED); CU_ASSERT_EQUAL(ret, 0); } From 58f06b0e74ae7b198dbe369eed43260fbdadc8f9 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Tue, 14 Oct 2014 19:39:27 -0700 Subject: [PATCH 53/53] TESTS: get rid of a sanitize helper Signed-off-by: Ronnie Sahlberg --- test-tool/iscsi-support.c | 41 ++++---------------------- test-tool/iscsi-support.h | 2 +- test-tool/test_sanitize_reservations.c | 13 ++++---- 3 files changed, 14 insertions(+), 42 deletions(-) diff --git a/test-tool/iscsi-support.c b/test-tool/iscsi-support.c index aa9c73b..cba050f 100644 --- a/test-tool/iscsi-support.c +++ b/test-tool/iscsi-support.c @@ -172,6 +172,12 @@ static int check_result(const char *opcode, struct scsi_device *sdev, scsi_sense_ascq_str(ascq[0]), ascq[0]); return -1; } + if (status == SCSI_STATUS_RESERVATION_CONFLICT + && task->status != SCSI_STATUS_RESERVATION_CONFLICT) { + logging(LOG_NORMAL, "[FAILED] %s command should have failed " + "with RESERVATION_CONFLICT.", opcode); + return -1; + } /* did we get any of the expected ASCQs ?*/ if (status == SCSI_STATUS_CHECK_CONDITION) { int i; @@ -1259,41 +1265,6 @@ int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_le return ret; } -int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data) -{ - struct scsi_task *task; - - logging(LOG_VERBOSE, "Send SANITIZE (Expecting RESERVATION_CONFLICT) " - "IMMED:%d AUSE:%d SA:%d " - "PARAM_LEN:%d", - immed, ause, sa, param_len); - - task = iscsi_sanitize_sync(sdev->iscsi_ctx, sdev->iscsi_lun, immed, ause, sa, param_len, - data); - if (task == NULL) { - logging(LOG_NORMAL, - "[FAILED] Failed to send SANITIZE command: %s", - iscsi_get_error(sdev->iscsi_ctx)); - return -1; - } - if (task->status == SCSI_STATUS_GOOD) { - logging(LOG_NORMAL, - "[FAILED] SANITIZE successful but should have failed with RESERVATION_CONFLICT"); - scsi_free_scsi_task(task); - return -1; - } - - if (task->status != SCSI_STATUS_RESERVATION_CONFLICT) { - logging(LOG_NORMAL, "[FAILED] Expected RESERVATION CONFLICT. " - "Sense:%s", iscsi_get_error(sdev->iscsi_ctx)); - return -1; - } - - scsi_free_scsi_task(task); - logging(LOG_VERBOSE, "[OK] SANITIZE returned RESERVATION_CONFLICT."); - return 0; -} - int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq) { struct scsi_task *task; diff --git a/test-tool/iscsi-support.h b/test-tool/iscsi-support.h index c9e4f28..cf6ae7c 100644 --- a/test-tool/iscsi-support.h +++ b/test-tool/iscsi-support.h @@ -41,6 +41,7 @@ extern const char *initiatorname2; #define EXPECT_WRITE_PROTECTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_DATA_PROTECTION, write_protect_ascqs, 3 #define EXPECT_SANITIZE SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_NOT_READY, sanitize_ascqs, 1 #define EXPECT_REMOVAL_PREVENTED SCSI_STATUS_CHECK_CONDITION, SCSI_SENSE_ILLEGAL_REQUEST, removal_ascqs, 1 +#define EXPECT_RESERVATION_CONFLICT SCSI_STATUS_RESERVATION_CONFLICT, 0, NULL, 0 int no_medium_ascqs[3]; int lba_oob_ascqs[1]; @@ -288,7 +289,6 @@ int release6(struct scsi_device *sdev); int reserve6(struct scsi_device *sdev); int reserve6_conflict(struct scsi_device *sdev); int sanitize(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data, int status, enum scsi_sense_key key, int *ascq, int num_ascq); -int sanitize_conflict(struct scsi_device *sdev, int immed, int ause, int sa, int param_len, struct iscsi_data *data); int startstopunit(struct scsi_device *sdev, int immed, int pcm, int pc, int no_flush, int loej, int start, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int synchronizecache10(struct scsi_device *sdev, uint32_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); int synchronizecache16(struct scsi_device *sdev, uint64_t lba, int num_blocks, int sync_nv, int immed, int status, enum scsi_sense_key key, int *ascq, int num_ascq); diff --git a/test-tool/test_sanitize_reservations.c b/test-tool/test_sanitize_reservations.c index 9a272a6..ce133e7 100644 --- a/test-tool/test_sanitize_reservations.c +++ b/test-tool/test_sanitize_reservations.c @@ -79,8 +79,9 @@ test_sanitize_reservations(void) data.data[1] = 0x00; data.data[2] = block_size >> 8; data.data[3] = block_size & 0xff; - ret = sanitize_conflict(sd, - 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, &data); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_OVERWRITE, data.size, + &data, + EXPECT_RESERVATION_CONFLICT); CU_ASSERT_EQUAL(ret, 0); } @@ -94,8 +95,8 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE BLOCK_ERASE"); - ret = sanitize_conflict(sd, - 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_BLOCK_ERASE, 0, NULL, + EXPECT_RESERVATION_CONFLICT); CU_ASSERT_EQUAL(ret, 0); } @@ -108,8 +109,8 @@ test_sanitize_reservations(void) "implemented according to REPORT_SUPPORTED_OPCODES."); } else { logging(LOG_VERBOSE, "Test SANITIZE CRYPTO_ERASE"); - ret = sanitize_conflict(sd, - 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL); + ret = sanitize(sd, 0, 0, SCSI_SANITIZE_CRYPTO_ERASE, 0, NULL, + EXPECT_RESERVATION_CONFLICT); CU_ASSERT_EQUAL(ret, 0); }