[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