[master] 33fbcb8 Add a single-linked list to objcore for the EXP inbox, rather than overloading the LRUs list.

Poul-Henning Kamp phk at FreeBSD.org
Wed Feb 3 23:45:28 CET 2016


commit 33fbcb8e52096b30952557bddc2d83a865b6d491
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Feb 3 11:12:39 2016 +0000

    Add a single-linked list to objcore for the EXP inbox, rather than
    overloading the LRUs list.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index fe9da3c..4a698ce 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -441,6 +441,7 @@ struct objcore {
 	VTAILQ_ENTRY(objcore)	lru_list;
 	float			last_lru;
 	VTAILQ_ENTRY(objcore)	ban_list;
+	VSTAILQ_ENTRY(objcore)	exp_list;
 	struct ban		*ban;
 };
 
diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index 6bcb1bd..cd3aab0 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -56,7 +56,7 @@ struct exp_priv {
 	struct worker			*wrk;
 	struct vsl_log			vsl;
 
-	VTAILQ_HEAD(,objcore)		inbox;
+	VSTAILQ_HEAD(,objcore)		inbox;
 	struct binheap			*heap;
 	pthread_cond_t			condvar;
 
@@ -144,9 +144,9 @@ exp_mail_it(struct objcore *oc)
 	AN(isnan(oc->last_lru));
 	Lck_Lock(&exphdl->mtx);
 	if (oc->flags & OC_F_DYING)
-		VTAILQ_INSERT_HEAD(&exphdl->inbox, oc, lru_list);
+		VSTAILQ_INSERT_HEAD(&exphdl->inbox, oc, exp_list);
 	else
-		VTAILQ_INSERT_TAIL(&exphdl->inbox, oc, lru_list);
+		VSTAILQ_INSERT_TAIL(&exphdl->inbox, oc, exp_list);
 	VSC_C_main->exp_mailed++;
 	AZ(pthread_cond_signal(&exphdl->condvar));
 	Lck_Unlock(&exphdl->mtx);
@@ -521,9 +521,9 @@ exp_thread(struct worker *wrk, void *priv)
 	while (1) {
 
 		Lck_Lock(&ep->mtx);
-		oc = VTAILQ_FIRST(&ep->inbox);
+		oc = VSTAILQ_FIRST(&ep->inbox);
 		if (oc != NULL) {
-			VTAILQ_REMOVE(&ep->inbox, oc, lru_list);
+			VSTAILQ_REMOVE(&ep->inbox, oc, objcore, exp_list);
 			VSC_C_main->exp_received++;
 			tnext = 0;
 		} else if (tnext > t) {
@@ -556,7 +556,7 @@ EXP_Init(void)
 
 	Lck_New(&ep->mtx, lck_exp);
 	AZ(pthread_cond_init(&ep->condvar, NULL));
-	VTAILQ_INIT(&ep->inbox);
+	VSTAILQ_INIT(&ep->inbox);
 	AZ(pthread_rwlock_init(&ep->cb_rwl, NULL));
 	VTAILQ_INIT(&ep->ecb_list);
 	exphdl = ep;



More information about the varnish-commit mailing list