[master] 578366e Also zap keep when purging.
Poul-Henning Kamp
phk at FreeBSD.org
Tue May 13 08:56:21 CEST 2014
commit 578366ecf3fbc1159ea5ed8543f3e81412bbe43d
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue May 13 06:56:04 2014 +0000
Also zap keep when purging.
Fixes #1139
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 7aa6d24..9acf893 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -555,7 +555,8 @@ hsh_rush(struct dstat *ds, struct objhead *oh)
*/
void
-HSH_Purge(struct worker *wrk, struct objhead *oh, double ttl, double grace)
+HSH_Purge(struct worker *wrk, struct objhead *oh, double ttl, double grace,
+double keep)
{
struct objcore *oc, **ocp;
unsigned spc, nobj, n;
@@ -598,7 +599,7 @@ HSH_Purge(struct worker *wrk, struct objhead *oh, double ttl, double grace)
if (o == NULL)
continue;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
- EXP_Rearm(o, now, ttl, grace, NAN); // XXX: Keep ?
+ EXP_Rearm(o, now, ttl, grace, keep);
(void)HSH_DerefObj(&wrk->stats, &o);
}
WS_Release(wrk->aws, 0);
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 9ebad3f..86fed3e 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -825,7 +825,7 @@ cnt_purge(struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(boc, OBJCORE_MAGIC);
VRY_Finish(req, DISCARD);
- HSH_Purge(wrk, boc->objhead, 0, 0);
+ HSH_Purge(wrk, boc->objhead, 0, 0, 0);
AZ(HSH_DerefObjCore(&wrk->stats, &boc));
diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index c423eb2..4e1bcbf 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -492,10 +492,10 @@ VRT_purge(const struct vrt_ctx *ctx, double ttl, double grace)
CHECK_OBJ_NOTNULL(ctx->req->wrk, WORKER_MAGIC);
if (ctx->method == VCL_MET_HIT)
HSH_Purge(ctx->req->wrk, ctx->req->obj->objcore->objhead,
- ttl, grace);
+ ttl, grace, NAN);
else if (ctx->method == VCL_MET_MISS)
HSH_Purge(ctx->req->wrk, ctx->req->objcore->objhead,
- ttl, grace);
+ ttl, grace, NAN);
}
/*--------------------------------------------------------------------
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 40d3aef..3c6f815 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -70,7 +70,8 @@ void HSH_Drop(struct worker *, struct object **);
void HSH_Init(const struct hash_slinger *slinger);
void HSH_AddString(const struct req *, const char *str);
void HSH_Insert(struct worker *, const void *hash, struct objcore *);
-void HSH_Purge(struct worker *, struct objhead *, double ttl, double grace);
+void HSH_Purge(struct worker *, struct objhead *, double ttl, double grace,
+ double keep);
void HSH_config(const char *h_arg);
struct busyobj *HSH_RefBusy(const struct objcore *oc);
struct objcore *HSH_Private(struct worker *wrk);
More information about the varnish-commit
mailing list