[master] 5b77d34 Push sess out of HSH_Drop() and HSH_Unbusy()
Poul-Henning Kamp
phk at varnish-cache.org
Tue Nov 29 13:49:33 CET 2011
commit 5b77d3496a174b30f1dadb21a8ce14293422f276
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Tue Nov 29 12:49:08 2011 +0000
Push sess out of HSH_Drop() and HSH_Unbusy()
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 13db2e3..3832116 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -238,7 +238,7 @@ cnt_prepresp(struct sess *sp)
break;
if (sp->wrk->do_stream) {
VDI_CloseFd(sp->wrk);
- HSH_Drop(sp);
+ HSH_Drop(sp->wrk);
} else {
(void)HSH_Deref(sp->wrk, NULL, &sp->wrk->obj);
}
@@ -495,7 +495,7 @@ cnt_error(struct sess *sp)
if (sp->handling == VCL_RET_RESTART &&
sp->restarts < cache_param->max_restarts) {
- HSH_Drop(sp);
+ HSH_Drop(sp->wrk);
sp->director = NULL;
sp->restarts++;
sp->step = STP_RECV;
@@ -873,7 +873,7 @@ cnt_fetchbody(struct sess *sp)
AN(sp->director);
if (i) {
- HSH_Drop(sp);
+ HSH_Drop(wrk);
AZ(wrk->obj);
sp->err_code = 503;
sp->step = STP_ERROR;
@@ -884,7 +884,7 @@ cnt_fetchbody(struct sess *sp)
EXP_Insert(wrk->obj);
AN(wrk->obj->objcore);
AN(wrk->obj->objcore->ban);
- HSH_Unbusy(sp);
+ HSH_Unbusy(wrk);
}
wrk->acct_tmp.fetch++;
sp->step = STP_PREPRESP;
@@ -939,7 +939,7 @@ cnt_streambody(struct sess *sp)
EXP_Insert(sp->wrk->obj);
AN(sp->wrk->obj->objcore);
AN(sp->wrk->obj->objcore->ban);
- HSH_Unbusy(sp);
+ HSH_Unbusy(sp->wrk);
} else {
sp->doclose = "Stream error";
}
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 2820c45..a2fc985 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -580,29 +580,29 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
*/
void
-HSH_Drop(struct sess *sp)
+HSH_Drop(struct worker *wrk)
{
struct object *o;
- CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- o = sp->wrk->obj;
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ o = wrk->obj;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
AssertObjCorePassOrBusy(o->objcore);
o->exp.ttl = -1.;
if (o->objcore != NULL) /* Pass has no objcore */
- HSH_Unbusy(sp);
- (void)HSH_Deref(sp->wrk, NULL, &sp->wrk->obj);
+ HSH_Unbusy(wrk);
+ (void)HSH_Deref(wrk, NULL, &wrk->obj);
}
void
-HSH_Unbusy(const struct sess *sp)
+HSH_Unbusy(struct worker *wrk)
{
struct object *o;
struct objhead *oh;
struct objcore *oc;
- CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
- o = sp->wrk->obj;
+ CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ o = wrk->obj;
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oc = o->objcore;
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
@@ -614,9 +614,9 @@ HSH_Unbusy(const struct sess *sp)
assert(oc->refcnt > 0);
assert(oh->refcnt > 0);
if (o->ws_o->overflow)
- sp->wrk->stats.n_objoverflow++;
+ wrk->stats.n_objoverflow++;
if (cache_param->diag_bitmap & 0x40)
- WSP(sp, SLT_Debug,
+ WSL(wrk, SLT_Debug, 0,
"Object %u workspace free %u", o->xid, WS_Free(o->ws_o));
/* XXX: pretouch neighbors on oh->objcs to prevent page-on under mtx */
@@ -626,14 +626,14 @@ HSH_Unbusy(const struct sess *sp)
VTAILQ_REMOVE(&oh->objcs, oc, list);
VTAILQ_INSERT_HEAD(&oh->objcs, oc, list);
oc->flags &= ~OC_F_BUSY;
- AZ(sp->wrk->nbusyobj);
- sp->wrk->nbusyobj = oc->busyobj;
+ AZ(wrk->nbusyobj);
+ wrk->nbusyobj = oc->busyobj;
oc->busyobj = NULL;
if (oh->waitinglist != NULL)
hsh_rush(oh);
AN(oc->ban);
Lck_Unlock(&oh->mtx);
- assert(oc_getobj(sp->wrk, oc) == o);
+ assert(oc_getobj(wrk, oc) == o);
}
void
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 9e3b13f..b45e604 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -54,9 +54,9 @@ struct hash_slinger {
void HSH_Prealloc(const struct sess *sp);
void HSH_Cleanup(struct worker *w);
struct objcore *HSH_Lookup(struct sess *sp, struct objhead **poh);
-void HSH_Unbusy(const struct sess *sp);
+void HSH_Unbusy(struct worker *wrk);
void HSH_Ref(struct objcore *o);
-void HSH_Drop(struct sess *sp);
+void HSH_Drop(struct worker *wrk);
void HSH_Init(const struct hash_slinger *slinger);
void HSH_AddString(const struct sess *sp, const char *str);
struct objcore *HSH_Insert(const struct sess *sp);
More information about the varnish-commit
mailing list