diff --git a/include/scsi-lowlevel.h b/include/scsi-lowlevel.h index 7cf0e09..7872c09 100644 --- a/include/scsi-lowlevel.h +++ b/include/scsi-lowlevel.h @@ -81,6 +81,8 @@ EXTERN const char *scsi_sense_key_str(int key); #define SCSI_SENSE_ASCQ_LOGICAL_UNIT_NOT_SUPPORTED 0x2500 #define SCSI_SENSE_ASCQ_BUS_RESET 0x2900 #define SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT 0x3a00 +#define SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED 0x3a01 +#define SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN 0x3a02 #define SCSI_SENSE_ASCQ_INTERNAL_TARGET_FAILURE 0x4400 EXTERN const char *scsi_sense_ascq_str(int ascq); diff --git a/lib/connect.c b/lib/connect.c index 62591fe..b584ac2 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -66,7 +66,9 @@ iscsi_testunitready_cb(struct iscsi_context *iscsi, int status, /* Dont fail the login just because there is no medium in the device */ if (status != 0 && 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 + || task->sense.ascq == SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED + || task->sense.ascq == SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN)) { status = 0; } diff --git a/lib/scsi-lowlevel.c b/lib/scsi-lowlevel.c index 93a6438..ec16e6d 100644 --- a/lib/scsi-lowlevel.c +++ b/lib/scsi-lowlevel.c @@ -143,6 +143,10 @@ scsi_sense_ascq_str(int ascq) "LOGICAL_UNIT_NOT_SUPPORTED"}, {SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT, "MEDIUM_NOT_PRESENT"}, + {SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_CLOSED, + "MEDIUM_NOT_PRESENT-TRAY_CLOSED"}, + {SCSI_SENSE_ASCQ_MEDIUM_NOT_PRESENT_TRAY_OPEN, + "MEDIUM_NOT_PRESENT-TRAY_OPEN"}, {SCSI_SENSE_ASCQ_BUS_RESET, "BUS_RESET"}, {SCSI_SENSE_ASCQ_INTERNAL_TARGET_FAILURE,