[master] 810428b Give VBE_GetBusyObj() and VBE_DerefBusyObj() a worker argument, we will need it shortly.

Poul-Henning Kamp phk at varnish-cache.org
Wed Dec 7 11:14:29 CET 2011


commit 810428b8d1f7cef243707e0efa178ae045cc6e0e
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Dec 7 10:13:43 2011 +0000

    Give VBE_GetBusyObj() and VBE_DerefBusyObj() a worker argument,
    we will need it shortly.
    
    Add more calls to them, they will also be needed shortly.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index cf0a6ee..56f23fd 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -673,9 +673,9 @@ void VBE_Poll(void);
 
 /* cache_backend.c */
 void VBE_Init(void);
-struct busyobj *VBE_GetBusyObj(void);
+struct busyobj *VBE_GetBusyObj(struct worker *wrk);
 struct busyobj *VBE_RefBusyObj(struct busyobj *busyobj);
-void VBE_DerefBusyObj(struct busyobj **busyobj);
+void VBE_DerefBusyObj(struct worker *wrk, struct busyobj **busyobj);
 
 /* cache_backend_cfg.c */
 void VBE_InitCfg(void);
diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index ef937ea..21c1a4c 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -78,10 +78,11 @@ vbe_FreeBusyObj(struct busyobj *busyobj)
 }
 
 struct busyobj *
-VBE_GetBusyObj(void)
+VBE_GetBusyObj(struct worker *wrk)
 {
 	struct busyobj *busyobj = NULL;
 
+	(void)wrk;
 	Lck_Lock(&nbusyobj_mtx);
 	if (nbusyobj != NULL) {
 		CHECK_OBJ_NOTNULL(nbusyobj, BUSYOBJ_MAGIC);
@@ -110,10 +111,11 @@ VBE_RefBusyObj(struct busyobj *busyobj)
 }
 
 void
-VBE_DerefBusyObj(struct busyobj **pbo)
+VBE_DerefBusyObj(struct worker *wrk, struct busyobj **pbo)
 {
 	struct busyobj *busyobj;
 
+	(void)wrk;
 	busyobj = *pbo;
 	CHECK_OBJ_NOTNULL(busyobj, BUSYOBJ_MAGIC);
 	Lck_Lock(&busyobj->mtx);
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index 995268a..79e7956 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -255,7 +255,7 @@ cnt_prepresp(struct sess *sp)
 			AN(wrk->busyobj->do_stream);
 			VDI_CloseFd(wrk, &wrk->busyobj->vbc);
 			HSH_Drop(wrk);
-			VBE_DerefBusyObj(&wrk->busyobj);
+			VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		} else {
 			(void)HSH_Deref(wrk, NULL, &wrk->obj);
 		}
@@ -466,7 +466,7 @@ cnt_error(struct sess *sp)
 	if (wrk->obj == NULL) {
 		HSH_Prealloc(sp);
 		AZ(wrk->busyobj);
-		wrk->busyobj = VBE_GetBusyObj();
+		wrk->busyobj = VBE_GetBusyObj(wrk);
 		wrk->obj = STV_NewObject(wrk, NULL, cache_param->http_resp_size,
 		     (uint16_t)cache_param->http_max_hdr);
 		if (wrk->obj == NULL)
@@ -510,7 +510,7 @@ cnt_error(struct sess *sp)
 	if (sp->handling == VCL_RET_RESTART &&
 	    sp->restarts <  cache_param->max_restarts) {
 		HSH_Drop(wrk);
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		sp->director = NULL;
 		sp->restarts++;
 		sp->step = STP_RECV;
@@ -527,7 +527,7 @@ cnt_error(struct sess *sp)
 	sp->err_code = 0;
 	sp->err_reason = NULL;
 	http_Setup(wrk->bereq, NULL);
-	VBE_DerefBusyObj(&wrk->busyobj);
+	VBE_DerefBusyObj(wrk, &wrk->busyobj);
 	sp->step = STP_PREPRESP;
 	return (0);
 }
@@ -656,7 +656,7 @@ cnt_fetch(struct sess *sp)
 		AZ(HSH_Deref(wrk, wrk->objcore, NULL));
 		wrk->objcore = NULL;
 	}
-	VBE_DerefBusyObj(&wrk->busyobj);
+	VBE_DerefBusyObj(wrk, &wrk->busyobj);
 	http_Setup(wrk->bereq, NULL);
 	http_Setup(wrk->beresp, NULL);
 	sp->director = NULL;
@@ -831,7 +831,7 @@ cnt_fetchbody(struct sess *sp)
 		sp->err_code = 503;
 		sp->step = STP_ERROR;
 		VDI_CloseFd(wrk, &wrk->busyobj->vbc);
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		return (0);
 	}
 	CHECK_OBJ_NOTNULL(wrk->obj, OBJECT_MAGIC);
