r5571 - trunk/varnish-cache/bin/varnishd

phk at varnish-cache.org phk at varnish-cache.org
Sun Nov 21 11:13:41 CET 2010


Author: phk
Date: 2010-11-21 11:13:41 +0100 (Sun, 21 Nov 2010)
New Revision: 5571

Modified:
   trunk/varnish-cache/bin/varnishd/cache.h
   trunk/varnish-cache/bin/varnishd/cache_center.c
   trunk/varnish-cache/bin/varnishd/cache_hash.c
   trunk/varnish-cache/bin/varnishd/stevedore.c
Log:
Eliminate sp->objhead as a general variable, it was always tracking
sp->objcore and we can find the objhead from the objcore.

Rename it to match its remaining functionality:  recording which
busy objhead we are sleeping on.



Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h	2010-11-21 10:07:57 UTC (rev 5570)
+++ trunk/varnish-cache/bin/varnishd/cache.h	2010-11-21 10:13:41 UTC (rev 5571)
@@ -474,9 +474,11 @@
 	struct vbc		*vbc;
 	struct object		*obj;
 	struct objcore		*objcore;
-	struct objhead		*objhead;
 	struct VCL_conf		*vcl;
 
+	/* The busy objhead we sleep on */
+	struct objhead		*hash_objhead;
+
 	/* Various internal stuff */
 	struct sessmem		*mem;
 

Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c	2010-11-21 10:07:57 UTC (rev 5570)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c	2010-11-21 10:13:41 UTC (rev 5571)
@@ -469,10 +469,8 @@
 
 	if (i) {
 		if (sp->objcore != NULL) {
-			CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
 			CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
 			AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
-			sp->objhead = NULL;
 			sp->objcore = NULL;
 		}
 		AZ(sp->obj);
@@ -528,14 +526,10 @@
 
 	if (sp->objcore == NULL) {
 		/* This is a pass from vcl_recv */
-		AZ(sp->objhead);
 		sp->wrk->cacheable = 0;
-	} else if (!sp->wrk->cacheable) {
-		if (sp->objhead != NULL) {
-			AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
-			sp->objhead = NULL;
-			sp->objcore = NULL;
-		}
+	} else if (!sp->wrk->cacheable && sp->objcore != NULL) {
+		AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
+		sp->objcore = NULL;
 	}
 
 	/*
@@ -545,7 +539,6 @@
 	 */
 
 	if (sp->wrk->cacheable) {
-		CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
 		CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
 		vary = VRY_Create(sp, sp->wrk->beresp);
 		if (vary != NULL) {
@@ -553,7 +546,6 @@
 			assert(varyl > 0);
 		}
 	} else {
-		AZ(sp->objhead);
 		AZ(sp->objcore);
 	}
 
@@ -743,7 +735,6 @@
 	/* Drop our object, we won't need it */
 	(void)HSH_Deref(sp->wrk, NULL, &sp->obj);
 	sp->objcore = NULL;
-	AZ(sp->objhead);
 
 	switch(sp->handling) {
 	case VCL_RET_PASS:
@@ -820,8 +811,6 @@
 	if (oc->flags & OC_F_BUSY) {
 		sp->wrk->stats.cache_miss++;
 
-		// AZ(oc->obj);
-		sp->objhead = oh;
 		sp->objcore = oc;
 		sp->step = STP_MISS;
 		return (0);
@@ -836,7 +825,6 @@
 		WSP(sp, SLT_HitPass, "%u", sp->obj->xid);
 		(void)HSH_Deref(sp->wrk, NULL, &sp->obj);
 		sp->objcore = NULL;
-		sp->objhead = NULL;
 		sp->step = STP_PASS;
 		return (0);
 	}
@@ -879,7 +867,6 @@
 
 	AZ(sp->obj);
 	AN(sp->objcore);
-	AN(sp->objhead);
 	WS_Reset(sp->wrk->ws, NULL);
 	sp->wrk->bereq = sp->wrk->http[0];
 	http_Setup(sp->wrk->bereq, sp->wrk->ws);
@@ -892,13 +879,11 @@
 	switch(sp->handling) {
 	case VCL_RET_ERROR:
 		AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
-		sp->objhead = NULL;
 		sp->objcore = NULL;
 		sp->step = STP_ERROR;
 		return (0);
 	case VCL_RET_PASS:
 		AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
-		sp->objhead = NULL;
 		sp->objcore = NULL;
 		sp->step = STP_PASS;
 		return (0);
@@ -907,7 +892,6 @@
 		return (0);
 	case VCL_RET_RESTART:
 		AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
-		sp->objhead = NULL;
 		sp->objcore = NULL;
 		INCOMPL();
 	default:

Modified: trunk/varnish-cache/bin/varnishd/cache_hash.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_hash.c	2010-11-21 10:07:57 UTC (rev 5570)
+++ trunk/varnish-cache/bin/varnishd/cache_hash.c	2010-11-21 10:13:41 UTC (rev 5571)
@@ -270,7 +270,7 @@
 	if (params->diag_bitmap & 0x80000000)
 		hsh_testmagic(sp->wrk->nobjhead->digest);
 
-	AZ(sp->objhead);
+	AZ(sp->hash_objhead);
 	AN(w->nobjhead);
 	oh = hash->lookup(sp, w->nobjhead);
 	CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
@@ -320,14 +320,14 @@
 	if (params->diag_bitmap & 0x80000000)
 		hsh_testmagic(sp->wrk->nobjhead->digest);
 
-	if (sp->objhead != NULL) {
+	if (sp->hash_objhead != NULL) {
 		/*
 		 * This sess came off the waiting list, and brings a
 		 * oh refcnt with it.
 		 */
-		CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
-		oh = sp->objhead;
-		sp->objhead = NULL;
+		CHECK_OBJ_NOTNULL(sp->hash_objhead, OBJHEAD_MAGIC);
+		oh = sp->hash_objhead;
+		sp->hash_objhead = NULL;
 	} else {
 		AN(w->nobjhead);
 		oh = hash->lookup(sp, w->nobjhead);
@@ -434,7 +434,7 @@
 		 * back when the sess comes off the waiting list and
 		 * calls us again
 		 */
-		sp->objhead = oh;
+		sp->hash_objhead = oh;
 		sp->wrk = NULL;
 		Lck_Unlock(&oh->mtx);
 		return (NULL);

Modified: trunk/varnish-cache/bin/varnishd/stevedore.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.c	2010-11-21 10:07:57 UTC (rev 5570)
+++ trunk/varnish-cache/bin/varnishd/stevedore.c	2010-11-21 10:13:41 UTC (rev 5571)
@@ -203,8 +203,6 @@
 		CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
 
 		o->objcore = sp->objcore;
-
-		sp->objhead = NULL;     /* XXX: refcnt follows pointer. */
 		sp->objcore = NULL;     /* refcnt follows pointer. */
 		BAN_NewObj(o);
 




More information about the varnish-commit mailing list