[4.0] e734b2a Now that busyobj has its own worker thread, borrow the stats throughout the show.
Poul-Henning Kamp
phk at FreeBSD.org
Thu Mar 13 10:24:27 CET 2014
commit e734b2a4e9e89b169765b66289ea99651c65d3fb
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Fri Feb 21 09:50:39 2014 +0000
Now that busyobj has its own worker thread, borrow the stats
throughout the show.
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index de527da..0b9bf21 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -60,7 +60,7 @@ vbf_release_req(struct busyobj *bo)
*/
static int
-vbf_beresp2obj(struct worker *wrk, struct busyobj *bo)
+vbf_beresp2obj(struct busyobj *bo)
{
unsigned l;
char *b;
@@ -104,8 +104,6 @@ vbf_beresp2obj(struct worker *wrk, struct busyobj *bo)
bo->exp.ttl+bo->exp.grace+bo->exp.keep < cache_param->shortlived)
bo->storage_hint = TRANSIENT_STORAGE;
- AZ(bo->stats);
- bo->stats = &wrk->stats;
AN(bo->fetch_objcore);
obj = STV_NewObject(bo, bo->storage_hint, l, nhttp);
if (obj == NULL &&
@@ -469,8 +467,7 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
if (bo->htc.body_status == BS_NONE)
bo->do_stream = 0;
- if (vbf_beresp2obj(wrk, bo)) {
- bo->stats = NULL;
+ if (vbf_beresp2obj(bo)) {
(void)VFP_Error(bo, "Could not get storage");
VDI_CloseFd(&bo->vbc);
return (F_STP_DONE);
@@ -500,8 +497,6 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
VFP_Fetch_Body(bo, est);
}
- bo->stats = NULL;
-
bo->t_body = VTIM_mono();
VSLb(bo->vsl, SLT_Fetch_Body, "%u(%s)",
@@ -572,7 +567,6 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
vl = 0;
l += http_EstimateWS(bo->ims_obj->http, 0, &nhttp);
- bo->stats = &wrk->stats;
obj = STV_NewObject(bo, bo->storage_hint, l, nhttp);
if (obj == NULL) {
(void)VFP_Error(bo, "Could not get storage");
@@ -634,7 +628,6 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
} while (bo->state < BOS_FAILED &&
(ois == OIS_DATA || ois == OIS_STREAM));
ObjIterEnd(&oi);
- bo->stats = NULL;
if (bo->state != BOS_FAILED) {
assert(al == bo->ims_obj->len);
assert(obj->len == al);
@@ -678,7 +671,7 @@ vbf_stp_error(struct worker *wrk, struct busyobj *bo)
http_PrintfHeader(bo->beresp, "Content-Length: %jd", (intmax_t)0);
http_PrintfHeader(bo->beresp, "X-XXXPHK: yes");
- if (vbf_beresp2obj(wrk, bo)) {
+ if (vbf_beresp2obj(bo)) {
INCOMPL();
}
@@ -731,6 +724,8 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
bo->t_hdr = NAN;
bo->t_body = NAN;
+ bo->stats = &wrk->stats;
+
while (stp != F_STP_DONE) {
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
bo->step = stp;
@@ -749,6 +744,8 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
}
assert(WRW_IsReleased(wrk));
+ bo->stats = NULL;
+
if (bo->vbc != NULL) {
if (bo->should_close)
VDI_CloseFd(&bo->vbc);
More information about the varnish-commit
mailing list