@@ -900,7 +900,7 @@ cnt_fetchbody(struct sess *sp)
 
 	if (i) {
 		HSH_Drop(wrk);
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		AZ(wrk->obj);
 		sp->err_code = 503;
 		sp->step = STP_ERROR;
@@ -913,7 +913,7 @@ cnt_fetchbody(struct sess *sp)
 		AN(wrk->obj->objcore->ban);
 		HSH_Unbusy(wrk);
 	}
-	VBE_DerefBusyObj(&wrk->busyobj);
+	VBE_DerefBusyObj(wrk, &wrk->busyobj);
 	wrk->acct_tmp.fetch++;
 	sp->step = STP_PREPRESP;
 	return (0);
@@ -987,7 +987,7 @@ cnt_streambody(struct sess *sp)
 	assert(WRW_IsReleased(wrk));
 	assert(wrk->wrw.ciov == wrk->wrw.siov);
 	(void)HSH_Deref(wrk, NULL, &wrk->obj);
-	VBE_DerefBusyObj(&wrk->busyobj);
+	VBE_DerefBusyObj(wrk, &wrk->busyobj);
 	http_Setup(wrk->resp, NULL);
 	sp->step = STP_DONE;
 	return (0);
@@ -1281,13 +1281,13 @@ cnt_miss(struct sess *sp)
 		AZ(HSH_Deref(wrk, wrk->objcore, NULL));
 		wrk->objcore = NULL;
 		http_Setup(wrk->bereq, NULL);
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		sp->step = STP_ERROR;
 		return (0);
 	case VCL_RET_PASS:
 		AZ(HSH_Deref(wrk, wrk->objcore, NULL));
 		wrk->objcore = NULL;
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		sp->step = STP_PASS;
 		return (0);
 	case VCL_RET_FETCH:
@@ -1297,7 +1297,7 @@ cnt_miss(struct sess *sp)
 	case VCL_RET_RESTART:
 		AZ(HSH_Deref(wrk, wrk->objcore, NULL));
 		wrk->objcore = NULL;
-		VBE_DerefBusyObj(&wrk->busyobj);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		INCOMPL();
 	default:
 		WRONG("Illegal action in vcl_miss{}");
@@ -1348,6 +1348,7 @@ cnt_pass(struct sess *sp)
 	AZ(wrk->obj);
 	AZ(wrk->busyobj);
 
+	wrk->busyobj = VBE_GetBusyObj(wrk);
 	WS_Reset(wrk->ws, NULL);
 	http_Setup(wrk->bereq, wrk->ws);
 	http_FilterHeader(sp, HTTPH_R_PASS);
@@ -1358,6 +1359,7 @@ cnt_pass(struct sess *sp)
 	VCL_pass_method(sp);
 	if (sp->handling == VCL_RET_ERROR) {
 		http_Setup(wrk->bereq, NULL);
+		VBE_DerefBusyObj(wrk, &wrk->busyobj);
 		sp->step = STP_ERROR;
 		return (0);
 	}
@@ -1365,7 +1367,6 @@ cnt_pass(struct sess *sp)
 	wrk->acct_tmp.pass++;
 	sp->sendbody = 1;
 	sp->step = STP_FETCH;
-	wrk->busyobj = VBE_GetBusyObj();
 	return (0);
 }
 
@@ -1405,6 +1406,7 @@ cnt_pipe(struct sess *sp)
 	CHECK_OBJ_NOTNULL(sp->vcl, VCL_CONF_MAGIC);
 
 	wrk->acct_tmp.pipe++;
+	wrk->busyobj = VBE_GetBusyObj(wrk);
 	WS_Reset(wrk->ws, NULL);
 	http_Setup(wrk->bereq, wrk->ws);
 	http_FilterHeader(sp, HTTPH_R_PIPE);
@@ -1417,6 +1419,7 @@ cnt_pipe(struct sess *sp)
 
 	PipeSession(sp);
 	assert(WRW_IsReleased(wrk));
+	VBE_DerefBusyObj(wrk, &wrk->busyobj);
 	http_Setup(wrk->bereq, NULL);
 	sp->step = STP_DONE;
 	return (0);
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index e33cdbe..0bd002d 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -452,7 +452,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
 	oc->refcnt = 1;
 
 	AZ(w->busyobj);
-	w->busyobj = VBE_GetBusyObj();
+	w->busyobj = VBE_GetBusyObj(w);
 
 	VRY_Validate(sp->vary_b);
 	if (sp->vary_l != NULL)



More information about the varnish-commit mailing list