[master] 2a921ec Add a new transport method for reembarking a request from the waiting list.

Poul-Henning Kamp phk at FreeBSD.org
Mon May 9 16:33:06 CEST 2016


commit 2a921ecb5e076ed1e2e423ec2861fa2cae013eac
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon May 9 14:31:49 2016 +0000

    Add a new transport method for reembarking a request from the waiting list.

diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index c808494..7e4acc3 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -56,6 +56,7 @@
 #include <stdlib.h>
 
 #include "cache.h"
+#include "cache/cache_transport.h"
 
 #include "hash/hash_slinger.h"
 #include "vsha256.h"
@@ -548,6 +549,10 @@ hsh_rush2(struct worker *wrk, struct rush *r)
 		CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 		VTAILQ_REMOVE(&r->reqs, req, w_list);
 		DSL(DBG_WAITINGLIST, req->vsl->wid, "off waiting list");
+		if (req->transport->reembark != NULL) {
+			req->transport->reembark(wrk, req);
+			continue;
+		}
 		if (!SES_Reschedule_Req(req))
 			continue;
 		/* Couldn't schedule, ditch */
diff --git a/bin/varnishd/cache/cache_transport.h b/bin/varnishd/cache/cache_transport.h
index 2b22519..ef57325 100644
--- a/bin/varnishd/cache/cache_transport.h
+++ b/bin/varnishd/cache/cache_transport.h
@@ -41,6 +41,7 @@ typedef void vtr_req_body_f (struct req *);
 typedef void vtr_sess_panic_f (struct vsb *, const struct sess *);
 typedef void vtr_req_panic_f (struct vsb *, const struct req *);
 typedef void vtr_req_fail_f (struct req *, enum sess_close);
+typedef void vtr_reembark_f (struct worker *, struct req *);
 
 struct transport {
 	unsigned			magic;
@@ -58,6 +59,7 @@ struct transport {
 	vtr_deliver_f			*deliver;
 	vtr_sess_panic_f		*sess_panic;
 	vtr_req_panic_f			*req_panic;
+	vtr_reembark_f			*reembark;
 
 	VTAILQ_ENTRY(transport)		list;
 };



More information about the varnish-commit mailing list