From 14461757c441796f325be325bf02e35672535e06 Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Wed, 8 Oct 2014 06:23:43 -0700 Subject: [PATCH] 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];