Commit 1b6ed4c1 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

All objects have an objstore now, remove conditions that no longer apply.

Move HSH_Freestore() to STV_Freestore(), it's a better fit.



git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@5579 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent f23fc8c5
......@@ -138,12 +138,10 @@ EXP_Insert(struct object *o)
(void)update_object_when(o);
binheap_insert(exp_heap, oc);
assert(oc->timer_idx != BINHEAP_NOIDX);
if (o->objstore != NULL) {
lru = STV_lru(o->objstore);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
VLIST_INSERT_BEFORE(&lru->senteniel, oc, lru_list);
oc->flags |= OC_F_ONLRU;
}
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_Unlock(&exp_mtx);
oc_updatemeta(oc);
}
......@@ -168,8 +166,6 @@ EXP_Touch(const struct object *o)
if (oc == NULL)
return (0);
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
/* We must have an objhead, otherwise we have no business on a LRU */
CHECK_OBJ_NOTNULL(oc->objhead, OBJHEAD_MAGIC);
/*
* For -spersistent we don't move objects on the lru list. Each
......@@ -181,8 +177,6 @@ EXP_Touch(const struct object *o)
if (oc->flags & OC_F_LRUDONTMOVE)
return (0);
if (o->objstore == NULL) /* XXX ?? */
return (0);
lru = STV_lru(o->objstore);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
retval = 0;
......
......@@ -146,18 +146,6 @@ HSH_DeleteObjHead(struct worker *w, struct objhead *oh)
FREE_OBJ(oh);
}
void
HSH_Freestore(struct object *o)
{
struct storage *st, *stn;
VTAILQ_FOREACH_SAFE(st, &o->store, list, stn) {
CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
VTAILQ_REMOVE(&o->store, st, list);
STV_free(st);
}
}
void
HSH_AddString(const struct sess *sp, const char *str)
{
......
......@@ -52,7 +52,6 @@ struct hash_slinger {
/* cache_hash.c */
void HSH_Prealloc(const struct sess *sp);
void HSH_Cleanup(struct worker *w);
void HSH_Freestore(struct object *o);
struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh);
void HSH_Unbusy(const struct sess *sp);
void HSH_Ref(struct objcore *o);
......
......@@ -112,10 +112,8 @@ stv_alloc(const struct sess *sp, size_t size)
*/
if (sp->obj != NULL) {
CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);
if (sp->obj->objstore != NULL) {
stv = sp->obj->objstore->stevedore;
CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
}
stv = sp->obj->objstore->stevedore;
CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
}
for (;;) {
......@@ -266,9 +264,24 @@ STV_NewObject(struct sess *sp, unsigned wsl, double ttl, unsigned nhttp)
AN(stv->allocobj);
o = stv->allocobj(stv, sp, ltot, &soc);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
CHECK_OBJ_NOTNULL(o->objstore, STORAGE_MAGIC);
return (o);
}
/*-------------------------------------------------------------------*/
void
STV_Freestore(struct object *o)
{
struct storage *st, *stn;
VTAILQ_FOREACH_SAFE(st, &o->store, list, stn) {
CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
VTAILQ_REMOVE(&o->store, st, list);
STV_free(st);
}
}
/*---------------------------------------------------------------------
* Default objcore methods
*/
......@@ -293,11 +306,8 @@ default_oc_freeobj(struct objcore *oc)
CAST_OBJ_NOTNULL(o, oc->priv, OBJECT_MAGIC);
oc->priv = NULL;
HSH_Freestore(o);
if (o->objstore != NULL)
STV_free(o->objstore);
else
FREE_OBJ(o);
STV_Freestore(o);
STV_free(o->objstore);
}
struct objcore_methods default_oc_methods = {
......
......@@ -81,6 +81,7 @@ void STV_close(void);
struct lru *STV_lru(const struct storage *st);
void STV_Config(const char *spec);
void STV_Config_Transient(void);
void STV_Freestore(struct object *o);
struct lru *LRU_Alloc(void);
......
......@@ -79,7 +79,7 @@ SMS_Makesynth(struct object *obj)
struct vsb *vsb;
CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
HSH_Freestore(obj);
STV_Freestore(obj);
obj->len = 0;
Lck_Lock(&sms_mtx);
......
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