[master] 16e0798 Remove the object -> objcore link

Poul-Henning Kamp phk at FreeBSD.org
Thu Aug 21 22:36:17 CEST 2014


commit 16e07984abbeac8fa5a014175efd164e8e90d1a8
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Thu Aug 21 20:36:00 2014 +0000

    Remove the object -> objcore link

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 474a04f..9de6cfc 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -570,27 +570,18 @@ enum obj_flags {
 struct object {
 	unsigned		magic;
 #define OBJECT_MAGIC		0x32851d42
-	char			oa_vxid[4];
 	struct storage		*objstore;
-	struct objcore		*objcore;
 
+	char			oa_vxid[4];
 	uint8_t			*oa_vary;
-
 	uint8_t			*oa_http;
-
-
 	uint8_t			oa_flags[1];
-
-	/* Bit positions in the gzip stream */
 	char			oa_gzipbits[24];
-
-	/* VCL only variables */
 	char			oa_lastmodified[8];
 
 	struct body		body[1];
 
 	struct storage		*esidata;
-
 };
 
 /*--------------------------------------------------------------------*/
diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index ee3cf14..e05be30 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -74,6 +74,7 @@ struct objiter {
 	unsigned			magic;
 #define OBJITER_MAGIC			0x745fb151
 	struct busyobj			*bo;
+	struct objcore			*oc;
 	struct object			*obj;
 	struct storage			*st;
 	struct worker			*wrk;
@@ -92,9 +93,10 @@ ObjIterBegin(struct worker *wrk, struct objcore *oc)
 	ALLOC_OBJ(oi, OBJITER_MAGIC);
 	if (oi == NULL)
 		return (oi);
+	oi->oc = oc;
 	oi->obj = obj;
 	oi->wrk = wrk;
-	oi->bo = HSH_RefBusy(obj->objcore);
+	oi->bo = HSH_RefBusy(oc);
 	return (oi);
 }
 
@@ -169,7 +171,7 @@ ObjIterEnd(struct objiter **oi)
 	CHECK_OBJ_NOTNULL((*oi), OBJITER_MAGIC);
 	CHECK_OBJ_NOTNULL((*oi)->obj, OBJECT_MAGIC);
 	if ((*oi)->bo != NULL) {
-		if ((*oi)->obj->objcore->flags & OC_F_PASS)
+		if ((*oi)->oc->flags & OC_F_PASS)
 			(*oi)->bo->abandon = 1;
 		VBO_DerefBusyObj((*oi)->wrk, &(*oi)->bo);
 	}
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index 8c5981c..fbdcda1 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -229,13 +229,12 @@ STV_MkObject(struct stevedore *stv, struct busyobj *bo,
 
 	VTAILQ_INIT(&o->body->list);
 
-	o->objcore = bo->fetch_objcore;
-
-	o->objcore->stobj->stevedore = stv;
+	bo->fetch_objcore->stobj->magic = STOREOBJ_MAGIC;
+	bo->fetch_objcore->stobj->stevedore = stv;
 	o->body->stevedore = stv;
 	AN(stv->methods);
-	o->objcore->stobj->priv = o;
-	o->objcore->stobj->priv2 = (uintptr_t)stv;
+	bo->fetch_objcore->stobj->priv = o;
+	bo->fetch_objcore->stobj->priv2 = (uintptr_t)stv;
 	VSLb(bo->vsl, SLT_Storage, "%s %s", stv->name, stv->ident);
 	return (o);
 }
@@ -319,8 +318,6 @@ STV_NewObject(struct busyobj *bo, const char *hint, unsigned wsl)
 
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
 	CHECK_OBJ_NOTNULL(o->objstore, STORAGE_MAGIC);
-	CHECK_OBJ_NOTNULL(o->objcore, OBJCORE_MAGIC);
-	assert(o->objcore->stobj->stevedore == stv);
 	AN(stv->methods);
 	return (1);
 }
diff --git a/bin/varnishd/storage/storage_persistent.c b/bin/varnishd/storage/storage_persistent.c
index 4ae0d2d..281561b 100644
--- a/bin/varnishd/storage/storage_persistent.c
+++ b/bin/varnishd/storage/storage_persistent.c
@@ -541,7 +541,7 @@ smp_allocobj(struct stevedore *stv, struct busyobj *bo,
 	o->objstore = st;
 	bo->stats->n_object++;
 
-	oc = o->objcore;
+	oc = bo->fetch_objcore;
 	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
 
 	Lck_Lock(&sc->mtx);
diff --git a/bin/varnishd/storage/storage_persistent_silo.c b/bin/varnishd/storage/storage_persistent_silo.c
index 4553185..440446a 100644
--- a/bin/varnishd/storage/storage_persistent_silo.c
+++ b/bin/varnishd/storage/storage_persistent_silo.c
@@ -429,7 +429,6 @@ smp_oc_getobj(struct dstat *ds, struct objcore *oc)
 	/* Check again, we might have raced. */
 	if (oc->stobj->priv2 & NEED_FIXUP) {
 		/* We trust caller to have a refcnt for us */
-		o->objcore = oc;
 
 		bad = 0;
 		l = 0;



More information about the varnish-commit mailing list