[master] 9d67fce Move (beresp.)exp from worker to busyobj
Poul-Henning Kamp
phk at varnish-cache.org
Tue Nov 29 19:10:39 CET 2011
commit 9d67fcef723e583e56dbb43bf202259fe45f4b07
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Nov 29 18:10:22 2011 +0000
Move (beresp.)exp from worker to busyobj
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 7a0167c..5196575 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -325,8 +325,6 @@ struct worker {
struct objcore *objcore;
struct busyobj *busyobj;
- struct exp exp;
-
/* This is only here so VRT can find it */
const char *storage_hint;
@@ -503,6 +501,8 @@ struct busyobj {
struct vep_state *vep;
unsigned fetch_failed;
struct vgz *vgz_rx;
+
+ struct exp exp;
};
/* Object structure --------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 27209de..86b54d0 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -464,7 +464,7 @@ cnt_error(struct sess *sp)
if (wrk->obj == NULL) {
HSH_Prealloc(sp);
- EXP_Clr(&wrk->exp);
+ New_BusyObj(wrk);
wrk->obj = STV_NewObject(wrk, NULL, cache_param->http_resp_size,
(uint16_t)cache_param->http_max_hdr);
if (wrk->obj == NULL)
@@ -613,13 +613,13 @@ cnt_fetch(struct sess *sp)
/*
* What does RFC2616 think about TTL ?
*/
- EXP_Clr(&wrk->exp);
- wrk->exp.entered = W_TIM_real(wrk);
+ EXP_Clr(&wrk->busyobj->exp);
+ wrk->busyobj->exp.entered = W_TIM_real(wrk);
RFC2616_Ttl(sp);
/* pass from vclrecv{} has negative TTL */
if (wrk->objcore == NULL)
- wrk->exp.ttl = -1.;
+ wrk->busyobj->exp.ttl = -1.;
AZ(wrk->do_esi);
@@ -715,7 +715,7 @@ cnt_fetchbody(struct sess *sp)
/* This is a pass from vcl_recv */
pass = 1;
/* VCL may have fiddled this, but that doesn't help */
- wrk->exp.ttl = -1.;
+ wrk->busyobj->exp.ttl = -1.;
} else if (sp->handling == VCL_RET_HIT_FOR_PASS) {
/* pass from vcl_fetch{} -> hit-for-pass */
/* XXX: the bereq was not filtered pass... */
@@ -806,7 +806,8 @@ cnt_fetchbody(struct sess *sp)
*/
l += strlen("Content-Length: XxxXxxXxxXxxXxxXxx") + sizeof(void *);
- if (wrk->exp.ttl < cache_param->shortlived || wrk->objcore == NULL)
+ if (wrk->busyobj->exp.ttl < cache_param->shortlived ||
+ wrk->objcore == NULL)
wrk->storage_hint = TRANSIENT_STORAGE;
wrk->obj = STV_NewObject(wrk, wrk->storage_hint, l, nhttp);
@@ -816,10 +817,10 @@ cnt_fetchbody(struct sess *sp)
* shortlived object on Transient storage.
*/
wrk->obj = STV_NewObject(wrk, TRANSIENT_STORAGE, l, nhttp);
- if (wrk->exp.ttl > cache_param->shortlived)
- wrk->exp.ttl = cache_param->shortlived;
- wrk->exp.grace = 0.0;
- wrk->exp.keep = 0.0;
+ if (wrk->busyobj->exp.ttl > cache_param->shortlived)
+ wrk->busyobj->exp.ttl = cache_param->shortlived;
+ wrk->busyobj->exp.grace = 0.0;
+ wrk->busyobj->exp.keep = 0.0;
}
if (wrk->obj == NULL) {
sp->err_code = 503;
@@ -859,7 +860,7 @@ cnt_fetchbody(struct sess *sp)
if (http_GetHdr(hp, H_Last_Modified, &b))
wrk->obj->last_modified = VTIM_parse(b);
else
- wrk->obj->last_modified = floor(wrk->exp.entered);
+ wrk->obj->last_modified = floor(wrk->busyobj->exp.entered);
assert(WRW_IsReleased(wrk));
diff --git a/bin/varnishd/cache/cache_rfc2616.c b/bin/varnishd/cache/cache_rfc2616.c
index e22da50..ae9614d 100644
--- a/bin/varnishd/cache/cache_rfc2616.c
+++ b/bin/varnishd/cache/cache_rfc2616.c
@@ -69,12 +69,15 @@ RFC2616_Ttl(const struct sess *sp)
double h_date, h_expires;
char *p;
const struct http *hp;
+ struct exp *expp;
+
+ expp = &sp->wrk->busyobj->exp;
hp = sp->wrk->beresp;
- assert(sp->wrk->exp.entered != 0.0 && !isnan(sp->wrk->exp.entered));
+ assert(expp->entered != 0.0 && !isnan(expp->entered));
/* If all else fails, cache using default ttl */
- sp->wrk->exp.ttl = cache_param->default_ttl;
+ expp->ttl = cache_param->default_ttl;
max_age = age = 0;
h_expires = 0;
@@ -87,7 +90,7 @@ RFC2616_Ttl(const struct sess *sp)
if (http_GetHdr(hp, H_Age, &p)) {
age = strtoul(p, NULL, 0);
- sp->wrk->exp.age = age;
+ expp->age = age;
}
if (http_GetHdr(hp, H_Expires, &p))
h_expires = VTIM_parse(p);
@@ -97,7 +100,7 @@ RFC2616_Ttl(const struct sess *sp)
switch (sp->err_code) {
default:
- sp->wrk->exp.ttl = -1.;
+ expp->ttl = -1.;
break;
case 200: /* OK */
case 203: /* Non-Authoritative Information */
@@ -122,9 +125,9 @@ RFC2616_Ttl(const struct sess *sp)
max_age = strtoul(p, NULL, 0);
if (age > max_age)
- sp->wrk->exp.ttl = 0;
+ expp->ttl = 0;
else
- sp->wrk->exp.ttl = max_age - age;
+ expp->ttl = max_age - age;
break;
}
@@ -135,22 +138,22 @@ RFC2616_Ttl(const struct sess *sp)
/* If backend told us it is expired already, don't cache. */
if (h_expires < h_date) {
- sp->wrk->exp.ttl = 0;
+ expp->ttl = 0;
break;
}
if (h_date == 0 ||
- fabs(h_date - sp->wrk->exp.entered) < cache_param->clock_skew) {
+ fabs(h_date - expp->entered) < cache_param->clock_skew) {
/*
* If we have no Date: header or if it is
* sufficiently close to our clock we will
* trust Expires: relative to our own clock.
*/
- if (h_expires < sp->wrk->exp.entered)
- sp->wrk->exp.ttl = 0;
+ if (h_expires < expp->entered)
+ expp->ttl = 0;
else
- sp->wrk->exp.ttl = h_expires -
- sp->wrk->exp.entered;
+ expp->ttl = h_expires -
+ expp->entered;
break;
} else {
/*
@@ -158,7 +161,7 @@ RFC2616_Ttl(const struct sess *sp)
* derive a relative time from the two headers.
* (the negative ttl case is caught above)
*/
- sp->wrk->exp.ttl = (int)(h_expires - h_date);
+ expp->ttl = (int)(h_expires - h_date);
}
}
@@ -166,8 +169,8 @@ RFC2616_Ttl(const struct sess *sp)
/* calculated TTL, Our time, Date, Expires, max-age, age */
WSP(sp, SLT_TTL,
"%u RFC %.0f %.0f %.0f %.0f %.0f %.0f %.0f %u",
- sp->xid, sp->wrk->exp.ttl, -1., -1., sp->wrk->exp.entered,
- sp->wrk->exp.age, h_date, h_expires, max_age);
+ sp->xid, expp->ttl, -1., -1., expp->entered,
+ expp->age, h_date, h_expires, max_age);
}
/*--------------------------------------------------------------------
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index 5951b9c..b889d69 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -411,12 +411,12 @@ VRT_DO_EXP(obj, sp->wrk->obj->exp, keep, 0,
EXP_Rearm(sp->wrk->obj);
vrt_wsp_exp(sp, sp->wrk->obj->xid, &sp->wrk->obj->exp);)
-VRT_DO_EXP(beresp, sp->wrk->exp, grace, 0,
- vrt_wsp_exp(sp, sp->xid, &sp->wrk->exp);)
-VRT_DO_EXP(beresp, sp->wrk->exp, ttl, 0,
- vrt_wsp_exp(sp, sp->xid, &sp->wrk->exp);)
-VRT_DO_EXP(beresp, sp->wrk->exp, keep, 0,
- vrt_wsp_exp(sp, sp->xid, &sp->wrk->exp);)
+VRT_DO_EXP(beresp, sp->wrk->busyobj->exp, grace, 0,
+ vrt_wsp_exp(sp, sp->xid, &sp->wrk->busyobj->exp);)
+VRT_DO_EXP(beresp, sp->wrk->busyobj->exp, ttl, 0,
+ vrt_wsp_exp(sp, sp->xid, &sp->wrk->busyobj->exp);)
+VRT_DO_EXP(beresp, sp->wrk->busyobj->exp, keep, 0,
+ vrt_wsp_exp(sp, sp->xid, &sp->wrk->busyobj->exp);)
/*--------------------------------------------------------------------
* req.xid
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index 1a4b8ac..7c364c0 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -242,7 +242,7 @@ STV_MkObject(struct worker *wrk, void *ptr, unsigned ltot,
http_Setup(o->http, o->ws_o);
o->http->magic = HTTP_MAGIC;
- o->exp = wrk->exp;
+ o->exp = wrk->busyobj->exp;
VTAILQ_INIT(&o->store);
wrk->stats.n_object++;
diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c
index 15087b3..0791941 100644
--- a/bin/varnishd/storage/storage_persistent.c
+++ b/bin/varnishd/storage/storage_persistent.c
@@ -478,7 +478,7 @@ smp_allocobj(struct stevedore *stv, struct worker *wrk, unsigned ltot,
return (NULL); /* from cnt_error */
CAST_OBJ_NOTNULL(sc, stv->priv, SMP_SC_MAGIC);
AN(wrk->objcore);
- AN(wrk->exp.ttl > 0.);
+ AN(wrk->busyobj->exp.ttl > 0.);
ltot = IRNUP(sc, ltot);
More information about the varnish-commit
mailing list