[master] ac8de26 Use worker workspace for purge list of objects
Poul-Henning Kamp
phk at varnish-cache.org
Fri May 17 10:18:00 CEST 2013
commit ac8de26b6404a1634ba95d45655513ef706f6b68
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Fri May 17 08:17:44 2013 +0000
Use worker workspace for purge list of objects
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index e9ef4fc..3d3ef81 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -517,16 +517,16 @@ hsh_rush(struct dstat *ds, struct objhead *oh)
*/
void
-HSH_Purge(struct req *req, struct objhead *oh, double ttl, double grace)
+HSH_Purge(struct worker *wrk, struct objhead *oh, double ttl, double grace)
{
struct objcore *oc, **ocp;
unsigned spc, nobj, n;
struct object *o;
- CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
- spc = WS_Reserve(req->ws, 0);
- ocp = (void*)req->ws->f;
+ spc = WS_Reserve(wrk->aws, 0);
+ ocp = (void*)wrk->aws->f;
Lck_Lock(&oh->mtx);
assert(oh->refcnt > 0);
nobj = 0;
@@ -543,7 +543,7 @@ HSH_Purge(struct req *req, struct objhead *oh, double ttl, double grace)
continue;
}
- (void)oc_getobj(&req->wrk->stats, oc);
+ (void)oc_getobj(&wrk->stats, oc);
/* XXX: still needed ? */
xxxassert(spc >= sizeof *ocp);
@@ -561,16 +561,16 @@ HSH_Purge(struct req *req, struct objhead *oh, double ttl, double grace)
for (n = 0; n < nobj; n++) {
oc = ocp[n];
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
- o = oc_getobj(&req->wrk->stats, oc);
+ o = oc_getobj(&wrk->stats, oc);
if (o == NULL)
continue;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
o->exp.ttl = ttl;
o->exp.grace = grace;
EXP_Rearm(o);
- (void)HSH_Deref(&req->wrk->stats, NULL, &o);
+ (void)HSH_Deref(&wrk->stats, NULL, &o);
}
- WS_Release(req->ws, 0);
+ WS_Release(wrk->aws, 0);
}
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index c02aac9..a0636ef 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -1026,7 +1026,7 @@ cnt_purge(struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(boc, OBJCORE_MAGIC);
VRY_Finish(req, NULL);
- HSH_Purge(req, boc->objhead, 0, 0);
+ HSH_Purge(wrk, boc->objhead, 0, 0);
AZ(HSH_Deref(&wrk->stats, boc, NULL));
diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index 8d0ee46..3009e90 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -507,11 +507,12 @@ VRT_purge(const struct vrt_ctx *ctx, double ttl, double grace)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
+ CHECK_OBJ_NOTNULL(ctx->req->wrk, WORKER_MAGIC);
if (ctx->method == VCL_MET_LOOKUP)
- HSH_Purge(ctx->req, ctx->req->obj->objcore->objhead,
+ HSH_Purge(ctx->req->wrk, ctx->req->obj->objcore->objhead,
ttl, grace);
else if (ctx->method == VCL_MET_MISS)
- HSH_Purge(ctx->req, ctx->req->objcore->objhead,
+ HSH_Purge(ctx->req->wrk, ctx->req->objcore->objhead,
ttl, grace);
}
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 3c36b4d..e21a96e 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -71,7 +71,7 @@ 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 req *, struct objhead *, double ttl, double grace);
+void HSH_Purge(struct worker *, struct objhead *, double ttl, double grace);
void HSH_config(const char *h_arg);
struct objcore *HSH_NewObjCore(struct worker *wrk);
More information about the varnish-commit
mailing list