[experimental-ims] 738cafa Drop struct workreq, we don't use it.

Geoff Simmons geoff at varnish-cache.org
Mon Jan 9 21:51:55 CET 2012


commit 738cafa04be5cca08cbb472603974732357ce112
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Sat Sep 17 16:45:07 2011 +0000

    Drop struct workreq, we don't use it.

diff --git a/bin/varnishd/cache.h b/bin/varnishd/cache.h
index 0a566f2..65d1886 100644
--- a/bin/varnishd/cache.h
+++ b/bin/varnishd/cache.h
@@ -108,7 +108,6 @@ struct objhead;
 struct objcore;
 struct busyobj;
 struct storage;
-struct workreq;
 struct vrt_backend;
 struct cli_proto;
 struct ban;
@@ -307,7 +306,7 @@ struct worker {
 	pthread_cond_t		cond;
 
 	VTAILQ_ENTRY(worker)	list;
-	struct workreq		*wrq;
+	struct sess		*sp;
 
 	struct VCL_conf		*vcl;
 
@@ -369,21 +368,6 @@ struct worker {
 	struct acct		acct_tmp;
 };
 
-/* Work Request for worker thread ------------------------------------*/
-
-/*
- * This is a worker-function.
- * XXX: typesafety is probably not worth fighting for
- */
-
-typedef void workfunc(struct worker *, void *priv);
-
-struct workreq {
-	VTAILQ_ENTRY(workreq)	list;
-	workfunc		*func;
-	void			*priv;
-};
-
 /* Storage -----------------------------------------------------------*/
 
 struct storage {
@@ -614,7 +598,7 @@ struct sess {
 	/* Various internal stuff */
 	struct sessmem		*mem;
 
-	struct workreq		workreq;
+	VTAILQ_ENTRY(sess)	poollist;
 	struct acct		acct_req;
 	struct acct		acct_ses;
 
diff --git a/bin/varnishd/cache_cli.c b/bin/varnishd/cache_cli.c
index a3d1851..dd26303 100644
--- a/bin/varnishd/cache_cli.c
+++ b/bin/varnishd/cache_cli.c
@@ -131,7 +131,6 @@ cli_debug_sizeof(struct cli *cli, const char * const *av, void *priv)
 	SZOF(struct http_conn);
 	SZOF(struct acct);
 	SZOF(struct worker);
-	SZOF(struct workreq);
 	SZOF(struct storage);
 	SZOF(struct object);
 	SZOF(struct objcore);
diff --git a/bin/varnishd/cache_pool.c b/bin/varnishd/cache_pool.c
index 63245d6..6fc7737 100644
--- a/bin/varnishd/cache_pool.c
+++ b/bin/varnishd/cache_pool.c
@@ -69,7 +69,7 @@ struct pool {
 #define POOL_MAGIC		0x606658fa
 	struct lock		mtx;
 	struct workerhead	idle;
-	VTAILQ_HEAD(, workreq)	queue;
+	VTAILQ_HEAD(, sess)	queue;
 	unsigned		nthr;
 	unsigned		lqueue;
 	unsigned		last_lqueue;
@@ -105,9 +105,9 @@ Pool_Work_Thread(void *priv, struct worker *w)
 		CHECK_OBJ_NOTNULL(w, WORKER_MAGIC);
 
 		/* Process queued requests, if any */
-		w->wrq = VTAILQ_FIRST(&qp->queue);
-		if (w->wrq != NULL) {
-			VTAILQ_REMOVE(&qp->queue, w->wrq, list);
+		w->sp = VTAILQ_FIRST(&qp->queue);
+		if (w->sp != NULL) {
+			VTAILQ_REMOVE(&qp->queue, w->sp, poollist);
 			qp->lqueue--;
 		} else {
 			if (isnan(w->lastused))
@@ -117,17 +117,21 @@ Pool_Work_Thread(void *priv, struct worker *w)
 				WRK_SumStat(w);
 			Lck_CondWait(&w->cond, &qp->mtx);
 		}
-		if (w->wrq == NULL)
+		if (w->sp == NULL)
 			break;
 		Lck_Unlock(&qp->mtx);
 		stats_clean = 0;
-		AN(w->wrq);
-		AN(w->wrq->func);
 		w->lastused = NAN;
 		WS_Reset(w->ws, NULL);
 		w->storage_hint = NULL;
 
-		w->wrq->func(w, w->wrq->priv);
+		AZ(w->sp->wrk);
+		THR_SetSession(w->sp);
+		w->sp->wrk = w;
+		CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
+		CNT_Session(w->sp);
+		CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
+		THR_SetSession(NULL);
 
 		WS_Assert(w->ws);
 		AZ(w->bereq->ws);
@@ -136,7 +140,7 @@ Pool_Work_Thread(void *priv, struct worker *w)
 		AZ(w->wrw.wfd);
 		AZ(w->storage_hint);
 		assert(w->wlp == w->wlb);
-		w->wrq = NULL;
+		w->sp = NULL;
 		if (params->diag_bitmap & 0x00040000) {
 			if (w->vcl != NULL)
 				VCL_Rel(&w->vcl);
@@ -156,7 +160,7 @@ Pool_Work_Thread(void *priv, struct worker *w)
  */
 
 static int
-WRK_Queue(struct workreq *wrq)
+WRK_Queue(struct sess *sp)
 {
 	struct worker *w;
 	struct pool *qp;
@@ -181,7 +185,7 @@ WRK_Queue(struct workreq *wrq)
 	if (w != NULL) {
 		VTAILQ_REMOVE(&qp->idle, w, list);
 		Lck_Unlock(&qp->mtx);
-		w->wrq = wrq;
+		w->sp = sp;
 		AZ(pthread_cond_signal(&w->cond));
 		return (0);
 	}
@@ -193,7 +197,7 @@ WRK_Queue(struct workreq *wrq)
 		return (-1);
 	}
 
-	VTAILQ_INSERT_TAIL(&qp->queue, wrq, list);
+	VTAILQ_INSERT_TAIL(&qp->queue, sp, poollist);
 	qp->nqueue++;
 	qp->lqueue++;
 	Lck_Unlock(&qp->mtx);
@@ -203,31 +207,12 @@ WRK_Queue(struct workreq *wrq)
 
 /*--------------------------------------------------------------------*/
 
-static void
-wrk_do_cnt_sess(struct worker *w, void *priv)
-{
-	struct sess *sess;
-
-	CAST_OBJ_NOTNULL(sess, priv, SESS_MAGIC);
-	AZ(sess->wrk);
-	THR_SetSession(sess);
-	sess->wrk = w;
-	CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
-	CNT_Session(sess);
-	CHECK_OBJ_ORNULL(w->nobjhead, OBJHEAD_MAGIC);
-	THR_SetSession(NULL);
-}
-
-/*--------------------------------------------------------------------*/
-
 int
 Pool_QueueSession(struct sess *sp)
 {
 	CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
 	AZ(sp->wrk);
-	sp->workreq.func = wrk_do_cnt_sess;
-	sp->workreq.priv = sp;
-	if (WRK_Queue(&sp->workreq) == 0)
+	if (WRK_Queue(sp) == 0)
 		return (0);
 
 	/*
@@ -303,7 +288,7 @@ wrk_decimate_flock(struct pool *qp, double t_idle, struct VSC_C_main *vs)
 
 	/* And give it a kiss on the cheek... */
 	if (w != NULL) {
-		AZ(w->wrq);
+		AZ(w->sp);
 		AZ(pthread_cond_signal(&w->cond));
 		TIM_sleep(params->wthread_purge_delay * 1e-3);
 	}



More information about the varnish-commit mailing list