Commit cfb309ca authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Add a VXID() macro to strip client/backend bit from VXIDs.

parent 81e52dcd
...@@ -992,6 +992,7 @@ unsigned HTTP1_Write(const struct worker *w, const struct http *hp, const int*); ...@@ -992,6 +992,7 @@ unsigned HTTP1_Write(const struct worker *w, const struct http *hp, const int*);
#undef HTTPH #undef HTTPH
/* cache_main.c */ /* cache_main.c */
#define VXID(u) ((u) & VSL_IDENTMASK)
uint32_t VXID_Get(struct vxid_pool *v); uint32_t VXID_Get(struct vxid_pool *v);
extern volatile struct params * cache_param; extern volatile struct params * cache_param;
void THR_SetName(const char *name); void THR_SetName(const char *name);
......
...@@ -63,8 +63,8 @@ ved_include(struct req *preq, const char *src, const char *host) ...@@ -63,8 +63,8 @@ ved_include(struct req *preq, const char *src, const char *host)
req = SES_GetReq(wrk, preq->sp); req = SES_GetReq(wrk, preq->sp);
req->req_body_status = REQ_BODY_NONE; req->req_body_status = REQ_BODY_NONE;
AN(req->vsl->wid & VSL_CLIENTMARKER); AN(req->vsl->wid & VSL_CLIENTMARKER);
VSLb(req->vsl, SLT_Begin, "req %u esi", preq->vsl->wid & VSL_IDENTMASK); VSLb(req->vsl, SLT_Begin, "req %u esi", VXID(preq->vsl->wid));
VSLb(preq->vsl, SLT_Link, "req %u esi", req->vsl->wid & VSL_IDENTMASK); VSLb(preq->vsl, SLT_Link, "req %u esi", VXID(req->vsl->wid));
req->esi_level = preq->esi_level + 1; req->esi_level = preq->esi_level + 1;
HTTP_Copy(req->http0, preq->http0); HTTP_Copy(req->http0, preq->http0);
......
...@@ -340,8 +340,7 @@ EXP_NukeOne(struct busyobj *bo, struct lru *lru) ...@@ -340,8 +340,7 @@ EXP_NukeOne(struct busyobj *bo, struct lru *lru)
exp_mail_it(oc); exp_mail_it(oc);
VSLb(bo->vsl, SLT_ExpKill, "LRU x=%u", VSLb(bo->vsl, SLT_ExpKill, "LRU x=%u", VXID(ObjGetXID(oc, bo->stats)));
ObjGetXID(oc, bo->stats) & VSL_IDENTMASK);
AN(bo->stats); AN(bo->stats);
AN(oc); AN(oc);
(void)HSH_DerefObjCore(bo->stats, &oc); (void)HSH_DerefObjCore(bo->stats, &oc);
...@@ -473,7 +472,7 @@ exp_expire(struct exp_priv *ep, double now) ...@@ -473,7 +472,7 @@ exp_expire(struct exp_priv *ep, double now)
o = ObjGetObj(oc, &ep->wrk->stats); o = ObjGetObj(oc, &ep->wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC); CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
VSLb(&ep->vsl, SLT_ExpKill, "EXP_Expired x=%u t=%.0f", VSLb(&ep->vsl, SLT_ExpKill, "EXP_Expired x=%u t=%.0f",
ObjGetXID(oc, &ep->wrk->stats) & VSL_IDENTMASK, VXID(ObjGetXID(oc, &ep->wrk->stats)),
EXP_Ttl(NULL, &oc->exp) - now); EXP_Ttl(NULL, &oc->exp) - now);
(void)HSH_DerefObjCore(&ep->wrk->stats, &oc); (void)HSH_DerefObjCore(&ep->wrk->stats, &oc);
return (0); return (0);
......
...@@ -238,7 +238,7 @@ vbf_stp_retry(struct worker *wrk, struct busyobj *bo) ...@@ -238,7 +238,7 @@ vbf_stp_retry(struct worker *wrk, struct busyobj *bo)
VSLb(bo->vsl, SLT_Link, "bereq %u retry", wid); VSLb(bo->vsl, SLT_Link, "bereq %u retry", wid);
VSLb(bo->vsl, SLT_End, "%s", ""); VSLb(bo->vsl, SLT_End, "%s", "");
VSL_Flush(bo->vsl, 0); VSL_Flush(bo->vsl, 0);
owid = bo->vsl->wid & VSL_IDENTMASK; owid = VXID(bo->vsl->wid);
bo->vsl->wid = wid | VSL_BACKENDMARKER; bo->vsl->wid = wid | VSL_BACKENDMARKER;
VSLb(bo->vsl, SLT_Begin, "bereq %u retry", owid); VSLb(bo->vsl, SLT_Begin, "bereq %u retry", owid);
VSLb_ts_busyobj(bo, "Start", bo->t_prev); VSLb_ts_busyobj(bo, "Start", bo->t_prev);
...@@ -272,8 +272,7 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo) ...@@ -272,8 +272,7 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
HTTP_Setup(bo->bereq, bo->ws, bo->vsl, SLT_BereqMethod); HTTP_Setup(bo->bereq, bo->ws, bo->vsl, SLT_BereqMethod);
HTTP_Copy(bo->bereq, bo->bereq0); HTTP_Copy(bo->bereq, bo->bereq0);
http_PrintfHeader(bo->bereq, http_PrintfHeader(bo->bereq, "X-Varnish: %u", VXID(bo->vsl->wid));
"X-Varnish: %u", bo->vsl->wid & VSL_IDENTMASK);
VCL_backend_fetch_method(bo->vcl, wrk, NULL, bo, bo->bereq->ws); VCL_backend_fetch_method(bo->vcl, wrk, NULL, bo, bo->bereq->ws);
...@@ -871,10 +870,8 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc, ...@@ -871,10 +870,8 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
default: WRONG("Wrong fetch mode"); default: WRONG("Wrong fetch mode");
} }
VSLb(bo->vsl, SLT_Begin, "bereq %u %s ", VSLb(bo->vsl, SLT_Begin, "bereq %u %s ", VXID(req->vsl->wid), how);
req->vsl->wid & VSL_IDENTMASK, how); VSLb(req->vsl, SLT_Link, "bereq %u %s ", VXID(bo->vsl->wid), how);
VSLb(req->vsl, SLT_Link, "bereq %u %s ",
bo->vsl->wid & VSL_IDENTMASK, how);
bo->refcount = 2; bo->refcount = 2;
......
...@@ -246,10 +246,9 @@ http1_cleanup(struct sess *sp, struct worker *wrk, struct req *req) ...@@ -246,10 +246,9 @@ http1_cleanup(struct sess *sp, struct worker *wrk, struct req *req)
if (HTTP1_Reinit(req->htc) == HTTP1_COMPLETE) { if (HTTP1_Reinit(req->htc) == HTTP1_COMPLETE) {
AZ(req->vsl->wid); AZ(req->vsl->wid);
req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER; req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER;
VSLb(req->vsl, SLT_Begin, "req %u rxreq", VSLb(req->vsl, SLT_Begin, "req %u rxreq", VXID(req->sp->vxid));
req->sp->vxid & VSL_IDENTMASK);
VSL(SLT_Link, req->sp->vxid, "req %u rxreq", VSL(SLT_Link, req->sp->vxid, "req %u rxreq",
req->vsl->wid & VSL_IDENTMASK); VXID(req->vsl->wid));
VSLb_ts_req(req, "Start", sp->t_idle); VSLb_ts_req(req, "Start", sp->t_idle);
VSLb_ts_req(req, "Req", sp->t_idle); VSLb_ts_req(req, "Req", sp->t_idle);
req->t_req = req->t_prev; req->t_req = req->t_prev;
...@@ -318,10 +317,9 @@ http1_dissect(struct worker *wrk, struct req *req) ...@@ -318,10 +317,9 @@ http1_dissect(struct worker *wrk, struct req *req)
*/ */
if (req->vsl->wid == 0) { if (req->vsl->wid == 0) {
req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER; req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER;
VSLb(req->vsl, SLT_Begin, "req %u rxreq", VSLb(req->vsl, SLT_Begin, "req %u rxreq", VXID(req->sp->vxid));
req->sp->vxid & VSL_IDENTMASK);
VSL(SLT_Link, req->sp->vxid, "req %u rxreq", VSL(SLT_Link, req->sp->vxid, "req %u rxreq",
req->vsl->wid & VSL_IDENTMASK); VXID(req->vsl->wid));
} }
/* Borrow VCL reference from worker thread */ /* Borrow VCL reference from worker thread */
......
...@@ -391,7 +391,7 @@ pan_sess(const struct sess *sp) ...@@ -391,7 +391,7 @@ pan_sess(const struct sess *sp)
VSB_printf(pan_vsp, " sp = %p {\n", sp); VSB_printf(pan_vsp, " sp = %p {\n", sp);
VSB_printf(pan_vsp, " fd = %d, vxid = %u,\n", VSB_printf(pan_vsp, " fd = %d, vxid = %u,\n",
sp->fd, sp->vxid & VSL_IDENTMASK); sp->fd, VXID(sp->vxid));
VSB_printf(pan_vsp, " client = %s %s,\n", sp->client_addr_str, VSB_printf(pan_vsp, " client = %s %s,\n", sp->client_addr_str,
sp->client_port_str); sp->client_port_str);
switch (sp->sess_step) { switch (sp->sess_step) {
......
...@@ -108,11 +108,11 @@ cnt_deliver(struct worker *wrk, struct req *req) ...@@ -108,11 +108,11 @@ cnt_deliver(struct worker *wrk, struct req *req)
if (req->wrk->stats.cache_hit) if (req->wrk->stats.cache_hit)
http_PrintfHeader(req->resp, http_PrintfHeader(req->resp,
"X-Varnish: %u %u", req->vsl->wid & VSL_IDENTMASK, "X-Varnish: %u %u", VXID(req->vsl->wid),
req->obj->vxid & VSL_IDENTMASK); VXID(req->obj->vxid));
else else
http_PrintfHeader(req->resp, http_PrintfHeader(req->resp,
"X-Varnish: %u", req->vsl->wid & VSL_IDENTMASK); "X-Varnish: %u", VXID(req->vsl->wid));
/* We base Age calculation upon the last timestamp taken during /* We base Age calculation upon the last timestamp taken during
client request processing. This gives some inaccuracy, but client request processing. This gives some inaccuracy, but
...@@ -221,8 +221,7 @@ cnt_synth(struct worker *wrk, struct req *req) ...@@ -221,8 +221,7 @@ cnt_synth(struct worker *wrk, struct req *req)
VTIM_format(now, date); VTIM_format(now, date);
http_PrintfHeader(h, "Date: %s", date); http_PrintfHeader(h, "Date: %s", date);
http_SetHeader(h, "Server: Varnish"); http_SetHeader(h, "Server: Varnish");
http_PrintfHeader(req->resp, http_PrintfHeader(req->resp, "X-Varnish: %u", VXID(req->vsl->wid));
"X-Varnish: %u", req->vsl->wid & VSL_IDENTMASK);
http_PutResponse(h, "HTTP/1.1", req->err_code, req->err_reason); http_PutResponse(h, "HTTP/1.1", req->err_code, req->err_reason);
AZ(req->synth_body); AZ(req->synth_body);
...@@ -599,10 +598,9 @@ cnt_pipe(struct worker *wrk, struct req *req) ...@@ -599,10 +598,9 @@ cnt_pipe(struct worker *wrk, struct req *req)
wrk->stats.s_pipe++; wrk->stats.s_pipe++;
bo = VBO_GetBusyObj(wrk, req); bo = VBO_GetBusyObj(wrk, req);
HTTP_Setup(bo->bereq, bo->ws, bo->vsl, SLT_BereqMethod); HTTP_Setup(bo->bereq, bo->ws, bo->vsl, SLT_BereqMethod);
VSLb(bo->vsl, SLT_Begin, "bereq %u pipe", req->vsl->wid & VSL_IDENTMASK); VSLb(bo->vsl, SLT_Begin, "bereq %u pipe", VXID(req->vsl->wid));
http_FilterReq(bo->bereq, req->http, 0); // XXX: 0 ? http_FilterReq(bo->bereq, req->http, 0); // XXX: 0 ?
http_PrintfHeader(bo->bereq, http_PrintfHeader(bo->bereq, "X-Varnish: %u", VXID(req->vsl->wid));
"X-Varnish: %u", req->vsl->wid & VSL_IDENTMASK);
http_SetHeader(bo->bereq, "Connection: close"); http_SetHeader(bo->bereq, "Connection: close");
VCL_pipe_method(req->vcl, wrk, req, bo, req->http->ws); VCL_pipe_method(req->vcl, wrk, req, bo, req->http->ws);
...@@ -611,7 +609,7 @@ cnt_pipe(struct worker *wrk, struct req *req) ...@@ -611,7 +609,7 @@ cnt_pipe(struct worker *wrk, struct req *req)
INCOMPL(); INCOMPL();
assert(wrk->handling == VCL_RET_PIPE); assert(wrk->handling == VCL_RET_PIPE);
VSLb(req->vsl, SLT_Link, "bereq %u pipe", bo->vsl->wid & VSL_IDENTMASK); VSLb(req->vsl, SLT_Link, "bereq %u pipe", VXID(bo->vsl->wid));
PipeRequest(req, bo); PipeRequest(req, bo);
assert(WRW_IsReleased(wrk)); assert(WRW_IsReleased(wrk));
http_Teardown(bo->bereq); http_Teardown(bo->bereq);
......
...@@ -134,8 +134,8 @@ ses_sess_pool_task(struct worker *wrk, void *arg) ...@@ -134,8 +134,8 @@ ses_sess_pool_task(struct worker *wrk, void *arg)
req = SES_GetReq(wrk, sp); req = SES_GetReq(wrk, sp);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC); CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
AN(req->vsl->wid & VSL_CLIENTMARKER); AN(req->vsl->wid & VSL_CLIENTMARKER);
VSLb(req->vsl, SLT_Begin, "req %u rxreq", sp->vxid & VSL_IDENTMASK); VSLb(req->vsl, SLT_Begin, "req %u rxreq", VXID(sp->vxid));
VSL(SLT_Link, sp->vxid, "req %u rxreq", req->vsl->wid & VSL_IDENTMASK); VSL(SLT_Link, sp->vxid, "req %u rxreq", VXID(req->vsl->wid));
sp->sess_step = S_STP_NEWREQ; sp->sess_step = S_STP_NEWREQ;
ses_req_pool_task(wrk, req); ses_req_pool_task(wrk, req);
......
...@@ -504,8 +504,7 @@ VRT_r_req_xid(const struct vrt_ctx *ctx) ...@@ -504,8 +504,7 @@ VRT_r_req_xid(const struct vrt_ctx *ctx)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC);
return (WS_Printf(ctx->req->http->ws, "%u", return (WS_Printf(ctx->req->http->ws, "%u", VXID(ctx->req->vsl->wid)));
ctx->req->vsl->wid & VSL_IDENTMASK));
} }
const char * const char *
...@@ -515,8 +514,7 @@ VRT_r_bereq_xid(const struct vrt_ctx *ctx) ...@@ -515,8 +514,7 @@ VRT_r_bereq_xid(const struct vrt_ctx *ctx)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
return (WS_Printf(ctx->bo->bereq->ws, "%u", return (WS_Printf(ctx->bo->bereq->ws, "%u", VXID(ctx->bo->vsl->wid)));
ctx->bo->vsl->wid & VSL_IDENTMASK));
} }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment