r5553 - trunk/varnish-cache/bin/varnishd

phk at varnish-cache.org phk at varnish-cache.org
Thu Nov 18 10:26:40 CET 2010


Author: phk
Date: 2010-11-18 10:26:39 +0100 (Thu, 18 Nov 2010)
New Revision: 5553

Modified:
   trunk/varnish-cache/bin/varnishd/cache_esi.c
   trunk/varnish-cache/bin/varnishd/cache_fetch.c
   trunk/varnish-cache/bin/varnishd/stevedore.c
   trunk/varnish-cache/bin/varnishd/stevedore.h
Log:
Push a privat argument back into stevedore.c



Modified: trunk/varnish-cache/bin/varnishd/cache_esi.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_esi.c	2010-11-17 17:27:15 UTC (rev 5552)
+++ trunk/varnish-cache/bin/varnishd/cache_esi.c	2010-11-18 09:26:39 UTC (rev 5553)
@@ -804,7 +804,7 @@
 		esi_error(ew, ew->t.e, -1,
 		    "ESI 1.0 unterminated <!--esi comment");
 
-	st = STV_alloc(sp, ew->space, sp->obj->objcore);
+	st = STV_alloc(sp, ew->space);
 	AN(st);
 	assert(st->space >= ew->space);
 

Modified: trunk/varnish-cache/bin/varnishd/cache_fetch.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_fetch.c	2010-11-17 17:27:15 UTC (rev 5552)
+++ trunk/varnish-cache/bin/varnishd/cache_fetch.c	2010-11-18 09:26:39 UTC (rev 5553)
@@ -64,7 +64,7 @@
 	assert((uintmax_t)cl == cll); /* Protect against bogusly large values */
 
 	while (cl > 0) {
-		st = STV_alloc(sp, cl, NULL);
+		st = STV_alloc(sp, cl);
 		VTAILQ_INSERT_TAIL(&sp->obj->store, st, list);
 		sl = st->space;
 		if (sl > cl)
@@ -165,7 +165,7 @@
 				v = u;
 				if (u < params->fetch_chunksize * 1024)
 					v = params->fetch_chunksize * 1024;
-				st = STV_alloc(sp, v, NULL);
+				st = STV_alloc(sp, v);
 				VTAILQ_INSERT_TAIL(&sp->obj->store, st, list);
 			}
 			v = st->space - st->len;
@@ -258,8 +258,7 @@
 		if (v == 0) {
 			if (st != NULL && fetchfrag > 0)
 				dump_st(sp, st);
-			st = STV_alloc(sp, params->fetch_chunksize * 1024LL,
-			    NULL);
+			st = STV_alloc(sp, params->fetch_chunksize * 1024LL);
 			VTAILQ_INSERT_TAIL(&sp->obj->store, st, list);
 			p = st->ptr + st->len;
 			v = st->space - st->len;

Modified: trunk/varnish-cache/bin/varnishd/stevedore.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.c	2010-11-17 17:27:15 UTC (rev 5552)
+++ trunk/varnish-cache/bin/varnishd/stevedore.c	2010-11-18 09:26:39 UTC (rev 5553)
@@ -119,7 +119,52 @@
 	VTAILQ_INIT(&o->store);
 	sp->wrk->stats.n_object++;
 }
+/*********************************************************************/
 
+static struct storage *
+stv_alloc(const struct sess *sp, size_t size, struct objcore *oc)
+{
+	struct storage *st;
+	struct stevedore *stv = NULL;
+	unsigned fail = 0;
+
+	/*
+	 * Always try the stevedore which allocated the object in order to
+	 * not needlessly split an object across multiple stevedores.
+	 */
+	if (sp->obj != NULL) {
+		CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);
+		if (sp->obj->objstore != NULL) {
+			stv = sp->obj->objstore->stevedore;
+			CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
+		}
+	}
+
+	for (;;) {
+		if (stv == NULL) {
+			stv = stv_pick_stevedore();
+			fail = 0;
+		}
+
+		/* try to allocate from it */
+		AN(stv->alloc);
+		st = stv->alloc(stv, size, oc);
+		if (st != NULL)
+			break;
+
+		/* no luck; try to free some space and keep trying */
+		if (EXP_NukeOne(sp, stv->lru) == -1)
+			break;
+
+		/* Enough is enough: try another if we have one */
+		if (++fail == 50)
+			stv = NULL;
+	}
+	CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
+	return (st);
+}
+
+
 /*********************************************************************/
 
 struct object *
@@ -142,7 +187,7 @@
 		STV_InitObj(sp, o, l, lh, nhttp);
 		return (o);
 	}
-	st = STV_alloc(sp, sizeof *o + l + lh, sp->objcore);
+	st = stv_alloc(sp, sizeof *o + l + lh, sp->objcore);
 	XXXAN(st);
 	xxxassert(st->space >= (sizeof *o + l + lh));
 
@@ -161,46 +206,10 @@
 /*********************************************************************/
 
 struct storage *
-STV_alloc(const struct sess *sp, size_t size, struct objcore *oc)
+STV_alloc(const struct sess *sp, size_t size)
 {
-	struct storage *st;
-	struct stevedore *stv = NULL;
-	unsigned fail = 0;
 
-	/*
-	 * Always try the stevedore which allocated the object in order to
-	 * not needlessly split an object across multiple stevedores.
-	 */
-	if (sp->obj != NULL) {
-		CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC);
-		if (sp->obj->objstore != NULL) {
-			stv = sp->obj->objstore->stevedore;
-			CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
-		}
-	}
-
-	for (;;) {
-		if (stv == NULL) {
-			stv = stv_pick_stevedore();
-			fail = 0;
-		}
-
-		/* try to allocate from it */
-		AN(stv->alloc);
-		st = stv->alloc(stv, size, oc);
-		if (st != NULL)
-			break;
-
-		/* no luck; try to free some space and keep trying */
-		if (EXP_NukeOne(sp, stv->lru) == -1)
-			break;
-
-		/* Enough is enough: try another if we have one */
-		if (++fail == 50)
-			stv = NULL;
-	}
-	CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
-	return (st);
+	return (stv_alloc(sp, size, NULL));
 }
 
 void

Modified: trunk/varnish-cache/bin/varnishd/stevedore.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.h	2010-11-17 17:27:15 UTC (rev 5552)
+++ trunk/varnish-cache/bin/varnishd/stevedore.h	2010-11-18 09:26:39 UTC (rev 5553)
@@ -69,7 +69,7 @@
 
 struct object *STV_NewObject(const struct sess *sp, unsigned len, double ttl,
     unsigned nhttp);
-struct storage *STV_alloc(const struct sess *sp, size_t size, struct objcore *oc);
+struct storage *STV_alloc(const struct sess *sp, size_t size);
 void STV_trim(struct storage *st, size_t size);
 void STV_free(struct storage *st);
 void STV_open(void);




More information about the varnish-commit mailing list