[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