From f117b6c96dde80406732330779201198faae387b Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Tue, 15 Mar 2016 20:43:01 +0100 Subject: [PATCH] socket: add iscsi_out_queue_length() function This function allows the caller to determine the number of PDUs queued for transmission for a given iscsi context. Signed-off-by: David Disseldorp --- include/iscsi.h | 5 +++++ lib/libiscsi.def | 1 + lib/libiscsi.syms | 1 + lib/socket.c | 13 +++++++++++++ 4 files changed, 20 insertions(+) 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) {