From dba733c6de257f7ced6e868240a0ee2757b97074 Mon Sep 17 00:00:00 2001 From: Walid Boudebouda Date: Mon, 15 Jan 2024 14:00:28 +0100 Subject: [PATCH] backend: Inline vbe_connwait_dequeue --- bin/varnishd/cache/cache_backend.c | 33 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c index af374c6fc99..ce724093bc0 100644 --- a/bin/varnishd/cache/cache_backend.c +++ b/bin/varnishd/cache/cache_backend.c @@ -139,17 +139,6 @@ vbe_connwait_signal_locked(struct backend *bp) } } -static void -vbe_connwait_dequeue(struct backend *bp, struct backend_cw *cw, int lock_it) -{ - if (lock_it) - Lck_Lock(bp->director->mtx); - VTAILQ_REMOVE(&bp->cw_head, cw, cw_list); - vbe_connwait_signal_locked(bp); - if (lock_it) - Lck_Unlock(bp->director->mtx); -} - /*-------------------------------------------------------------------- * Get a connection to the backend * @@ -229,8 +218,12 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, if (bo->htc == NULL) { VSLb(bo->vsl, SLT_FetchError, "out of workspace"); /* XXX: counter ? */ - if (cw_state == CW_QUEUED) - vbe_connwait_dequeue(bp, cw, 1); + if (cw_state == CW_QUEUED) { + Lck_Lock(bp->director->mtx); + VTAILQ_REMOVE(&bp->cw_head, cw, cw_list); + vbe_connwait_signal_locked(bp); + Lck_Unlock(bp->director->mtx); + } AZ(pthread_cond_destroy(&cw->cw_cond)); return (NULL); } @@ -248,8 +241,12 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, VRT_BACKEND_string(dir), err, VAS_errtxt(err)); VSC_C_main->backend_fail++; bo->htc = NULL; - if (cw_state == CW_QUEUED) - vbe_connwait_dequeue(bp, cw, 1); + if (cw_state == CW_QUEUED) { + Lck_Lock(bp->director->mtx); + VTAILQ_REMOVE(&bp->cw_head, cw, cw_list); + vbe_connwait_signal_locked(bp); + Lck_Unlock(bp->director->mtx); + } AZ(pthread_cond_destroy(&cw->cw_cond)); return (NULL); } @@ -263,8 +260,10 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp, bp->n_conn++; bp->vsc->conn++; bp->vsc->req++; - if (cw_state == CW_QUEUED) - vbe_connwait_dequeue(bp, cw, 0); + if (cw_state == CW_QUEUED) { + VTAILQ_REMOVE(&bp->cw_head, cw, cw_list); + vbe_connwait_signal_locked(bp); + } Lck_Unlock(bp->director->mtx);