[experimental-ims] 1c14a9d Make the waitinglist hold req instead of sp

Poul-Henning Kamp phk at FreeBSD.org
Thu Dec 18 10:27:49 CET 2014


commit 1c14a9d49f30093fe58c6986b68456d9e300cd16
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Jun 19 10:53:32 2012 +0000

    Make the waitinglist hold req instead of sp

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 6ee34ec..f013084 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -562,6 +562,7 @@ struct req {
 	uint8_t			hash_always_miss;
 
 	struct sess		*sp;
+	VTAILQ_ENTRY(req)	w_list;
 
 	/* The busy objhead we sleep on */
 	struct objhead		*hash_objhead;
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 68e4cda..e7c2a49 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -419,7 +419,7 @@ HSH_Lookup(struct req *req)
 				wrk->nwaitinglist = NULL;
 			}
 			VTAILQ_INSERT_TAIL(&oh->waitinglist->list,
-			    req->sp, list);
+			    req, w_list);
 		}
 		if (cache_param->diag_bitmap & 0x20)
 			VSLb(req->vsl, SLT_Debug,
@@ -469,6 +469,7 @@ static void
 hsh_rush(struct dstat *ds, struct objhead *oh)
 {
 	unsigned u;
+	struct req *req;
 	struct sess *sp;
 	struct waitinglist *wl;
 
@@ -477,12 +478,14 @@ hsh_rush(struct dstat *ds, struct objhead *oh)
 	wl = oh->waitinglist;
 	CHECK_OBJ_NOTNULL(wl, WAITINGLIST_MAGIC);
 	for (u = 0; u < cache_param->rush_exponent; u++) {
-		sp = VTAILQ_FIRST(&wl->list);
-		if (sp == NULL)
+		req = VTAILQ_FIRST(&wl->list);
+		if (req == NULL)
 			break;
+		CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+		sp = req->sp;
 		CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 		AZ(sp->wrk);
-		VTAILQ_REMOVE(&wl->list, sp, list);
+		VTAILQ_REMOVE(&wl->list, req, w_list);
 		DSL(0x20, SLT_Debug, sp->vsl_id, "off waiting list");
 		if (SES_Schedule(sp)) {
 			/*
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 5e05748..c385ea6 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -68,7 +68,7 @@ struct objcore *HSH_NewObjCore(struct worker *wrk);
 struct waitinglist {
 	unsigned		magic;
 #define WAITINGLIST_MAGIC	0x063a477a
-	VTAILQ_HEAD(, sess)	list;
+	VTAILQ_HEAD(, req)	list;
 };
 
 struct objhead {



More information about the varnish-commit mailing list