Commit cb917b51 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Clarify expiry/lru insert a little bit



git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@5585 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 9456b115
......@@ -568,7 +568,7 @@ extern pthread_t cli_thread;
/* cache_expiry.c */
void EXP_Insert(struct object *o);
void EXP_Inject(struct objcore *oc, struct lru *lru, double ttl);
void EXP_Inject(struct objcore *oc, struct lru *lru, double when);
void EXP_Init(void);
void EXP_Rearm(const struct object *o);
void EXP_Touch(struct object *o, double tnow);
......
......@@ -87,6 +87,21 @@ update_object_when(const struct object *o)
return (1);
}
/*--------------------------------------------------------------------*/
static void
exp_insert(struct objcore *oc, struct lru *lru)
{
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
assert(oc->timer_idx == BINHEAP_NOIDX);
binheap_insert(exp_heap, oc);
assert(oc->timer_idx != BINHEAP_NOIDX);
VLIST_INSERT_BEFORE(&lru->senteniel, oc, lru_list);
oc->flags |= OC_F_ONLRU;
}
/*--------------------------------------------------------------------
* Object has been added to cache, record in lru & binheap.
*
......@@ -94,19 +109,15 @@ update_object_when(const struct object *o)
*/
void
EXP_Inject(struct objcore *oc, struct lru *lru, double ttl)
EXP_Inject(struct objcore *oc, struct lru *lru, double when)
{
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
Lck_Lock(&exp_mtx);
assert(oc->timer_idx == BINHEAP_NOIDX);
oc->timer_when = ttl;
binheap_insert(exp_heap, oc);
assert(oc->timer_idx != BINHEAP_NOIDX);
VLIST_INSERT_BEFORE(&lru->senteniel, oc, lru_list);
oc->flags |= OC_F_ONLRU;
oc->timer_when = when;
exp_insert(oc, lru);
Lck_Unlock(&exp_mtx);
}
......@@ -132,15 +143,12 @@ EXP_Insert(struct object *o)
assert(o->entered != 0 && !isnan(o->entered));
o->last_lru = o->entered;
Lck_Lock(&exp_mtx);
assert(oc->timer_idx == BINHEAP_NOIDX);
(void)update_object_when(o);
binheap_insert(exp_heap, oc);
assert(oc->timer_idx != BINHEAP_NOIDX);
lru = STV_lru(o->objstore);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
VLIST_INSERT_BEFORE(&lru->senteniel, oc, lru_list);
oc->flags |= OC_F_ONLRU;
Lck_Lock(&exp_mtx);
(void)update_object_when(o);
exp_insert(oc, lru);
Lck_Unlock(&exp_mtx);
oc_updatemeta(oc);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment