]> err.no Git - varnish/commitdiff
with the prefetch timer out of the way, we do not need the ttl
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 17 Feb 2009 11:11:57 +0000 (11:11 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Tue, 17 Feb 2009 11:11:57 +0000 (11:11 +0000)
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
varnish-cache/bin/varnishd/cache_ban.c
varnish-cache/bin/varnishd/cache_center.c
varnish-cache/bin/varnishd/cache_expire.c
varnish-cache/bin/varnishd/cache_hash.c
varnish-cache/bin/varnishd/cache_vrt.c
varnish-cache/bin/varnishd/rfc2616.c

index f71f6d6f9b23464eb55fb935fd8ccbf5c555f93b..5345988bb39b7b6d99c121b729be5c651bd24907 100644 (file)
@@ -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;
index 7f922a7bc36354615227cbcdd92ea4482647ef9d..eb5ee7b69aa06a4faa64f5b9a84b5759423e86f3 100644 (file)
@@ -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;
index 9df0783efce147976ef7c8fa0e32aeff5a2ba50b..8f5e7cd29a7b7cb57989b0f4d3b867f2f3cd7465 100644 (file)
@@ -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;
index e9a9f3674f390305ca5c96a568e8316939e8e795..581bfb336239d8584968c0635289c9edf061ea0a 100644 (file)
@@ -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);
index 2ddb7baf95cc6f75c396a1c673ac97fce7e3d0d6..554b8b79b8215c44fe0bd2f977c062cdd2ce2e7a 100644 (file)
@@ -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 */
index 290ddae30c6a50826eb7322407820bddf2eb979e..aacfe39da125e8c5061ed3492728bd07713ac66c 100644 (file)
@@ -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);
 }
 
 /*--------------------------------------------------------------------
index 12156ca515923b63ea97df71a44dfac0d48ad2e5..66c63ab1f8a499b28dca5b4032cb84b62c0a0f4b 100644 (file)
@@ -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;