[master] 8697de332 hash: Retire HSH_RUSH_POLICY
Dridi Boukelmoune
dridi.boukelmoune at gmail.com
Wed Aug 27 15:23:06 UTC 2025
commit 8697de3329d1ac51c25082d33751fe49bbd2fb1b
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date: Tue Dec 19 10:35:23 2023 +0100
hash: Retire HSH_RUSH_POLICY
From now on, the policy will be derived from the objcore.
diff --git a/bin/varnishd/cache/cache_ban_lurker.c b/bin/varnishd/cache/cache_ban_lurker.c
index 3057312c0..a36bc32b2 100644
--- a/bin/varnishd/cache/cache_ban_lurker.c
+++ b/bin/varnishd/cache/cache_ban_lurker.c
@@ -333,7 +333,7 @@ ban_lurker_test_ban(struct worker *wrk, struct ban *bt,
if (i)
ObjSendEvent(wrk, oc, OEV_BANCHG);
}
- (void)HSH_DerefObjCore(wrk, &oc, 0);
+ (void)HSH_DerefObjCore(wrk, &oc);
}
}
diff --git a/bin/varnishd/cache/cache_busyobj.c b/bin/varnishd/cache/cache_busyobj.c
index 42332ecd7..c8814a7bb 100644
--- a/bin/varnishd/cache/cache_busyobj.c
+++ b/bin/varnishd/cache/cache_busyobj.c
@@ -157,8 +157,7 @@ VBO_ReleaseBusyObj(struct worker *wrk, struct busyobj **pbo)
wrk->stats->ws_backend_overflow++;
if (bo->fetch_objcore != NULL) {
- (void)HSH_DerefObjCore(wrk, &bo->fetch_objcore,
- HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &bo->fetch_objcore);
}
VRT_Assign_Backend(&bo->director_req, NULL);
diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index 8e459140b..75a45bc5a 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -213,7 +213,7 @@ EXP_Insert(struct worker *wrk, struct objcore *oc)
ObjSendEvent(wrk, oc, OEV_EXPIRE);
tmpoc = oc;
assert(oc->refcnt >= 2); /* Silence coverity */
- (void)HSH_DerefObjCore(wrk, &oc, 0);
+ (void)HSH_DerefObjCore(wrk, &oc);
AZ(oc);
assert(tmpoc->refcnt >= 1); /* Silence coverity */
}
@@ -309,7 +309,7 @@ exp_inbox(struct exp_priv *ep, struct objcore *oc, unsigned flags, vtim_real now
VXID(ObjGetXID(ep->wrk, oc)), EXP_Ttl(NULL, oc) - now,
(intmax_t)oc->hits);
ObjSendEvent(ep->wrk, oc, OEV_EXPIRE);
- (void)HSH_DerefObjCore(ep->wrk, &oc, 0);
+ (void)HSH_DerefObjCore(ep->wrk, &oc);
return;
}
@@ -387,7 +387,7 @@ exp_expire(struct exp_priv *ep, vtim_real now)
VXID(ObjGetXID(ep->wrk, oc)), EXP_Ttl(NULL, oc) - now,
(intmax_t)oc->hits);
ObjSendEvent(ep->wrk, oc, OEV_EXPIRE);
- (void)HSH_DerefObjCore(ep->wrk, &oc, 0);
+ (void)HSH_DerefObjCore(ep->wrk, &oc);
}
return (0);
}
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index f00516812..8af011fb7 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -1122,7 +1122,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
http_Teardown(bo->beresp);
// cannot make assumptions about the number of references here #3434
if (bo->bereq_body != NULL)
- (void) HSH_DerefObjCore(bo->wrk, &bo->bereq_body, 0);
+ (void)HSH_DerefObjCore(bo->wrk, &bo->bereq_body);
if (oc->boc->state == BOS_FINISHED) {
AZ(oc->flags & OC_F_FAILED);
@@ -1132,7 +1132,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
// AZ(oc->boc); // XXX
if (bo->stale_oc != NULL)
- (void)HSH_DerefObjCore(wrk, &bo->stale_oc, 0);
+ (void)HSH_DerefObjCore(wrk, &bo->stale_oc);
wrk->vsl = NULL;
HSH_DerefBoc(wrk, oc);
@@ -1224,7 +1224,7 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
"No thread available for bgfetch");
(void)vbf_stp_fail(req->wrk, bo);
if (bo->stale_oc != NULL)
- (void)HSH_DerefObjCore(wrk, &bo->stale_oc, 0);
+ (void)HSH_DerefObjCore(wrk, &bo->stale_oc);
HSH_DerefBoc(wrk, oc);
SES_Rel(bo->sp);
THR_SetBusyobj(NULL);
@@ -1247,5 +1247,5 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
assert(oc->boc == boc);
HSH_DerefBoc(wrk, oc);
if (mode == VBF_BACKGROUND)
- (void)HSH_DerefObjCore(wrk, &oc, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &oc);
}
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 5f8d99fad..14259fa5d 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -794,7 +794,7 @@ HSH_Purge(struct worker *wrk, struct objhead *oh, vtim_real ttl_now,
EXP_Remove(ocp[i], NULL);
else
EXP_Reduce(ocp[i], ttl_now, ttl, grace, keep);
- (void)HSH_DerefObjCore(wrk, &ocp[i], 0);
+ (void)HSH_DerefObjCore(wrk, &ocp[i]);
AZ(ocp[i]);
total++;
}
@@ -946,7 +946,7 @@ HSH_Withdraw(struct worker *wrk, struct objcore **ocp)
oc->flags &= ~OC_F_BUSY;
oc->flags |= OC_F_WITHDRAWN;
hsh_rush1(wrk, oc, &rush);
- AZ(HSH_DerefObjCoreUnlock(wrk, &oc, 0));
+ AZ(HSH_DerefObjCoreUnlock(wrk, &oc));
hsh_rush2(wrk, &rush);
}
@@ -1136,7 +1136,7 @@ HSH_DerefBoc(struct worker *wrk, struct objcore *oc)
*/
int
-HSH_DerefObjCore(struct worker *wrk, struct objcore **ocp, int rushmax)
+HSH_DerefObjCore(struct worker *wrk, struct objcore **ocp)
{
struct objcore *oc;
struct objhead *oh;
@@ -1149,11 +1149,11 @@ HSH_DerefObjCore(struct worker *wrk, struct objcore **ocp, int rushmax)
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
Lck_Lock(&oh->mtx);
- return (HSH_DerefObjCoreUnlock(wrk, &oc, rushmax));
+ return (HSH_DerefObjCoreUnlock(wrk, &oc));
}
int
-HSH_DerefObjCoreUnlock(struct worker *wrk, struct objcore **ocp, int rushmax)
+HSH_DerefObjCoreUnlock(struct worker *wrk, struct objcore **ocp)
{
struct objcore *oc;
struct objhead *oh;
@@ -1163,8 +1163,6 @@ HSH_DerefObjCoreUnlock(struct worker *wrk, struct objcore **ocp, int rushmax)
TAKE_OBJ_NOTNULL(oc, ocp, OBJCORE_MAGIC);
assert(oc->refcnt > 0);
- (void)rushmax;
-
oh = oc->objhead;
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
diff --git a/bin/varnishd/cache/cache_objhead.h b/bin/varnishd/cache/cache_objhead.h
index 8d598d7b1..94ef81db5 100644
--- a/bin/varnishd/cache/cache_objhead.h
+++ b/bin/varnishd/cache/cache_objhead.h
@@ -76,11 +76,8 @@ int HSH_Snipe(const struct worker *, struct objcore *);
struct boc *HSH_RefBoc(const struct objcore *);
void HSH_DerefBoc(struct worker *wrk, struct objcore *);
void HSH_DeleteObjHead(const struct worker *, struct objhead *);
-
-int HSH_DerefObjCore(struct worker *, struct objcore **, int rushmax);
-#define HSH_RUSH_POLICY -1
-
-int HSH_DerefObjCoreUnlock(struct worker *, struct objcore **, int rushmax);
+int HSH_DerefObjCore(struct worker *, struct objcore **);
+int HSH_DerefObjCoreUnlock(struct worker *, struct objcore **);
enum lookup_e HSH_Lookup(struct req *, struct objcore **, struct objcore **);
void HSH_Ref(struct objcore *o);
void HSH_AddString(struct req *, void *ctx, const char *str);
diff --git a/bin/varnishd/cache/cache_req_body.c b/bin/varnishd/cache/cache_req_body.c
index 9a4cd54d7..cd1942163 100644
--- a/bin/varnishd/cache/cache_req_body.c
+++ b/bin/varnishd/cache/cache_req_body.c
@@ -80,7 +80,7 @@ vrb_pull(struct req *req, ssize_t maxsize, objiterate_f *func, void *priv)
if (STV_NewObject(req->wrk, req->body_oc, stv, 0) == 0) {
req->req_body_status = BS_ERROR;
HSH_DerefBoc(req->wrk, req->body_oc);
- AZ(HSH_DerefObjCore(req->wrk, &req->body_oc, 0));
+ AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
(void)VFP_Error(vfc, "Object allocation failed:"
" Ran out of space in %s", stv->vclname);
return (-1);
@@ -96,7 +96,7 @@ vrb_pull(struct req *req, ssize_t maxsize, objiterate_f *func, void *priv)
(void)VFP_Error(vfc, "req.body filters failed");
req->req_body_status = BS_ERROR;
HSH_DerefBoc(req->wrk, req->body_oc);
- AZ(HSH_DerefObjCore(req->wrk, &req->body_oc, 0));
+ AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
return (-1);
}
@@ -104,7 +104,7 @@ vrb_pull(struct req *req, ssize_t maxsize, objiterate_f *func, void *priv)
if (VFP_Open(ctx, vfc) < 0) {
req->req_body_status = BS_ERROR;
HSH_DerefBoc(req->wrk, req->body_oc);
- AZ(HSH_DerefObjCore(req->wrk, &req->body_oc, 0));
+ AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
return (-1);
}
@@ -152,7 +152,7 @@ vrb_pull(struct req *req, ssize_t maxsize, objiterate_f *func, void *priv)
VSLb_ts_req(req, "ReqBody", VTIM_real());
if (func != NULL) {
HSH_DerefBoc(req->wrk, req->body_oc);
- AZ(HSH_DerefObjCore(req->wrk, &req->body_oc, 0));
+ AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
if (vfps == VFP_END && r == 0 && (flush & OBJ_ITER_END) == 0)
r = func(priv, flush | OBJ_ITER_END, NULL, 0);
if (vfps != VFP_END) {
@@ -168,7 +168,7 @@ vrb_pull(struct req *req, ssize_t maxsize, objiterate_f *func, void *priv)
if (vfps != VFP_END) {
req->req_body_status = BS_ERROR;
- AZ(HSH_DerefObjCore(req->wrk, &req->body_oc, 0));
+ AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
return (-1);
}
@@ -289,7 +289,7 @@ VRB_Free(struct req *req)
if (req->body_oc == NULL)
return;
- r = HSH_DerefObjCore(req->wrk, &req->body_oc, 0);
+ r = HSH_DerefObjCore(req->wrk, &req->body_oc);
// each busyobj may have gained a reference
assert (r >= 0);
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index fa00acfdb..77481a41d 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -222,7 +222,7 @@ cnt_deliver(struct worker *wrk, struct req *req)
ObjTouch(req->wrk, req->objcore, req->t_prev);
if (Resp_Setup_Deliver(req)) {
- (void)HSH_DerefObjCore(wrk, &req->objcore, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
req->err_code = 500;
req->req_step = R_STP_SYNTH;
return (REQ_FSM_MORE);
@@ -240,7 +240,7 @@ cnt_deliver(struct worker *wrk, struct req *req)
if (wrk->vpi->handling != VCL_RET_DELIVER) {
HSH_Cancel(wrk, req->objcore, NULL);
- (void)HSH_DerefObjCore(wrk, &req->objcore, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
http_Teardown(req->resp);
switch (wrk->vpi->handling) {
@@ -413,7 +413,7 @@ cnt_synth(struct worker *wrk, struct req *req)
VSLb(req->vsl, SLT_Error, "Could not get storage");
req->doclose = SC_OVERLOAD;
VSLb_ts_req(req, "Resp", W_TIM_real(wrk));
- (void)HSH_DerefObjCore(wrk, &req->objcore, 1);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
http_Teardown(req->resp);
return (REQ_FSM_DONE);
}
@@ -529,7 +529,7 @@ cnt_finish(struct worker *wrk, struct req *req)
req->boc = NULL;
}
- (void)HSH_DerefObjCore(wrk, &req->objcore, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
http_Teardown(req->resp);
req->vdp_filter_list = NULL;
@@ -557,7 +557,7 @@ cnt_fetch(struct worker *wrk, struct req *req)
if (req->objcore->flags & OC_F_FAILED) {
req->err_code = 503;
req->req_step = R_STP_SYNTH;
- (void)HSH_DerefObjCore(wrk, &req->objcore, 1);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
AZ(req->objcore);
return (REQ_FSM_MORE);
}
@@ -685,7 +685,7 @@ cnt_lookup(struct worker *wrk, struct req *req)
}
/* Drop our object, we won't need it */
- (void)HSH_DerefObjCore(wrk, &req->objcore, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &req->objcore);
if (busy != NULL) {
HSH_Withdraw(wrk, &busy);
@@ -715,7 +715,7 @@ cnt_miss(struct worker *wrk, struct req *req)
wrk->stats->cache_miss++;
VBF_Fetch(wrk, req, req->objcore, req->stale_oc, VBF_NORMAL);
if (req->stale_oc != NULL)
- (void)HSH_DerefObjCore(wrk, &req->stale_oc, 0);
+ (void)HSH_DerefObjCore(wrk, &req->stale_oc);
req->req_step = R_STP_FETCH;
return (REQ_FSM_MORE);
case VCL_RET_FAIL:
@@ -735,7 +735,7 @@ cnt_miss(struct worker *wrk, struct req *req)
}
VRY_Clear(req);
if (req->stale_oc != NULL)
- (void)HSH_DerefObjCore(wrk, &req->stale_oc, 0);
+ (void)HSH_DerefObjCore(wrk, &req->stale_oc);
HSH_Withdraw(wrk, &req->objcore);
return (REQ_FSM_MORE);
}
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index b01b97460..4fcdf52c6 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -644,7 +644,7 @@ VRT_u_bereq_body(VRT_CTX)
http_Unset(ctx->bo->bereq, H_Content_Length);
if (ctx->bo->bereq_body != NULL)
- (void)HSH_DerefObjCore(ctx->bo->wrk, &ctx->bo->bereq_body, 0);
+ (void)HSH_DerefObjCore(ctx->bo->wrk, &ctx->bo->bereq_body);
if (ctx->bo->req != NULL) {
CHECK_OBJ(ctx->bo->req, REQ_MAGIC);
diff --git a/bin/varnishd/storage/storage_lru.c b/bin/varnishd/storage/storage_lru.c
index 5e046e794..ec0369c81 100644
--- a/bin/varnishd/storage/storage_lru.c
+++ b/bin/varnishd/storage/storage_lru.c
@@ -205,6 +205,6 @@ LRU_NukeOne(struct worker *wrk, struct lru *lru)
ObjSlim(wrk, oc);
VSLb(wrk->vsl, SLT_ExpKill, "LRU xid=%ju", VXID(ObjGetXID(wrk, oc)));
- (void)HSH_DerefObjCore(wrk, &oc, 0); // Ref from HSH_Snipe
+ (void)HSH_DerefObjCore(wrk, &oc); // Ref from HSH_Snipe
return (1);
}
diff --git a/bin/varnishd/storage/storage_persistent_silo.c b/bin/varnishd/storage/storage_persistent_silo.c
index 81c24b436..eb96acd3a 100644
--- a/bin/varnishd/storage/storage_persistent_silo.c
+++ b/bin/varnishd/storage/storage_persistent_silo.c
@@ -178,7 +178,7 @@ smp_load_seg(struct worker *wrk, const struct smp_sc *sc,
HSH_Insert(wrk, so->hash, oc, ban);
AN(oc->ban);
HSH_DerefBoc(wrk, oc); // XXX Keep it an stream resurrection?
- (void)HSH_DerefObjCore(wrk, &oc, HSH_RUSH_POLICY);
+ (void)HSH_DerefObjCore(wrk, &oc);
wrk->stats->n_vampireobject++;
}
Pool_Sumstat(wrk);
More information about the varnish-commit
mailing list