[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