[experimental-ims] 3c53c1a Replace the fd# with the VXID in VSL records.

Poul-Henning Kamp phk at FreeBSD.org
Thu Dec 18 10:27:53 CET 2014


commit 3c53c1affef3c7fdd0bb040c4f0f7c7f87694a61
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Tue Aug 14 10:16:23 2012 +0000

    Replace the fd# with the VXID in VSL records.

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index add0150..2441bd6 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -494,7 +494,6 @@ struct busyobj {
 	 * is recycled.
 	 */
 	unsigned		refcount;
-	uint32_t		vxid;
 
 	uint8_t			*vary;
 	unsigned		is_gzip;
@@ -583,7 +582,6 @@ struct req {
 	unsigned		magic;
 #define REQ_MAGIC		0x2751aaa1
 
-	uint32_t		vxid;
 	int			restarts;
 	int			esi_level;
 	int			disable_esi;
@@ -679,7 +677,6 @@ struct sess {
 	enum sess_step		sess_step;
 	int			fd;
 	enum sess_close		reason;
-	unsigned		vsl_id;
 	uint32_t		vxid;
 
 	/* Cross references ------------------------------------------*/
@@ -957,7 +954,7 @@ void SES_Charge(struct worker *, struct req *);
 struct sesspool *SES_NewPool(struct pool *pp, unsigned pool_no);
 void SES_DeletePool(struct sesspool *sp);
 int SES_ScheduleReq(struct req *);
-struct req *SES_GetReq(struct sess *sp);
+struct req *SES_GetReq(struct worker *, struct sess *);
 void SES_Handle(struct sess *sp, double now);
 void SES_ReleaseReq(struct req *);
 pool_func_t SES_pool_accept_task;
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index da2cdf8..c5831fd 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -251,7 +251,6 @@ VCA_SetupSess(struct worker *wrk, struct sess *sp)
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 	CAST_OBJ_NOTNULL(wa, (void*)wrk->aws->f, WRK_ACCEPT_MAGIC);
 	sp->fd = wa->acceptsock;
-	sp->vsl_id = wa->acceptsock | VSL_CLIENTMARKER ;
 	wa->acceptsock = -1;
 	retval = wa->acceptlsock->name;
 	assert(wa->acceptaddrlen <= sp->sockaddrlen);
diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c
index 7b3101b..e8efb90 100644
--- a/bin/varnishd/cache/cache_backend.c
+++ b/bin/varnishd/cache/cache_backend.c
@@ -181,7 +181,6 @@ bes_conn_try(struct req *req, struct vbc *vc, const struct vdi_simple *vs)
 		vc->addr = NULL;
 		vc->addrlen = 0;
 	} else {
-		vc->vsl_id = s | VSL_BACKENDMARKER;
 		VTCP_myname(s, abuf1, sizeof abuf1, pbuf1, sizeof pbuf1);
 		VSLb(req->vsl, SLT_BackendOpen, "%d %s %s %s ",
 		    vc->fd, vs->backend->display_name, abuf1, pbuf1);
diff --git a/bin/varnishd/cache/cache_backend.h b/bin/varnishd/cache/cache_backend.h
index 3baa0ca..b84e702 100644
--- a/bin/varnishd/cache/cache_backend.h
+++ b/bin/varnishd/cache/cache_backend.h
@@ -153,8 +153,6 @@ struct vbc {
 	struct backend		*backend;
 	struct vdi_simple	*vdis;
 	struct vsl_log		*vsl;
-	unsigned		orig_vsl_id;
-	unsigned		vsl_id;
 	int			fd;
 
 	struct sockaddr_storage	*addr;
diff --git a/bin/varnishd/cache/cache_busyobj.c b/bin/varnishd/cache/cache_busyobj.c
index 8f0cc50..014e564 100644
--- a/bin/varnishd/cache/cache_busyobj.c
+++ b/bin/varnishd/cache/cache_busyobj.c
@@ -108,7 +108,6 @@ VBO_GetBusyObj(struct worker *wrk)
 	AZ(bo->refcount);
 
 	bo->refcount = 1;
-	bo->vxid = VXID_Get(&wrk->vxid_pool);
 
 	p = (void*)(bo + 1);
 	p = (void*)PRNDUP(p);
@@ -129,6 +128,7 @@ VBO_GetBusyObj(struct worker *wrk)
 
 	sz = cache_param->vsl_buffer;
 	VSL_Setup(bo->vsl, p, sz);
+	bo->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_BACKENDMARKER;
 	p += sz;
 	p = (void*)PRNDUP(p);
 	assert(p < bo->end);
diff --git a/bin/varnishd/cache/cache_dir.c b/bin/varnishd/cache/cache_dir.c
index 528a57c..ab43cf1 100644
--- a/bin/varnishd/cache/cache_dir.c
+++ b/bin/varnishd/cache/cache_dir.c
@@ -61,9 +61,7 @@ VDI_CloseFd(struct vbc **vbp)
 	 * before the OS reuses the FD
 	 */
 	VSL_Flush(vc->vsl, 0);
-	vc->vsl->wid = vc->orig_vsl_id;
 	vc->vsl = NULL;
-	vc->orig_vsl_id = 0;
 
 	VTCP_close(&vc->fd);
 	VBE_DropRefConn(bp);
@@ -92,9 +90,7 @@ VDI_RecycleFd(struct vbc **vbp)
 
 	/* XXX: revisit this hack */
 	VSL_Flush(vc->vsl, 0);
-	vc->vsl->wid = vc->orig_vsl_id;
 	vc->vsl = NULL;
-	vc->orig_vsl_id = 0;
 
 	Lck_Lock(&bp->mtx);
 	VSC_C_main->backend_recycle++;
@@ -114,11 +110,8 @@ VDI_GetFd(const struct director *d, struct req *req)
 		d = req->director;
 	CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
 	vc = d->getfd(d, req);
-	if (vc != NULL) {
+	if (vc != NULL)
 		vc->vsl = req->busyobj->vsl;
-		vc->orig_vsl_id = vc->vsl->wid;
-		vc->vsl->wid = vc->vsl_id;
-	}
 	return (vc);
 }
 
diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c
index daef6a9..e7fee9b 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -59,7 +59,7 @@ ved_include(struct req *preq, const char *src, const char *host)
 	/* Take a workspace snapshot */
 	wrk_ws_wm = WS_Snapshot(wrk->aws); /* XXX ? */
 
-	req = SES_GetReq(preq->sp);
+	req = SES_GetReq(wrk, preq->sp);
 	req->esi_level = preq->esi_level + 1;
 
 	HTTP_Copy(req->http0, preq->http0);
@@ -105,7 +105,7 @@ ved_include(struct req *preq, const char *src, const char *host)
 		i = CNT_Request(wrk, req);
 		if (i == 1)
 			break;
-		DSL(0x20, SLT_Debug, req->sp->vsl_id,
+		DSL(0x20, SLT_Debug, req->vsl->wid,
 		    "loop waiting for ESI (%d)", i);
 		assert(i == 2);
 		AZ(req->wrk);
diff --git a/bin/varnishd/cache/cache_gzip.c b/bin/varnishd/cache/cache_gzip.c
index aed84d9..80149c6 100644
--- a/bin/varnishd/cache/cache_gzip.c
+++ b/bin/varnishd/cache/cache_gzip.c
@@ -391,7 +391,6 @@ VGZ_UpdateObj(const struct vgz *vg, struct object *obj)
 }
 
 /*--------------------------------------------------------------------
- * Passing a vsl_id of -1 means "use wrk->vbc->vsl_id"
  */
 
 int
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index fd0bbe1..0db0d6b 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -449,7 +449,6 @@ HSH_Lookup(struct req *req)
 
 	AZ(req->busyobj);
 	req->busyobj = VBO_GetBusyObj(wrk);
-	req->busyobj->vsl->wid = req->sp->vsl_id;
 	req->busyobj->refcount = 2;	/* One for req, one for FetchBody */
 
 	VRY_Validate(req->vary_b);
@@ -485,7 +484,7 @@ hsh_rush(struct dstat *ds, struct objhead *oh)
 		ds->busy_wakeup++;
 		AZ(req->wrk);
 		VTAILQ_REMOVE(&wl->list, req, w_list);
-		DSL(0x20, SLT_Debug, req->sp->vsl_id, "off waiting list");
+		DSL(0x20, SLT_Debug, req->vsl->wid, "off waiting list");
 		if (SES_ScheduleReq(req)) {
 			/*
 			 * We could not schedule the session, leave the
diff --git a/bin/varnishd/cache/cache_http.c b/bin/varnishd/cache/cache_http.c
index 3b9ae2e..ad29899 100644
--- a/bin/varnishd/cache/cache_http.c
+++ b/bin/varnishd/cache/cache_http.c
@@ -852,7 +852,7 @@ http_FilterReq(const struct req *req, unsigned how)
 	else
 		http_linkh(hp, req->http, HTTP_HDR_PROTO);
 	http_filterfields(hp, req->http, how);
-	http_PrintfHeader(hp, "X-Varnish: %u", req->vxid);
+	http_PrintfHeader(hp, "X-Varnish: %u", req->vsl->wid & VSL_IDENTMASK);
 }
 
 /*--------------------------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_http1_fsm.c b/bin/varnishd/cache/cache_http1_fsm.c
index d181d11..ab870ad 100644
--- a/bin/varnishd/cache/cache_http1_fsm.c
+++ b/bin/varnishd/cache/cache_http1_fsm.c
@@ -245,6 +245,13 @@ http1_dissect(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
+	/*
+	 * Cache_req_fsm zeros the vxid once a requests is processed.
+	 * Allocate a new one only now that we know will need it.
+	 */
+	if (req->vsl->wid == 0)
+		req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER;
+
 	/* Borrow VCL reference from worker thread */
 	VCL_Refresh(&wrk->vcl);
 	req->vcl = wrk->vcl;
@@ -336,7 +343,6 @@ HTTP1_Session(struct worker *wrk, struct req *req)
 			if (done == 2)
 				return;
 			assert(done == 1);
-			assert(req->vxid == 0);
 			sdr = http1_cleanup(sp, wrk, req);
 			switch (sdr) {
 			case SESS_DONE_RET_GONE:
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index e6b0941..ee7dd78 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -236,8 +236,7 @@ pan_req(const struct req *req)
 
 	VSB_printf(pan_vsp, "req = %p {\n", req);
 
-	VSB_printf(pan_vsp, "  sp = %p, vxid = %u,",
-	    req->sp, req->vxid);
+	VSB_printf(pan_vsp, "  sp = %p, vxid = %u,", req->sp, req->vsl->wid);
 
 	switch (req->req_step) {
 #define REQ_STEP(l, u, arg) case R_STP_##u: stp = "R_STP_" #u; break;
@@ -294,8 +293,8 @@ pan_sess(const struct sess *sp)
 	const char *stp;
 
 	VSB_printf(pan_vsp, "  sp = %p {\n", sp);
-	VSB_printf(pan_vsp, "    fd = %d, id = %u,\n",
-	    sp->fd, sp->vsl_id & VSL_IDENTMASK);
+	VSB_printf(pan_vsp, "    fd = %d, vxid = %u,\n",
+	    sp->fd, sp->vxid & VSL_IDENTMASK);
 	VSB_printf(pan_vsp, "    client = %s %s,\n",
 	    sp->addr ? sp->addr : "?.?.?.?",
 	    sp->port ? sp->port : "?");
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 6e03e4c..e99ed6c 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -270,7 +270,6 @@ cnt_error(struct worker *wrk, struct req *req)
 
 	bo = VBO_GetBusyObj(wrk);
 	req->busyobj = bo;
-	bo->vsl->wid = req->sp->vsl_id;
 	AZ(bo->stats);
 	bo->stats = &wrk->stats;
 	req->objcore = HSH_NewObjCore(wrk);
@@ -286,7 +285,7 @@ cnt_error(struct worker *wrk, struct req *req)
 		return(1);
 	}
 	CHECK_OBJ_NOTNULL(req->obj, OBJECT_MAGIC);
-	req->obj->vxid = req->vxid;
+	req->obj->vxid = bo->vsl->wid;
 	req->obj->exp.entered = req->t_req;
 
 	h = req->obj->http;
@@ -626,7 +625,7 @@ cnt_fetchbody(struct worker *wrk, struct req *req)
 		VSB_delete(vary);
 	}
 
-	req->obj->vxid = req->vxid;
+	req->obj->vxid = bo->vsl->wid;
 	req->obj->response = req->err_code;
 	WS_Assert(req->obj->ws_o);
 
@@ -955,7 +954,6 @@ cnt_pass(struct worker *wrk, struct req *req)
 
 	req->busyobj = VBO_GetBusyObj(wrk);
 	bo = req->busyobj;
-	bo->vsl->wid = req->sp->vsl_id;
 	bo->refcount = 2;
 	HTTP_Setup(bo->bereq, bo->ws, bo->vsl, HTTP_Bereq);
 	http_FilterReq(req, HTTPH_R_PASS);
@@ -1015,7 +1013,6 @@ cnt_pipe(struct worker *wrk, struct req *req)
 	req->acct_req.pipe++;
 	req->busyobj = VBO_GetBusyObj(wrk);
 	bo = req->busyobj;
-	bo->vsl->wid = req->sp->vsl_id;
 	HTTP_Setup(bo->bereq, bo->ws, bo->vsl, HTTP_Bereq);
 	http_FilterReq(req, 0);
 
@@ -1103,8 +1100,7 @@ cnt_recv(const struct worker *wrk, struct req *req)
 	AZ(req->busyobj);
 
 	/* Assign XID and log */
-	VSLb(req->vsl, SLT_ReqStart, "%s %s %u",
-	    req->sp->addr, req->sp->port, req->vxid);
+	VSLb(req->vsl, SLT_ReqStart, "%s %s", req->sp->addr, req->sp->port);
 
 	if (req->err_code) {
 		req->req_step = R_STP_ERROR;
@@ -1187,8 +1183,8 @@ cnt_diag(struct req *req, const char *state)
 
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
-	VSLb(req->vsl,  SLT_Debug, "vsl_id %u STP_%s sp %p obj %p vcl %p",
-	    req->sp->vsl_id, state, req->sp, req->obj, req->vcl);
+	VSLb(req->vsl,  SLT_Debug, "vxid %u STP_%s sp %p obj %p vcl %p",
+	    req->vsl->wid, state, req->sp, req->obj, req->vcl);
 	VSL_Flush(req->vsl, 0);
 }
 
@@ -1207,8 +1203,7 @@ CNT_Request(struct worker *wrk, struct req *req)
 	    req->req_step == R_STP_LOOKUP ||
 	    req->req_step == R_STP_RECV);
 
-	if (req->req_step == R_STP_RECV)
-		req->vxid = VXID_Get(&wrk->vxid_pool);
+	AN(req->vsl->wid & VSL_CLIENTMARKER);
 
 	req->wrk = wrk;
 
@@ -1243,8 +1238,7 @@ CNT_Request(struct worker *wrk, struct req *req)
 			VSLb(req->vsl, SLT_Length, "%ju",
 			    (uintmax_t)req->req_bodybytes);
 		}
-		VSLb(req->vsl, SLT_ReqEnd, "%u %.9f %.9f %.9f %.9f %.9f",
-		    req->vxid,
+		VSLb(req->vsl, SLT_ReqEnd, "%.9f %.9f %.9f %.9f %.9f",
 		    req->t_req,
 		    req->sp->t_idle,
 		    req->sp->t_idle - req->t_resp,
@@ -1253,7 +1247,12 @@ CNT_Request(struct worker *wrk, struct req *req)
 
 		/* done == 2 was charged by cache_hash.c */
 		SES_Charge(wrk, req);
-		req->vxid = 0;
+
+		/*
+		 * Nuke the VXID, cache_http1_fsm.c::http1_dissect() will
+		 * allocate a new one when necessary.
+		 */
+		req->vsl->wid = 0;
 	}
 
 	req->wrk = NULL;
diff --git a/bin/varnishd/cache/cache_response.c b/bin/varnishd/cache/cache_response.c
index 0a554f4..cb152a5 100644
--- a/bin/varnishd/cache/cache_response.c
+++ b/bin/varnishd/cache/cache_response.c
@@ -134,11 +134,13 @@ RES_BuildHttp(struct req *req)
 	VTIM_format(VTIM_real(), time_str);
 	http_PrintfHeader(req->resp, "Date: %s", time_str);
 
-	if (req->vxid != req->obj->vxid)
+	if (req->wrk->stats.cache_hit)
 		http_PrintfHeader(req->resp,
-		    "X-Varnish: %u %u", req->vxid, req->obj->vxid);
+		    "X-Varnish: %u %u", req->vsl->wid & VSL_IDENTMASK,
+		    req->obj->vxid & VSL_IDENTMASK);
 	else
-		http_PrintfHeader(req->resp, "X-Varnish: %u", req->vxid);
+		http_PrintfHeader(req->resp,
+		    "X-Varnish: %u", req->vsl->wid & VSL_IDENTMASK);
 	http_PrintfHeader(req->resp, "Age: %.0f",
 	    req->obj->exp.age + req->t_resp -
 	    req->obj->exp.entered);
diff --git a/bin/varnishd/cache/cache_rfc2616.c b/bin/varnishd/cache/cache_rfc2616.c
index 7f5fd35..d0d0d87 100644
--- a/bin/varnishd/cache/cache_rfc2616.c
+++ b/bin/varnishd/cache/cache_rfc2616.c
@@ -169,8 +169,8 @@ RFC2616_Ttl(struct busyobj *bo)
 
 	/* calculated TTL, Our time, Date, Expires, max-age, age */
 	VSLb(bo->vsl, SLT_TTL,
-	    "%u RFC %.0f %.0f %.0f %.0f %.0f %.0f %.0f %u",
-	    bo->vxid, expp->ttl, -1., -1., expp->entered,
+	    "RFC %.0f %.0f %.0f %.0f %.0f %.0f %.0f %u",
+	    expp->ttl, -1., -1., expp->entered,
 	    expp->age, h_date, h_expires, max_age);
 }
 
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 33c63ba..6cffa69 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -160,7 +160,7 @@ ses_sess_pool_task(struct worker *wrk, void *arg)
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CAST_OBJ_NOTNULL(sp, arg, SESS_MAGIC);
 
-	req = SES_GetReq(sp);
+	req = SES_GetReq(wrk, sp);
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
 	sp->sess_step = S_STP_NEWREQ;
@@ -228,7 +228,7 @@ SES_pool_accept_task(struct worker *wrk, void *arg)
 
 	sp->t_open = VTIM_real();
 	sp->t_idle = sp->t_open;
-	sp->vxid = VXID_Get(&wrk->vxid_pool);
+	sp->vxid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER;
 
 	lsockname = VCA_SetupSess(wrk, sp);
 	ses_vsl_socket(sp, lsockname);
@@ -343,7 +343,7 @@ SES_Delete(struct sess *sp, enum sess_close reason, double now)
  */
 
 struct req *
-SES_GetReq(struct sess *sp)
+SES_GetReq(struct worker *wrk, struct sess *sp)
 {
 	struct sesspool *pp;
 	struct req *req;
@@ -351,6 +351,7 @@ SES_GetReq(struct sess *sp)
 	unsigned sz, hl;
 	char *p, *e;
 
+	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 	pp = sp->sesspool;
 	CHECK_OBJ_NOTNULL(pp, SESSPOOL_MAGIC);
@@ -386,7 +387,7 @@ SES_GetReq(struct sess *sp)
 
 	sz = cache_param->workspace_thread;
 	VSL_Setup(req->vsl, p, sz);
-	req->vsl->wid = sp->vsl_id;
+	req->vsl->wid = VXID_Get(&wrk->vxid_pool) | VSL_CLIENTMARKER;
 	p += sz;
 	p = (void*)PRNDUP(p);
 
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index 215e7b6..61000a1 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -422,11 +422,11 @@ VRT_DO_EXP(obj, req->obj->exp, keep, 0,
    vrt_wsp_exp(req, req->obj->vxid, &req->obj->exp);)
 
 VRT_DO_EXP(beresp, req->busyobj->exp, grace, 0,
-   vrt_wsp_exp(req, req->vxid, &req->busyobj->exp);)
+   vrt_wsp_exp(req, req->vsl->wid & VSL_IDENTMASK, &req->busyobj->exp);)
 VRT_DO_EXP(beresp, req->busyobj->exp, ttl, 0,
-   vrt_wsp_exp(req, req->vxid, &req->busyobj->exp);)
+   vrt_wsp_exp(req, req->vsl->wid & VSL_IDENTMASK, &req->busyobj->exp);)
 VRT_DO_EXP(beresp, req->busyobj->exp, keep, 0,
-   vrt_wsp_exp(req, req->vxid, &req->busyobj->exp);)
+   vrt_wsp_exp(req, req->vsl->wid & VSL_IDENTMASK, &req->busyobj->exp);)
 
 /*--------------------------------------------------------------------
  * req.xid
@@ -439,9 +439,9 @@ VRT_r_req_xid(const struct req *req)
 	int size;
 	CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
 
-	size = snprintf(NULL, 0, "%u", req->vxid) + 1;
+	size = snprintf(NULL, 0, "%u", req->vsl->wid & VSL_IDENTMASK) + 1;
 	AN(p = WS_Alloc(req->http->ws, size));
-	assert(snprintf(p, size, "%u", req->vxid) < size);
+	assert(snprintf(p, size, "%u", req->vsl->wid & VSL_IDENTMASK) < size);
 	return (p);
 }
 
diff --git a/bin/varnishd/waiter/cache_waiter_kqueue.c b/bin/varnishd/waiter/cache_waiter_kqueue.c
index a7403d6..bc5c67f 100644
--- a/bin/varnishd/waiter/cache_waiter_kqueue.c
+++ b/bin/varnishd/waiter/cache_waiter_kqueue.c
@@ -80,7 +80,7 @@ vwk_kq_sess(struct vwk *vwk, struct sess *sp, short arm)
 
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 	assert(sp->fd >= 0);
-	DSL(0x04, SLT_Debug, sp->vsl_id, "KQ: EV_SET sp %p arm %x", sp, arm);
+	DSL(0x04, SLT_Debug, sp->vxid, "KQ: EV_SET sp %p arm %x", sp, arm);
 	EV_SET(&vwk->ki[vwk->nki], sp->fd, EVFILT_READ, arm, 0, 0, sp);
 	if (++vwk->nki == NKEV)
 		vwk_kq_flush(vwk);
@@ -121,12 +121,10 @@ vwk_sess_ev(struct vwk *vwk, const struct kevent *kp, double now)
 	AN(kp->udata);
 	assert(kp->udata != vwk->pipes);
 	CAST_OBJ_NOTNULL(sp, kp->udata, SESS_MAGIC);
-	DSL(0x04, SLT_Debug, sp->vsl_id, "KQ: sp %p kev data %lu flags 0x%x%s",
+	DSL(0x04, SLT_Debug, sp->vxid, "KQ: sp %p kev data %lu flags 0x%x%s",
 	    sp, (unsigned long)kp->data, kp->flags,
 	    (kp->flags & EV_EOF) ? " EOF" : "");
 
-	assert((sp->vsl_id & VSL_IDENTMASK) == kp->ident);
-	assert((sp->vsl_id & VSL_IDENTMASK) == sp->fd);
 	if (kp->data > 0) {
 		VTAILQ_REMOVE(&vwk->sesshead, sp, list);
 		SES_Handle(sp, now);
@@ -136,7 +134,7 @@ vwk_sess_ev(struct vwk *vwk, const struct kevent *kp, double now)
 		SES_Delete(sp, SC_REM_CLOSE, now);
 		return;
 	} else {
-		VSL(SLT_Debug, sp->vsl_id,
+		VSL(SLT_Debug, sp->vxid,
 		    "KQ: sp %p kev data %lu flags 0x%x%s",
 		    sp, (unsigned long)kp->data, kp->flags,
 		    (kp->flags & EV_EOF) ? " EOF" : "");
diff --git a/bin/varnishtest/tests/b00003.vtc b/bin/varnishtest/tests/b00003.vtc
index 177643c..55442b3 100644
--- a/bin/varnishtest/tests/b00003.vtc
+++ b/bin/varnishtest/tests/b00003.vtc
@@ -18,7 +18,7 @@ client c2 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1004 1001"
+	expect resp.http.X-Varnish == "1004 1002"
 } -run
 
 # Give varnish a chance to update stats
diff --git a/bin/varnishtest/tests/b00010.vtc b/bin/varnishtest/tests/b00010.vtc
index cfa3266..05b9e91 100644
--- a/bin/varnishtest/tests/b00010.vtc
+++ b/bin/varnishtest/tests/b00010.vtc
@@ -14,5 +14,5 @@ client c1 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.x-varnish == "1003 1001"
+	expect resp.http.x-varnish == "1003 1002"
 } -run
diff --git a/bin/varnishtest/tests/b00012.vtc b/bin/varnishtest/tests/b00012.vtc
index 302767b..0aa9cec 100644
--- a/bin/varnishtest/tests/b00012.vtc
+++ b/bin/varnishtest/tests/b00012.vtc
@@ -24,7 +24,7 @@ client c1 {
 	rxresp
 	expect resp.status == 200
 	expect resp.bodylen == 6
-	expect resp.http.x-varnish == "1005 1003"
+	expect resp.http.x-varnish == "1005 1004"
 } -run
 
 varnish v1 -expect sess_pipeline == 2
diff --git a/bin/varnishtest/tests/b00013.vtc b/bin/varnishtest/tests/b00013.vtc
index f0be1d9..d0b957a 100644
--- a/bin/varnishtest/tests/b00013.vtc
+++ b/bin/varnishtest/tests/b00013.vtc
@@ -26,7 +26,7 @@ client c1 {
 	rxresp
 	expect resp.status == 200
 	expect resp.bodylen == 6
-	expect resp.http.x-varnish == "1005 1003"
+	expect resp.http.x-varnish == "1005 1004"
 } -run
 
 varnish v1 -expect sess_readahead == 2
diff --git a/bin/varnishtest/tests/b00015.vtc b/bin/varnishtest/tests/b00015.vtc
index 2e94add..fc022c3 100644
--- a/bin/varnishtest/tests/b00015.vtc
+++ b/bin/varnishtest/tests/b00015.vtc
@@ -42,7 +42,7 @@ client c1 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 302
-	expect resp.http.X-varnish == "1012 1009"
+	expect resp.http.X-varnish == "1012 1010"
 } -run
 
 # Then check that a non-cacheable error from the backend can be
@@ -71,5 +71,5 @@ client c1 {
 	txreq -url "/2"
 	rxresp
 	expect resp.status == 502
-	expect resp.http.X-varnish == "1017 1014"
+	expect resp.http.X-varnish == "1017 1015"
 } -run
diff --git a/bin/varnishtest/tests/c00004.vtc b/bin/varnishtest/tests/c00004.vtc
index cd79441..3074eb8 100644
--- a/bin/varnishtest/tests/c00004.vtc
+++ b/bin/varnishtest/tests/c00004.vtc
@@ -44,7 +44,7 @@ client c1 {
 	txreq -hdr "Foobar:  1 "
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1009 1001"
+	expect resp.http.X-Varnish == "1009 1002"
 	expect resp.http.snafu == "1"
 
 } -run
diff --git a/bin/varnishtest/tests/c00010.vtc b/bin/varnishtest/tests/c00010.vtc
index 1b6a5ec..238dada 100644
--- a/bin/varnishtest/tests/c00010.vtc
+++ b/bin/varnishtest/tests/c00010.vtc
@@ -25,7 +25,7 @@ client c1 {
 	rxresp
 	expect resp.status == 200
 	expect resp.bodylen == 7
-	expect resp.http.x-varnish == "1003"
+	expect resp.http.x-varnish == "1003 1004"
 } 
 
 client c1 -run
diff --git a/bin/varnishtest/tests/c00013.vtc b/bin/varnishtest/tests/c00013.vtc
index a79244b..7bc36ae 100644
--- a/bin/varnishtest/tests/c00013.vtc
+++ b/bin/varnishtest/tests/c00013.vtc
@@ -29,7 +29,7 @@ client c2 {
 	rxresp
 	expect resp.status == 200
 	expect resp.bodylen == 12
-	expect resp.http.x-varnish == "1004 1001"
+	expect resp.http.x-varnish == "1004 1002"
 } -run
 
 client c1 -wait
diff --git a/bin/varnishtest/tests/c00015.vtc b/bin/varnishtest/tests/c00015.vtc
index 8490bf3..cbf5cca 100644
--- a/bin/varnishtest/tests/c00015.vtc
+++ b/bin/varnishtest/tests/c00015.vtc
@@ -46,7 +46,7 @@ client c3 {
 	rxresp
 	expect resp.status == 200
 	expect resp.bodylen == 6
-	expect resp.http.x-varnish == "1007 1001"
+	expect resp.http.x-varnish == "1007 1002"
 } -run
 
 varnish v1 -cli "vcl.show vcl2"
diff --git a/bin/varnishtest/tests/c00020.vtc b/bin/varnishtest/tests/c00020.vtc
index 8e14f12..3713951 100644
--- a/bin/varnishtest/tests/c00020.vtc
+++ b/bin/varnishtest/tests/c00020.vtc
@@ -19,7 +19,7 @@ client c2 {
         txreq -url "/"
         rxresp
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1004 1001"
+        expect resp.http.X-Varnish == "1004 1002"
 } -run
 
 server s1 {
@@ -39,7 +39,7 @@ client c2 {
         txreq -url "/"
         rxresp
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1008 1001"
+        expect resp.http.X-Varnish == "1008 1002"
         txreq -url "/bar"
         rxresp
         expect resp.status == 200
@@ -47,7 +47,7 @@ client c2 {
         txreq -url "/foo"
         rxresp
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1011 1006"
+        expect resp.http.X-Varnish == "1011 1007"
 } -run
 
 varnish v1 -expect sess_conn == 3
diff --git a/bin/varnishtest/tests/c00023.vtc b/bin/varnishtest/tests/c00023.vtc
index a29908d..b57c8c1 100644
--- a/bin/varnishtest/tests/c00023.vtc
+++ b/bin/varnishtest/tests/c00023.vtc
@@ -95,55 +95,55 @@ client c1 {
         rxresp
         expect resp.status == 200
         expect resp.bodylen == 1
-        expect resp.http.X-Varnish == "1020 1001"
+        expect resp.http.X-Varnish == "1020 1002"
 
         txreq -url "/2"
         rxresp
         expect resp.bodylen == 2
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1021 1003"
+        expect resp.http.X-Varnish == "1021 1004"
 
         txreq -url "/3"
         rxresp
         expect resp.bodylen == 3
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1022 1005"
+        expect resp.http.X-Varnish == "1022 1006"
 
         txreq -url "/4"
         rxresp
         expect resp.bodylen == 4
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1023 1007"
+        expect resp.http.X-Varnish == "1023 1008"
 
         txreq -url "/5"
         rxresp
         expect resp.bodylen == 5
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1024 1009"
+        expect resp.http.X-Varnish == "1024 1010"
 
         txreq -url "/6"
         rxresp
         expect resp.bodylen == 6
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1025 1011"
+        expect resp.http.X-Varnish == "1025 1012"
 
         txreq -url "/7"
         rxresp
         expect resp.bodylen == 7
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1026 1013"
+        expect resp.http.X-Varnish == "1026 1014"
 
         txreq -url "/8"
         rxresp
         expect resp.bodylen == 8
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1027 1015"
+        expect resp.http.X-Varnish == "1027 1016"
 
         txreq -url "/9"
         rxresp
         expect resp.bodylen == 9
         expect resp.status == 200
-        expect resp.http.X-Varnish == "1028 1017"
+        expect resp.http.X-Varnish == "1028 1018"
 } -run
 
 varnish v1 -cliok "hcb.dump"
diff --git a/bin/varnishtest/tests/p00000.vtc b/bin/varnishtest/tests/p00000.vtc
index 0a17be2..12fa676 100644
--- a/bin/varnishtest/tests/p00000.vtc
+++ b/bin/varnishtest/tests/p00000.vtc
@@ -29,12 +29,13 @@ varnish v1 -cliok "debug.persistent s0 sync"
 varnish v1 -stop
 
 varnish v1 -start
+varnish v1 -cliok "debug.xid 1999"
 
 client c1 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1001"
+	expect resp.http.X-Varnish == "2001 1002"
 } -run
 
 # shell "rm -f /tmp/__v1/_.per"
diff --git a/bin/varnishtest/tests/p00001.vtc b/bin/varnishtest/tests/p00001.vtc
index 4afccf3..26ea975 100644
--- a/bin/varnishtest/tests/p00001.vtc
+++ b/bin/varnishtest/tests/p00001.vtc
@@ -32,12 +32,13 @@ varnish v1 -vcl+backend {
 server s1 -wait
 
 varnish v1 -start
+varnish v1 -cliok "debug.xid 1999"
 
 client c1 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1001"
+	expect resp.http.X-Varnish == "2001 1002"
 	expect resp.http.foo == "foo"
 } -run
 
@@ -53,12 +54,13 @@ varnish v1 -vcl+backend { }
 delay 2
 
 varnish v1 -start
+varnish v1 -cliok "debug.xid 2999"
 
 client c1 {
 	txreq -url "/"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1001"
+	expect resp.http.X-Varnish == "3001"
 	expect resp.http.foo == "bar"
 } -run
 
diff --git a/bin/varnishtest/tests/p00004.vtc b/bin/varnishtest/tests/p00004.vtc
index dab8ea4..343d7de 100644
--- a/bin/varnishtest/tests/p00004.vtc
+++ b/bin/varnishtest/tests/p00004.vtc
@@ -46,7 +46,7 @@ client c1 {
 	txreq -url "/foo"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "2001 1001"
+	expect resp.http.X-Varnish == "2001 1002"
 	expect resp.http.foo == "foo"
 } -run
 
@@ -57,7 +57,7 @@ client c1 {
 	txreq -url "/bar"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "2003 1004"
+	expect resp.http.X-Varnish == "2003 1005"
 	expect resp.http.bar == "bar"
 } -run
 
diff --git a/bin/varnishtest/tests/p00006.vtc b/bin/varnishtest/tests/p00006.vtc
index 3334f36..0adb67b 100644
--- a/bin/varnishtest/tests/p00006.vtc
+++ b/bin/varnishtest/tests/p00006.vtc
@@ -43,13 +43,13 @@ client c1 {
 	txreq -url "/foo" -hdr "foo: 1" -hdr "bar: 2"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "2001 1001"
+	expect resp.http.X-Varnish == "2001 1002"
 	expect resp.http.foo == "foo1"
 
 	txreq -url "/foo" -hdr "foo: 2" -hdr "bar: 1"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "2002 1003"
+	expect resp.http.X-Varnish == "2002 1004"
 	expect resp.http.foo == "foo2"
 
 } -run
diff --git a/bin/varnishtest/tests/r00102.vtc b/bin/varnishtest/tests/r00102.vtc
index d2a3c13..0fa597b 100644
--- a/bin/varnishtest/tests/r00102.vtc
+++ b/bin/varnishtest/tests/r00102.vtc
@@ -28,7 +28,7 @@ client c1 {
 		-body "123456789\n"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1003 1001"
+	expect resp.http.X-Varnish == "1003 1002"
 }
 
 client c1 -run
diff --git a/bin/varnishtest/tests/r00262.vtc b/bin/varnishtest/tests/r00262.vtc
index 1deb9ea..09ed730 100644
--- a/bin/varnishtest/tests/r00262.vtc
+++ b/bin/varnishtest/tests/r00262.vtc
@@ -19,7 +19,7 @@ client c1 {
 	send "GET / HTTP/1.1\r\n\r\n"
 	rxresp
 	expect resp.status == 200
-	expect resp.http.X-Varnish == "1003 1001"
+	expect resp.http.X-Varnish == "1003 1002"
 }
 
 client c1 -run
diff --git a/bin/varnishtest/tests/s00002.vtc b/bin/varnishtest/tests/s00002.vtc
index 31fb400..ab3736e 100644
--- a/bin/varnishtest/tests/s00002.vtc
+++ b/bin/varnishtest/tests/s00002.vtc
@@ -69,5 +69,5 @@ client c2 {
 	rxresp
 	expect resp.http.foo == "bar"
 	expect resp.status == 200
-	expect resp.http.x-varnish == "1004 1001"
+	expect resp.http.x-varnish == "1004 1002"
 } -run



More information about the varnish-commit mailing list