From 2f91a806cd12a99708430d00e1ff94ede1014270 Mon Sep 17 00:00:00 2001 From: phk Date: Tue, 17 Feb 2009 11:11:57 +0000 Subject: [PATCH] with the prefetch timer out of the way, we do not need the ttl in objcore, only when the timer fires. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@3783 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- varnish-cache/bin/varnishd/cache.h | 2 +- varnish-cache/bin/varnishd/cache_ban.c | 2 +- varnish-cache/bin/varnishd/cache_center.c | 11 ++++------- varnish-cache/bin/varnishd/cache_expire.c | 4 ++-- varnish-cache/bin/varnishd/cache_hash.c | 10 +++++----- varnish-cache/bin/varnishd/cache_vrt.c | 6 +++--- varnish-cache/bin/varnishd/rfc2616.c | 3 +-- 7 files changed, 17 insertions(+), 21 deletions(-) diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index f71f6d6f..5345988b 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -262,7 +262,6 @@ struct objcore { #define OBJCORE_MAGIC 0x4d301302 struct object *obj; double timer_when; - double ttl; unsigned char flags; #define OC_F_ONLRU (1<<0) #define OC_F_BUSY (1<<1) @@ -294,6 +293,7 @@ struct object { unsigned len; + double ttl; double age; double entered; double grace; diff --git a/varnish-cache/bin/varnishd/cache_ban.c b/varnish-cache/bin/varnishd/cache_ban.c index 7f922a7b..eb5ee7b6 100644 --- a/varnish-cache/bin/varnishd/cache_ban.c +++ b/varnish-cache/bin/varnishd/cache_ban.c @@ -528,7 +528,7 @@ BAN_CheckObject(struct object *o, const struct sess *sp) o->ban = b0; return (0); } else { - o->objcore->ttl = 0; + o->ttl = 0; WSP(sp, SLT_ExpBan, "%u was banned", o->xid); EXP_Rearm(o); o->ban = NULL; diff --git a/varnish-cache/bin/varnishd/cache_center.c b/varnish-cache/bin/varnishd/cache_center.c index 9df0783e..8f5e7cd2 100644 --- a/varnish-cache/bin/varnishd/cache_center.c +++ b/varnish-cache/bin/varnishd/cache_center.c @@ -378,7 +378,6 @@ static int cnt_fetch(struct sess *sp) { int i; - struct objcore *oc; CHECK_OBJ_NOTNULL(sp, SESS_MAGIC); CHECK_OBJ_NOTNULL(sp->vcl, VCL_CONF_MAGIC); @@ -415,12 +414,10 @@ cnt_fetch(struct sess *sp) sp->step = STP_RECV; return (0); case VCL_RET_PASS: - if (sp->obj->objcore != NULL) { - oc = sp->obj->objcore; - oc->flags |= OC_F_PASS; - if (oc->ttl - sp->t_req < params->default_ttl) - oc->ttl = sp->t_req + params->default_ttl; - } + if (sp->obj->objcore != NULL) + sp->obj->objcore->flags |= OC_F_PASS; + if (sp->obj->ttl - sp->t_req < params->default_ttl) + sp->obj->ttl = sp->t_req + params->default_ttl; break; case VCL_RET_DELIVER: break; diff --git a/varnish-cache/bin/varnishd/cache_expire.c b/varnish-cache/bin/varnishd/cache_expire.c index e9a9f367..581bfb33 100644 --- a/varnish-cache/bin/varnishd/cache_expire.c +++ b/varnish-cache/bin/varnishd/cache_expire.c @@ -90,7 +90,7 @@ update_object_when(const struct object *o) CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC); Lck_AssertHeld(&exp_mtx); - when = oc->ttl + HSH_Grace(o->grace); + when = o->ttl + HSH_Grace(o->grace); assert(!isnan(when)); if (when == oc->timer_when) return (0); @@ -269,7 +269,7 @@ exp_timer(void *arg) assert(sp->handling == VCL_RET_DISCARD); WSL(&ww, SLT_ExpKill, 0, - "%u %d", o->xid, (int)(o->objcore->ttl - t)); + "%u %d", o->xid, (int)(o->ttl - t)); Lck_Lock(&exp_mtx); assert(oc->timer_idx == BINHEAP_NOIDX); VTAILQ_REMOVE(&lru, o->objcore, lru_list); diff --git a/varnish-cache/bin/varnishd/cache_hash.c b/varnish-cache/bin/varnishd/cache_hash.c index 2ddb7baf..554b8b79 100644 --- a/varnish-cache/bin/varnishd/cache_hash.c +++ b/varnish-cache/bin/varnishd/cache_hash.c @@ -276,7 +276,7 @@ HSH_Lookup(struct sess *sp) } if (!o->cacheable) continue; - if (oc->ttl == 0) + if (o->ttl == 0) continue; if (BAN_CheckObject(o, sp)) continue; @@ -284,11 +284,11 @@ HSH_Lookup(struct sess *sp) continue; /* If still valid, use it */ - if (oc->ttl >= sp->t_req) + if (o->ttl >= sp->t_req) break; /* Remember any matching objects inside their grace period */ - if (oc->ttl + HSH_Grace(o->grace) >= sp->t_req) + if (o->ttl + HSH_Grace(o->grace) >= sp->t_req) grace_o = o; } if (oc == NULL) @@ -302,7 +302,7 @@ HSH_Lookup(struct sess *sp) */ if (o == NULL && grace_o != NULL && grace_o->child != NULL && - grace_o->objcore->ttl + HSH_Grace(sp->grace) >= sp->t_req) + grace_o->ttl + HSH_Grace(sp->grace) >= sp->t_req) o = grace_o; if (o != NULL) { @@ -381,7 +381,7 @@ HSH_Drop(struct sess *sp) assert(o->refcnt > 0); if (o->objcore != NULL) { /* Pass has no objcore */ AN(ObjIsBusy(o)); - o->objcore->ttl = 0; + o->ttl = 0; } o->cacheable = 0; if (o->objcore != NULL) /* Pass has no objcore */ diff --git a/varnish-cache/bin/varnishd/cache_vrt.c b/varnish-cache/bin/varnishd/cache_vrt.c index 290ddae3..aacfe39d 100644 --- a/varnish-cache/bin/varnishd/cache_vrt.c +++ b/varnish-cache/bin/varnishd/cache_vrt.c @@ -380,9 +380,9 @@ VRT_l_obj_ttl(const struct sess *sp, double a) * We special case and make sure that rounding does not surprise. */ if (a <= 0) - sp->obj->objcore->ttl = sp->t_req - 1; + sp->obj->ttl = sp->t_req - 1; else - sp->obj->objcore->ttl = sp->t_req + a; + sp->obj->ttl = sp->t_req + a; EXP_Rearm(sp->obj); } @@ -393,7 +393,7 @@ VRT_r_obj_ttl(const struct sess *sp) CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC); /* XXX */ if (sp->obj->objcore == NULL) return (0.0); - return (sp->obj->objcore->ttl - sp->t_req); + return (sp->obj->ttl - sp->t_req); } /*-------------------------------------------------------------------- diff --git a/varnish-cache/bin/varnishd/rfc2616.c b/varnish-cache/bin/varnishd/rfc2616.c index 12156ca5..66c63ab1 100644 --- a/varnish-cache/bin/varnishd/rfc2616.c +++ b/varnish-cache/bin/varnishd/rfc2616.c @@ -198,8 +198,7 @@ RFC2616_cache_policy(const struct sess *sp, const struct http *hp) } ttl = RFC2616_Ttl(sp, hp, sp->obj); - if (sp->obj->objcore != NULL) - sp->obj->objcore->ttl = ttl; + sp->obj->ttl = ttl; if (ttl == 0) sp->obj->cacheable = 0; -- 2.39.5