[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