From 3221e631c074b9d1db49e9e3bd57423b8678350f Mon Sep 17 00:00:00 2001 From: Ronnie Sahlberg Date: Fri, 13 Jul 2012 09:33:41 +1000 Subject: [PATCH] MODE_SENSE Add sync version of mode sense 6 --- include/iscsi.h | 5 +++++ lib/libiscsi.def | 1 + lib/libiscsi.syms | 1 + lib/sync.c | 20 ++++++++++++++++++++ 4 files changed, 27 insertions(+) diff --git a/include/iscsi.h b/include/iscsi.h index 860f0e7..9cee64b 100644 --- a/include/iscsi.h +++ b/include/iscsi.h @@ -696,6 +696,11 @@ EXTERN struct scsi_task * iscsi_scsi_command_sync(struct iscsi_context *iscsi, int lun, struct scsi_task *task, struct iscsi_data *data); +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_reportluns_sync(struct iscsi_context *iscsi, int report_type, int alloc_len); diff --git a/lib/libiscsi.def b/lib/libiscsi.def index 21abd60..5604251 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -21,6 +21,7 @@ iscsi_login_async iscsi_login_sync iscsi_logout_async iscsi_logout_sync +iscsi_modesense6_sync iscsi_modesense6_task iscsi_nop_out_async iscsi_parse_full_url diff --git a/lib/libiscsi.syms b/lib/libiscsi.syms index c3b792d..290545b 100644 --- a/lib/libiscsi.syms +++ b/lib/libiscsi.syms @@ -19,6 +19,7 @@ iscsi_login_async iscsi_login_sync iscsi_logout_async iscsi_logout_sync +iscsi_modesense6_sync iscsi_modesense6_task iscsi_nop_out_async iscsi_parse_full_url diff --git a/lib/sync.c b/lib/sync.c index 643373b..c5654cc 100644 --- a/lib/sync.c +++ b/lib/sync.c @@ -659,3 +659,23 @@ iscsi_scsi_command_sync(struct iscsi_context *iscsi, int lun, } +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) +{ + struct iscsi_sync_state state; + + memset(&state, 0, sizeof(state)); + + if (iscsi_modesense6_task(iscsi, lun, dbd, pc, page_code, sub_page_code, alloc_len, + scsi_sync_cb, &state) == NULL) { + iscsi_set_error(iscsi, + "Failed to send MODE_SENSE6 command"); + return NULL; + } + + event_loop(iscsi, &state); + + return state.task; +}