TESTS: Update the protection tests
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
int T0160_readcapacity16_simple(const char *initiator, const char *url)
|
int T0160_readcapacity16_simple(const char *initiator, const char *url)
|
||||||
{
|
{
|
||||||
struct iscsi_context *iscsi;
|
struct iscsi_context *iscsi;
|
||||||
struct scsi_readcapacity16 *rc16;
|
struct scsi_readcapacity16 *rc;
|
||||||
struct scsi_task *task;
|
struct scsi_task *task;
|
||||||
int ret, lun;
|
int ret, lun;
|
||||||
|
|
||||||
@@ -59,8 +59,8 @@ int T0160_readcapacity16_simple(const char *initiator, const char *url)
|
|||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(task);
|
||||||
goto finished;
|
goto finished;
|
||||||
}
|
}
|
||||||
rc16 = scsi_datain_unmarshall(task);
|
rc = scsi_datain_unmarshall(task);
|
||||||
if (rc16 == NULL) {
|
if (rc == NULL) {
|
||||||
printf("[FAILED]\n");
|
printf("[FAILED]\n");
|
||||||
printf("failed to unmarshall READCAPACITY16 data. %s\n", iscsi_get_error(iscsi));
|
printf("failed to unmarshall READCAPACITY16 data. %s\n", iscsi_get_error(iscsi));
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ int T0170_unmap_simple(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ int T0171_unmap_zero(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ int T0180_writesame10_unmap(const char *initiator, const char *url)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. All commands should fail with check condition.\n");
|
printf("Logical unit is fully provisioned. All commands should fail with check condition.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ int T0181_writesame10_unmap_unaligned(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ int T0190_writesame16_unmap(const char *initiator, const char *url)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
if (lbpme == 0) {
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("LBPME not set. Skip test for CPD page 0xB2 (logical block provisioning)\n");
|
printf("LBPME not set. Skip test for CPD page 0xB2 (logical block provisioning)\n");
|
||||||
goto finished;
|
goto finished;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ int T0191_writesame16_unmap_unaligned(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ int T0260_get_lba_status_simple(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ int T0264_get_lba_status_beyondeol(const char *initiator, const char *url)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lbpme == 0){
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("Logical unit is fully provisioned. Skipping test\n");
|
printf("Logical unit is fully provisioned. Skipping test\n");
|
||||||
ret = -2;
|
ret = -2;
|
||||||
goto finished;
|
goto finished;
|
||||||
|
|||||||
@@ -259,7 +259,7 @@ int T0300_readonly(const char *initiator, const char *url)
|
|||||||
|
|
||||||
/* UNMAP one block at lba 0 */
|
/* UNMAP one block at lba 0 */
|
||||||
printf("WRITESAME10 to UNMAP LUN 0 ... ");
|
printf("WRITESAME10 to UNMAP LUN 0 ... ");
|
||||||
if (lbpme == 0) {
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("LUN is not thin-provisioned. [SKIPPED]\n");
|
printf("LUN is not thin-provisioned. [SKIPPED]\n");
|
||||||
goto finished;
|
goto finished;
|
||||||
}
|
}
|
||||||
@@ -295,10 +295,6 @@ int T0300_readonly(const char *initiator, const char *url)
|
|||||||
|
|
||||||
/* UNMAP one block at lba 0 */
|
/* UNMAP one block at lba 0 */
|
||||||
printf("WRITESAME16 to UNMAP LUN 0 ... ");
|
printf("WRITESAME16 to UNMAP LUN 0 ... ");
|
||||||
if (lbpme == 0) {
|
|
||||||
printf("LUN is not thin-provisioned. [SKIPPED]\n");
|
|
||||||
goto finished;
|
|
||||||
}
|
|
||||||
task = iscsi_writesame16_sync(iscsi, lun, 0,
|
task = iscsi_writesame16_sync(iscsi, lun, 0,
|
||||||
data, block_size,
|
data, block_size,
|
||||||
1,
|
1,
|
||||||
@@ -331,10 +327,6 @@ int T0300_readonly(const char *initiator, const char *url)
|
|||||||
|
|
||||||
/* UNMAP one block at lba 0 */
|
/* UNMAP one block at lba 0 */
|
||||||
printf("UNMAP LUN 0 ... ");
|
printf("UNMAP LUN 0 ... ");
|
||||||
if (lbpme == 0) {
|
|
||||||
printf("LUN is not thin-provisioned. [SKIPPED]\n");
|
|
||||||
goto finished;
|
|
||||||
}
|
|
||||||
list[0].lba = 0;
|
list[0].lba = 0;
|
||||||
list[0].num = 1;
|
list[0].num = 1;
|
||||||
task = iscsi_unmap_sync(iscsi, lun, 0, 0, &list[0], 1);
|
task = iscsi_unmap_sync(iscsi, lun, 0, 0, &list[0], 1);
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ int T0390_mandatory_opcodes_sbc(const char *initiator, const char *url)
|
|||||||
|
|
||||||
|
|
||||||
printf("Test UNMAP ... ");
|
printf("Test UNMAP ... ");
|
||||||
if (lbpme == 0) {
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("[LBPME == 0, SKIPPING TEST]\n");
|
printf("[LBPME == 0, SKIPPING TEST]\n");
|
||||||
} else {
|
} else {
|
||||||
task = iscsi_unmap_sync(iscsi, lun, 0, 0, NULL, 0);
|
task = iscsi_unmap_sync(iscsi, lun, 0, 0, NULL, 0);
|
||||||
@@ -246,7 +246,7 @@ int T0390_mandatory_opcodes_sbc(const char *initiator, const char *url)
|
|||||||
|
|
||||||
|
|
||||||
printf("Test WRITE SAME16 ... ");
|
printf("Test WRITE SAME16 ... ");
|
||||||
if (lbpme == 0) {
|
if (rc16 == NULL || rc16->lbpme == 0){
|
||||||
printf("[LBPME == 0, SKIPPING TEST]\n");
|
printf("[LBPME == 0, SKIPPING TEST]\n");
|
||||||
} else {
|
} else {
|
||||||
task = iscsi_writesame16_sync(iscsi, lun, 0,
|
task = iscsi_writesame16_sync(iscsi, lun, 0,
|
||||||
|
|||||||
@@ -47,17 +47,16 @@ const char *initiatorname2 =
|
|||||||
const char *tgt_url;
|
const char *tgt_url;
|
||||||
|
|
||||||
struct scsi_inquiry_standard *inq;
|
struct scsi_inquiry_standard *inq;
|
||||||
|
struct scsi_readcapacity16 *rc16;
|
||||||
|
|
||||||
size_t block_size;
|
size_t block_size;
|
||||||
uint64_t num_blocks;
|
uint64_t num_blocks;
|
||||||
int lbpme;
|
|
||||||
int lbppb;
|
int lbppb;
|
||||||
int lbpme;
|
|
||||||
enum scsi_inquiry_peripheral_device_type device_type;
|
enum scsi_inquiry_peripheral_device_type device_type;
|
||||||
int data_loss;
|
int data_loss;
|
||||||
|
int anc_sup;
|
||||||
int lbpws10;
|
int lbpws10;
|
||||||
int lbpws;
|
int lbpws;
|
||||||
int anc_sup;
|
|
||||||
int readonly;
|
int readonly;
|
||||||
int sbc3_support;
|
int sbc3_support;
|
||||||
int maximum_transfer_length;
|
int maximum_transfer_length;
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ do { \
|
|||||||
|
|
||||||
#define CHECK_FOR_THIN_PROVISIONING \
|
#define CHECK_FOR_THIN_PROVISIONING \
|
||||||
do { \
|
do { \
|
||||||
if (lbpme == 0) { \
|
if (rc16 == NULL || rc16->lbpme == 0) { \
|
||||||
logging(LOG_VERBOSE, "[SKIPPED] Logical unit is fully" \
|
logging(LOG_VERBOSE, "[SKIPPED] Logical unit is fully" \
|
||||||
" provisioned. Skipping test"); \
|
" provisioned. Skipping test"); \
|
||||||
CU_PASS("[SKIPPED] Logical unit is fully provisioned." \
|
CU_PASS("[SKIPPED] Logical unit is fully provisioned." \
|
||||||
@@ -129,16 +129,15 @@ do { \
|
|||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
extern struct scsi_inquiry_standard *inq;
|
extern struct scsi_inquiry_standard *inq;
|
||||||
|
extern struct scsi_readcapacity16 *rc16;
|
||||||
|
|
||||||
extern size_t block_size;
|
extern size_t block_size;
|
||||||
extern uint64_t num_blocks;
|
extern uint64_t num_blocks;
|
||||||
extern int lbpme;
|
|
||||||
extern int lbppb;
|
extern int lbppb;
|
||||||
extern int lbpme;
|
|
||||||
extern int data_loss;
|
extern int data_loss;
|
||||||
|
extern int anc_sup;
|
||||||
extern int lbpws10;
|
extern int lbpws10;
|
||||||
extern int lbpws;
|
extern int lbpws;
|
||||||
extern int anc_sup;
|
|
||||||
extern int readonly;
|
extern int readonly;
|
||||||
extern int sbc3_support;
|
extern int sbc3_support;
|
||||||
extern int maximum_transfer_length;
|
extern int maximum_transfer_length;
|
||||||
|
|||||||
@@ -857,8 +857,8 @@ main(int argc, char *argv[])
|
|||||||
CU_ErrorAction error_action = CUEA_IGNORE;
|
CU_ErrorAction error_action = CUEA_IGNORE;
|
||||||
int res;
|
int res;
|
||||||
struct scsi_readcapacity10 *rc10;
|
struct scsi_readcapacity10 *rc10;
|
||||||
struct scsi_readcapacity16 *rc16;
|
|
||||||
struct scsi_task *inq_task;
|
struct scsi_task *inq_task;
|
||||||
|
struct scsi_task *rc16_task;
|
||||||
int full_size;
|
int full_size;
|
||||||
int is_usb;
|
int is_usb;
|
||||||
static struct option long_opts[] = {
|
static struct option long_opts[] = {
|
||||||
@@ -992,29 +992,25 @@ main(int argc, char *argv[])
|
|||||||
num_blocks = rc10->lba + 1;
|
num_blocks = rc10->lba + 1;
|
||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(task);
|
||||||
|
|
||||||
task = iscsi_readcapacity16_sync(iscsic, lun);
|
rc16_task = iscsi_readcapacity16_sync(iscsic, lun);
|
||||||
if (task == NULL) {
|
if (rc16_task == NULL) {
|
||||||
printf("Failed to send READCAPACITY16 command: %s\n",
|
printf("Failed to send READCAPACITY16 command: %s\n",
|
||||||
iscsi_get_error(iscsic));
|
iscsi_get_error(iscsic));
|
||||||
iscsi_destroy_context(iscsic);
|
iscsi_destroy_context(iscsic);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (rc16_task->status == SCSI_STATUS_GOOD) {
|
||||||
rc16 = scsi_datain_unmarshall(task);
|
rc16 = scsi_datain_unmarshall(rc16_task);
|
||||||
if (rc16 == NULL) {
|
if (rc16 == NULL) {
|
||||||
printf("failed to unmarshall READCAPACITY16 data. %s\n",
|
printf("failed to unmarshall READCAPACITY16 data. %s\n",
|
||||||
iscsi_get_error(iscsic));
|
iscsi_get_error(iscsic));
|
||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(rc16_task);
|
||||||
iscsi_destroy_context(iscsic);
|
iscsi_destroy_context(iscsic);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
block_size = rc16->block_length;
|
block_size = rc16->block_length;
|
||||||
num_blocks = rc16->returned_lba + 1;
|
num_blocks = rc16->returned_lba + 1;
|
||||||
lbpme = rc16->lbpme;
|
|
||||||
lbppb = 1 << rc16->lbppbe;
|
lbppb = 1 << rc16->lbppbe;
|
||||||
lbpme = rc16->lbpme;
|
|
||||||
|
|
||||||
scsi_free_scsi_task(task);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inq_task = iscsi_inquiry_sync(iscsic, lun, 0, 0, 64);
|
inq_task = iscsi_inquiry_sync(iscsic, lun, 0, 0, 64);
|
||||||
@@ -1049,7 +1045,7 @@ main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if thin provisioned we also need to read the VPD page for it */
|
/* if thin provisioned we also need to read the VPD page for it */
|
||||||
if (lbpme != 0) {
|
if (rc16 && rc16->lbpme != 0){
|
||||||
struct scsi_inquiry_logical_block_provisioning *inq_lbp;
|
struct scsi_inquiry_logical_block_provisioning *inq_lbp;
|
||||||
|
|
||||||
task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64);
|
task = iscsi_inquiry_sync(iscsic, lun, 1, SCSI_INQUIRY_PAGECODE_LOGICAL_BLOCK_PROVISIONING, 64);
|
||||||
@@ -1146,6 +1142,7 @@ main(int argc, char *argv[])
|
|||||||
free(discard_const(tgt_url));
|
free(discard_const(tgt_url));
|
||||||
|
|
||||||
scsi_free_scsi_task(inq_task);
|
scsi_free_scsi_task(inq_task);
|
||||||
|
scsi_free_scsi_task(rc16_task);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -315,8 +315,8 @@ int main(int argc, char *argv[])
|
|||||||
struct iscsi_context *iscsi;
|
struct iscsi_context *iscsi;
|
||||||
struct scsi_task *task;
|
struct scsi_task *task;
|
||||||
struct scsi_task *inq_task;
|
struct scsi_task *inq_task;
|
||||||
|
struct scsi_task *rc16_task;
|
||||||
struct scsi_readcapacity10 *rc10;
|
struct scsi_readcapacity10 *rc10;
|
||||||
struct scsi_readcapacity16 *rc16;
|
|
||||||
int full_size;
|
int full_size;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
@@ -437,27 +437,23 @@ int main(int argc, char *argv[])
|
|||||||
num_blocks = rc10->lba;
|
num_blocks = rc10->lba;
|
||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(task);
|
||||||
|
|
||||||
task = iscsi_readcapacity16_sync(iscsi, lun);
|
rc16_task = iscsi_readcapacity16_sync(iscsi, lun);
|
||||||
if (task == NULL) {
|
if (rc16_task == NULL) {
|
||||||
printf("Failed to send READCAPACITY16 command: %s\n", iscsi_get_error(iscsi));
|
printf("Failed to send READCAPACITY16 command: %s\n", iscsi_get_error(iscsi));
|
||||||
iscsi_destroy_context(iscsi);
|
iscsi_destroy_context(iscsi);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (task->status == SCSI_STATUS_GOOD) {
|
if (rc16_task->status == SCSI_STATUS_GOOD) {
|
||||||
rc16 = scsi_datain_unmarshall(task);
|
rc16 = scsi_datain_unmarshall(rc16_task);
|
||||||
if (rc16 == NULL) {
|
if (rc16 == NULL) {
|
||||||
printf("failed to unmarshall READCAPACITY16 data. %s\n", iscsi_get_error(iscsi));
|
printf("failed to unmarshall READCAPACITY16 data. %s\n", iscsi_get_error(iscsi));
|
||||||
scsi_free_scsi_task(task);
|
scsi_free_scsi_task(rc16_task);
|
||||||
iscsi_destroy_context(iscsi);
|
iscsi_destroy_context(iscsi);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
block_size = rc16->block_length;
|
block_size = rc16->block_length;
|
||||||
num_blocks = rc16->returned_lba;
|
num_blocks = rc16->returned_lba;
|
||||||
lbpme = rc16->lbpme;
|
|
||||||
lbppb = 1 << rc16->lbppbe;
|
lbppb = 1 << rc16->lbppbe;
|
||||||
lbpme = rc16->lbpme;
|
|
||||||
|
|
||||||
scsi_free_scsi_task(task);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -519,6 +515,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
scsi_free_scsi_task(inq_task);
|
scsi_free_scsi_task(inq_task);
|
||||||
|
scsi_free_scsi_task(rc16_task);
|
||||||
iscsi_logout_sync(iscsi);
|
iscsi_logout_sync(iscsi);
|
||||||
iscsi_destroy_context(iscsi);
|
iscsi_destroy_context(iscsi);
|
||||||
|
|
||||||
|
|||||||
@@ -32,19 +32,17 @@ test_orwrite_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
CHECK_FOR_SBC;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test ORWRITE with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test ORWRITE with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = orwrite_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = orwrite_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -56,5 +54,8 @@ test_orwrite_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,22 +33,22 @@ test_read10_rdprotect(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for RDPROTECT.
|
* Try out different non-zero values for RDPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test READ10 with non-zero RDPROTECT");
|
logging(LOG_VERBOSE, "Test READ10 with non-zero RDPROTECT");
|
||||||
|
|
||||||
CHECK_FOR_SBC;
|
CHECK_FOR_SBC;
|
||||||
|
|
||||||
if (inq->protect) {
|
if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) {
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail.");
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
for (i = 1; i < 8; i++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = read10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = read10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
i, 0, 0, 0, 0, NULL);
|
i, 0, 0, 0, 0, NULL);
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,17 +32,14 @@ test_read12_rdprotect(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for RDPROTECT.
|
* Try out different non-zero values for RDPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test READ12 with non-zero RDPROTECT");
|
logging(LOG_VERBOSE, "Test READ12 with non-zero RDPROTECT");
|
||||||
|
|
||||||
CHECK_FOR_SBC;
|
CHECK_FOR_SBC;
|
||||||
|
|
||||||
if (inq->protect) {
|
if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) {
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail.");
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
for (i = 1; i < 8; i++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = read12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = read12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -54,5 +51,8 @@ test_read12_rdprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,18 +30,16 @@ test_read16_rdprotect(void)
|
|||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
|
|
||||||
CHECK_FOR_SBC;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for RDPROTECT.
|
* Try out different non-zero values for RDPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test READ16 with non-zero RDPROTECT");
|
logging(LOG_VERBOSE, "Test READ16 with non-zero RDPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_SBC;
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = read16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = read16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -53,5 +51,7 @@ test_read16_rdprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,10 +35,11 @@ test_verify10_vrprotect(void)
|
|||||||
|
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test VERIFY10 with non-zero VRPROTECT");
|
logging(LOG_VERBOSE, "Test VERIFY10 with non-zero VRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_SBC;
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = read10(iscsic, tgt_lun, 0, block_size,
|
ret = read10(iscsic, tgt_lun, 0, block_size,
|
||||||
block_size, 0, 0, 0, 0, 0, buf);
|
block_size, 0, 0, 0, 0, 0, buf);
|
||||||
@@ -53,5 +54,8 @@ test_verify10_vrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,10 +34,11 @@ test_verify12_vrprotect(void)
|
|||||||
|
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test VERIFY12 with non-zero VRPROTECT");
|
logging(LOG_VERBOSE, "Test VERIFY12 with non-zero VRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_SBC;
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
|
|
||||||
ret = read10(iscsic, tgt_lun, 0, block_size,
|
ret = read10(iscsic, tgt_lun, 0, block_size,
|
||||||
@@ -52,5 +53,8 @@ test_verify12_vrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,10 +35,11 @@ test_verify16_vrprotect(void)
|
|||||||
|
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test VERIFY16 with non-zero VRPROTECT");
|
logging(LOG_VERBOSE, "Test VERIFY16 with non-zero VRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_SBC;
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = read16(iscsic, tgt_lun, 0, block_size,
|
ret = read16(iscsic, tgt_lun, 0, block_size,
|
||||||
block_size, 0, 0, 0, 0, 0, buf);
|
block_size, 0, 0, 0, 0, 0, buf);
|
||||||
@@ -52,5 +53,8 @@ test_verify16_vrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,18 +32,17 @@ test_write10_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITE10 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITE10 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = write10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = write10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -55,5 +54,8 @@ test_write10_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,18 +32,18 @@ test_write12_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITE12 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITE12 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = write12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = write12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -55,5 +55,8 @@ test_write12_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,19 +32,17 @@ test_write16_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
CHECK_FOR_SBC;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITE16 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITE16 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = write16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -56,5 +54,8 @@ test_write16_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <alloca.h>
|
||||||
|
|
||||||
#include <CUnit/CUnit.h>
|
#include <CUnit/CUnit.h>
|
||||||
|
|
||||||
@@ -29,22 +30,19 @@ void
|
|||||||
test_writesame10_wrprotect(void)
|
test_writesame10_wrprotect(void)
|
||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf;
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Try out different non-zero values for WRPROTECT.
|
||||||
|
*/
|
||||||
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
|
logging(LOG_VERBOSE, "Test WRITESAME10 with non-zero WRPROTECT");
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
CHECK_FOR_DATALOSS;
|
||||||
CHECK_FOR_SBC;
|
CHECK_FOR_SBC;
|
||||||
|
|
||||||
/*
|
if (!inq->protect || (rc16 != NULL && !rc16->prot_en)) {
|
||||||
* Try out different non-zero values for WRPROTECT.
|
logging(LOG_VERBOSE, "Device does not support/use protection information. All commands should fail.");
|
||||||
* They should all fail.
|
|
||||||
*/
|
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME10 with non-zero WRPROTECT");
|
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
|
||||||
} else {
|
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
buf = malloc(block_size);
|
|
||||||
for (i = 1; i < 8; i++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = writesame10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, 1,
|
block_size, 1,
|
||||||
@@ -56,6 +54,8 @@ test_writesame10_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
free(buf);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,19 +32,17 @@ test_writesame16_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
CHECK_FOR_SBC;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITESAME16 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITESAME16 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = writesame16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, 1,
|
block_size, 1,
|
||||||
@@ -56,5 +54,8 @@ test_writesame16_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,18 +32,17 @@ test_writeverify10_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITEVERIFY10 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITEVERIFY10 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = writeverify10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = writeverify10_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -55,5 +54,8 @@ test_writeverify10_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,18 +32,17 @@ test_writeverify12_wrprotect(void)
|
|||||||
int i, ret;
|
int i, ret;
|
||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITEVERIFY12 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITEVERIFY12 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = writeverify12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = writeverify12_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -55,5 +54,8 @@ test_writeverify12_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,19 +34,17 @@ test_writeverify16_wrprotect(void)
|
|||||||
unsigned char *buf = alloca(block_size);
|
unsigned char *buf = alloca(block_size);
|
||||||
|
|
||||||
|
|
||||||
CHECK_FOR_DATALOSS;
|
|
||||||
CHECK_FOR_SBC;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try out different non-zero values for WRPROTECT.
|
* Try out different non-zero values for WRPROTECT.
|
||||||
* They should all fail.
|
|
||||||
*/
|
*/
|
||||||
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
logging(LOG_VERBOSE, LOG_BLANK_LINE);
|
||||||
logging(LOG_VERBOSE, "Test WRITEVERIFY16 with non-zero WRPROTECT");
|
logging(LOG_VERBOSE, "Test WRITEVERIFY16 with non-zero WRPROTECT");
|
||||||
if (inq->protect) {
|
|
||||||
logging(LOG_VERBOSE, "No tests for devices that support protection information yet.");
|
CHECK_FOR_DATALOSS;
|
||||||
} else {
|
CHECK_FOR_SBC;
|
||||||
logging(LOG_VERBOSE, "Device does not support protection information. All commands should fail.");
|
|
||||||
|
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++) {
|
for (i = 1; i < 8; i++) {
|
||||||
ret = writeverify16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
ret = writeverify16_invalidfieldincdb(iscsic, tgt_lun, 0,
|
||||||
block_size, block_size,
|
block_size, block_size,
|
||||||
@@ -58,5 +56,8 @@ test_writeverify16_wrprotect(void)
|
|||||||
}
|
}
|
||||||
CU_ASSERT_EQUAL(ret, 0);
|
CU_ASSERT_EQUAL(ret, 0);
|
||||||
}
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logging(LOG_NORMAL, "No tests for devices that support protection information yet.");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user