From b57dadc2dd577fb8ce21975722cdfa2f010cd718 Mon Sep 17 00:00:00 2001 From: Frederic Robra Date: Fri, 8 Nov 2019 13:49:47 +0100 Subject: added timeout and small bug when reqeuing in send --- src/kernel/mq.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'src/kernel/mq.c') diff --git a/src/kernel/mq.c b/src/kernel/mq.c index f859c0f..f9e1bd2 100644 --- a/src/kernel/mq.c +++ b/src/kernel/mq.c @@ -109,18 +109,22 @@ void dndb3_reque_busy_requests(struct dnbd3_sock *sock) blk_mq_tagset_busy_iter(set,(busy_tag_iter_fn *) dnbd3_busy_iter_requeue, sock); } -static void dnbd3_wait_for_sockets(struct dnbd3_cmd * cmd) { +/** + * dnbd3_wait_for_sockets - wait for any socket to be alive or a disconnect + * @dev: the device + */ +static void dnbd3_wait_for_sockets(struct dnbd3_device *dev) { int i; bool wait = true; - while (wait && cmd->dnbd3->connected) { - for (i = 0; i < cmd->dnbd3->number_connections; i++) { - if (dnbd3_is_sock_alive(cmd->dnbd3->socks[cmd->index])) { + while (wait && dev->connected) { + for (i = 0; i < dev->number_connections; i++) { + if (dnbd3_is_sock_alive(dev->socks[i])) { wait = false; } - if (wait && cmd->dnbd3->connected) { - debug("no socket alive sleeping"); - msleep(100); - } + } + if (wait && dev->connected) { + debug("no socket alive sleeping"); + msleep(100); } } } @@ -132,7 +136,7 @@ static void dnbd3_wait_for_sockets(struct dnbd3_cmd * cmd) { void dnbd3_requeue_cmd(struct dnbd3_cmd *cmd) { struct request *req = blk_mq_rq_from_pdu(cmd); - dnbd3_wait_for_sockets(cmd); + dnbd3_wait_for_sockets(cmd->dnbd3); if (!cmd->requed/* && blk_queued_rq(req)*/) { cmd->requed = true; @@ -152,11 +156,6 @@ void dnbd3_end_cmd(struct dnbd3_cmd *cmd, blk_status_t error) } -void dnbd3_end_all_rq(struct dnbd3_device *dev) -{ - struct request_queue *q = dev->disk->queue; -} - /** * dnbd3_handle_cmd - handles a mq command * @cmd: the cmd to send -- cgit v1.2.3-55-g7522