Add MODESENSE6/10 and MODESELECT6/10 support

This commit is contained in:
Ronnie Sahlberg
2013-07-20 14:05:20 -07:00
parent e556a0399b
commit fd38ff4bfc
8 changed files with 232 additions and 8 deletions

View File

@@ -824,10 +824,19 @@ iscsi_modeselect6_task(struct iscsi_context *iscsi, int lun,
int pf, int sp, struct scsi_mode_page *mp,
iscsi_command_cb cb, void *private_data);
EXTERN struct scsi_task *
iscsi_modeselect10_task(struct iscsi_context *iscsi, int lun,
int pf, int sp, struct scsi_mode_page *mp,
iscsi_command_cb cb, void *private_data);
EXTERN struct scsi_task *
iscsi_modesense6_task(struct iscsi_context *iscsi, int lun, int dbd,
int pc, int page_code, int sub_page_code,
unsigned char alloc_len, iscsi_command_cb cb,
void *private_data);
EXTERN struct scsi_task *
iscsi_modesense10_task(struct iscsi_context *iscsi, int lun, int llbaa, int dbd,
int pc, int page_code, int sub_page_code,
unsigned char alloc_len, iscsi_command_cb cb,
void *private_data);
struct unmap_list {
uint64_t lba;
@@ -880,11 +889,20 @@ EXTERN struct scsi_task *
iscsi_modeselect6_sync(struct iscsi_context *iscsi, int lun,
int pf, int sp, struct scsi_mode_page *mp);
EXTERN struct scsi_task *
iscsi_modeselect10_sync(struct iscsi_context *iscsi, int lun,
int pf, int sp, struct scsi_mode_page *mp);
EXTERN struct scsi_task *
iscsi_modesense6_sync(struct iscsi_context *iscsi, int lun, int dbd,
int pc, int page_code, int sub_page_code,
unsigned char alloc_len);
EXTERN struct scsi_task *
iscsi_modesense10_sync(struct iscsi_context *iscsi, int lun, int llbaa, int dbd,
int pc, int page_code, int sub_page_code,
unsigned char alloc_len);
EXTERN struct scsi_task *
iscsi_reportluns_sync(struct iscsi_context *iscsi, int report_type,
int alloc_len);

View File

@@ -50,6 +50,8 @@ enum scsi_opcode {
SCSI_OPCODE_UNMAP = 0x42,
SCSI_OPCODE_READTOC = 0x43,
SCSI_OPCODE_SANITIZE = 0x48,
SCSI_OPCODE_MODESELECT10 = 0x55,
SCSI_OPCODE_MODESENSE10 = 0x5A,
SCSI_OPCODE_PERSISTENT_RESERVE_IN = 0x5E,
SCSI_OPCODE_PERSISTENT_RESERVE_OUT = 0x5F,
SCSI_OPCODE_READ16 = 0x88,
@@ -626,7 +628,7 @@ struct scsi_inquiry_device_identification {
};
/*
* MODESENSE6
* MODESENSE
*/
enum scsi_modesense_page_control {
SCSI_MODESENSE_PC_CURRENT = 0x00,
@@ -762,9 +764,17 @@ EXTERN struct scsi_task *scsi_cdb_modesense6(int dbd,
int sub_page_code,
unsigned char alloc_len);
EXTERN struct scsi_task *scsi_cdb_modesense10(int llbaa, int dbd,
enum scsi_modesense_page_control pc,
enum scsi_modesense_page_code page_code,
int sub_page_code,
unsigned char alloc_len);
EXTERN struct scsi_task *scsi_cdb_modeselect6(int pf, int sp, int param_len);
EXTERN struct scsi_task *scsi_cdb_modeselect10(int pf, int sp, int param_len);
EXTERN struct scsi_data *
scsi_modesense_dataout_marshall(struct scsi_task *task,
struct scsi_mode_page *mp,