diff --git a/include/iscsi.h b/include/iscsi.h index 1169d13..4441447 100644 --- a/include/iscsi.h +++ b/include/iscsi.h @@ -82,6 +82,11 @@ EXTERN int iscsi_service(struct iscsi_context *iscsi, int revents); * How many commands are in flight. */ EXTERN int iscsi_queue_length(struct iscsi_context *iscsi); +/* + * How many commands are queued for dispatch. + */ +EXTERN int iscsi_out_queue_length(struct iscsi_context *iscsi); + /************************************************************ * Timeout Handling. diff --git a/lib/libiscsi.def b/lib/libiscsi.def index 4fc6352..b81cb31 100644 --- a/lib/libiscsi.def +++ b/lib/libiscsi.def @@ -46,6 +46,7 @@ iscsi_prefetch16_task iscsi_preventallow_sync iscsi_preventallow_task iscsi_queue_length +iscsi_out_queue_length iscsi_queue_pdu iscsi_read10_sync iscsi_read10_task diff --git a/lib/libiscsi.syms b/lib/libiscsi.syms index 24dfd5a..3320e0e 100644 --- a/lib/libiscsi.syms +++ b/lib/libiscsi.syms @@ -44,6 +44,7 @@ iscsi_prefetch16_task iscsi_preventallow_sync iscsi_preventallow_task iscsi_queue_length +iscsi_out_queue_length iscsi_queue_pdu iscsi_read10_sync iscsi_read10_task diff --git a/lib/socket.c b/lib/socket.c index ea936a8..59e7026 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -439,6 +439,19 @@ iscsi_queue_length(struct iscsi_context *iscsi) return i; } +int +iscsi_out_queue_length(struct iscsi_context *iscsi) +{ + int i = 0; + struct iscsi_pdu *pdu; + + for (pdu = iscsi->outqueue; pdu; pdu = pdu->next) { + i++; + } + + return i; +} + ssize_t iscsi_iovector_readv_writev(struct iscsi_context *iscsi, struct scsi_iovector *iovector, uint32_t pos, ssize_t count, int do_write) {