[master] 3882b45 Move the trim-ability check into the stevedore implementation, rather than have the fetch code make a blanket ban.

Poul-Henning Kamp phk at FreeBSD.org
Mon Jan 11 11:57:33 CET 2016


commit 3882b45ace3932a7514d63f748f6ae2fadb67b8b
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Mon Jan 11 09:50:58 2016 +0000

    Move the trim-ability check into the stevedore implementation,
    rather than have the fetch code make a blanket ban.

diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index d7411b0..503dc3c 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -527,8 +527,7 @@ vbf_fetch_body_helper(struct busyobj *bo)
 		bo->htc->doclose = SC_RX_BODY;
 	}
 
-	if (!bo->do_stream)
-		ObjTrimStore(bo->wrk, vfc->oc);
+	ObjTrimStore(bo->wrk, vfc->oc);
 }
 
 /*--------------------------------------------------------------------
diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c
index 6550c0f..82c2925 100644
--- a/bin/varnishd/storage/storage_simple.c
+++ b/bin/varnishd/storage/storage_simple.c
@@ -165,7 +165,7 @@ SML_allocobj(struct worker *wrk, const struct stevedore *stv,
  */
 
 static struct object *
-getobj(struct worker *wrk, struct objcore *oc)
+sml_getobj(struct worker *wrk, struct objcore *oc)
 {
 	const struct obj_methods *m;
 	struct object *o;
@@ -192,7 +192,7 @@ sml_slim(struct worker *wrk, struct objcore *oc)
 
 	stv = oc->stobj->stevedore;
 	CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 
 	if (o->esidata != NULL) {
@@ -252,7 +252,7 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
 	void *p;
 	ssize_t l;
 
-	obj = getobj(wrk, oc);
+	obj = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
 
 	bo = HSH_RefBusy(oc);
@@ -370,7 +370,7 @@ sml_getspace(struct worker *wrk, struct objcore *oc, ssize_t *sz,
 	AN(ptr);
 	assert(*sz > 0);
 
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 
 	st = VTAILQ_LAST(&o->list, storagehead);
@@ -409,7 +409,7 @@ sml_extend(struct worker *wrk, struct objcore *oc, ssize_t l)
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	assert(l > 0);
 
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	st = VTAILQ_LAST(&o->list, storagehead);
 	CHECK_OBJ_NOTNULL(st, STORAGE_MAGIC);
@@ -425,7 +425,7 @@ sml_getlen(struct worker *wrk, struct objcore *oc)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	return (o->len);
 }
@@ -436,12 +436,21 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 	const struct stevedore *stv;
 	struct storage *st;
 	struct object *o;
+	struct busyobj *bo;
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+
+	bo = oc->busyobj;
+	if (bo != NULL) {
+		CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
+		if (bo->do_stream)
+			return;
+	}
 
 	stv = oc->stobj->stevedore;
 	CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	st = VTAILQ_LAST(&o->list, storagehead);
 	if (st == NULL)
@@ -465,7 +474,7 @@ sml_getattr(struct worker *wrk, struct objcore *oc, enum obj_attr attr,
 
 	if (len == NULL)
 		len = &dummy;
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	switch (attr) {
 	case OA_ESIDATA:
@@ -507,7 +516,7 @@ sml_setattr(struct worker *wrk, struct objcore *oc, enum obj_attr attr,
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 
-	o = getobj(wrk, oc);
+	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	st = o->objstore;
 	switch (attr) {



More information about the varnish-commit mailing list