diff --git a/include/iscsi.h b/include/iscsi.h index 11e014c..01de647 100644 --- a/include/iscsi.h +++ b/include/iscsi.h @@ -517,6 +517,10 @@ struct scsi_task * iscsi_inquiry_sync(struct iscsi_context *iscsi, int lun, int evpd, int page_code, int maxsize); +struct scsi_task * +iscsi_read10_sync(struct iscsi_context *iscsi, int lun, uint32_t lba, + uint32_t datalen, int blocksize); + struct scsi_task * iscsi_readcapacity10_sync(struct iscsi_context *iscsi, int lun, int lba, int pmi); diff --git a/lib/sync.c b/lib/sync.c index 9ee4788..3d6c148 100644 --- a/lib/sync.c +++ b/lib/sync.c @@ -219,6 +219,26 @@ iscsi_inquiry_sync(struct iscsi_context *iscsi, int lun, int evpd, return state.task; } +struct scsi_task * +iscsi_read10_sync(struct iscsi_context *iscsi, int lun, uint32_t lba, + uint32_t datalen, int blocksize) +{ + struct scsi_sync_state state; + + memset(&state, 0, sizeof(state)); + + if (iscsi_read10_async(iscsi, lun, lba, datalen, blocksize, + scsi_sync_cb, &state) != 0) { + iscsi_set_error(iscsi, + "Failed to send Read10 command"); + return NULL; + } + + event_loop(iscsi, &state); + + return state.task; +} + struct scsi_task * iscsi_readcapacity10_sync(struct iscsi_context *iscsi, int lun, int lba, int pmi)