[master] 9d2255a Have objcore point to a boc rather than busyobj

Poul-Henning Kamp phk at FreeBSD.org
Thu Jan 28 12:49:19 CET 2016


commit 9d2255a539c0ad9634cbf43caccc0b8aa544ce73
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Wed Jan 20 21:16:27 2016 +0000

    Have objcore point to a boc rather than busyobj

diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 596e572..23f9091 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -416,7 +416,7 @@ struct objcore {
 	int			refcnt;
 	struct storeobj		stobj[1];
 	struct objhead		*objhead;
-	struct busyobj		*busyobj;
+	struct boc		*boc;
 	double			timer_when;
 	long			hits;
 
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index f2e5e91..9e12f18 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -950,7 +950,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
 		VSLb(bo->vsl, SLT_Length, "%ju",
 		    (uintmax_t)ObjGetLen(bo->wrk, bo->fetch_objcore));
 	}
-	AZ(bo->fetch_objcore->busyobj);
+	AZ(bo->fetch_objcore->boc);
 
 	if (bo->stale_oc != NULL)
 		(void)HSH_DerefObjCore(wrk, &bo->stale_oc);
@@ -994,7 +994,7 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
 	bo_fetch = bo;
 	bo->boc->refcount = 2;
 
-	oc->busyobj = bo;
+	oc->boc = bo->boc;
 
 	AN(bo->vcl);
 
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index f24871f..0e6f269 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -392,13 +392,12 @@ HSH_Lookup(struct req *req, struct objcore **ocp, struct objcore **bocp,
 			continue;
 
 		if (oc->flags & OC_F_BUSY) {
-			CHECK_OBJ_ORNULL(oc->busyobj, BUSYOBJ_MAGIC);
+			CHECK_OBJ_ORNULL(oc->boc, BOC_MAGIC);
 			if (req->hash_ignore_busy)
 				continue;
 
-			if (oc->busyobj != NULL &&
-			    oc->busyobj->boc->vary != NULL &&
-			    !VRY_Match(req, oc->busyobj->boc->vary))
+			if (oc->boc != NULL && oc->boc->vary != NULL &&
+			    !VRY_Match(req, oc->boc->vary))
 				continue;
 
 			busy_found = 1;
@@ -624,7 +623,7 @@ HSH_Fail(struct objcore *oc)
 	Lck_Lock(&oh->mtx);
 	oc->flags |= OC_F_FAILED;
 	oc->flags &= ~OC_F_INCOMPLETE;
-	oc->busyobj = NULL;
+	oc->boc = NULL;
 	Lck_Unlock(&oh->mtx);
 }
 
@@ -642,7 +641,7 @@ HSH_Complete(struct objcore *oc)
 	CHECK_OBJ(oh, OBJHEAD_MAGIC);
 
 	Lck_Lock(&oh->mtx);
-	oc->busyobj = NULL;
+	oc->boc = NULL;
 	oc->flags &= ~OC_F_INCOMPLETE;
 	Lck_Unlock(&oh->mtx);
 }
@@ -710,20 +709,17 @@ struct boc *
 HSH_RefBusy(const struct objcore *oc)
 {
 	struct objhead *oh;
-	struct busyobj *bo;
-	struct boc *boc = NULL;
+	struct boc *boc;
 
 	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
 	oh = oc->objhead;
 	CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
 	Lck_Lock(&oh->mtx);
 	assert(oc->refcnt > 0);
-	bo = oc->busyobj;
-	CHECK_OBJ_ORNULL(bo, BUSYOBJ_MAGIC);
-	if (bo != NULL) {
-		CHECK_OBJ_NOTNULL(bo->boc, BOC_MAGIC);
-		boc = bo->boc;
-		assert(boc->busyobj == bo);
+	boc = oc->boc;
+	CHECK_OBJ_ORNULL(boc, BOC_MAGIC);
+	if (boc != NULL) {
+		CHECK_OBJ_NOTNULL(boc->busyobj, BUSYOBJ_MAGIC);
 		boc->refcount++;
 	}
 	Lck_Unlock(&oh->mtx);
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 6dbc3c0..7d8f47b 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -315,6 +315,12 @@ pan_busyobj(struct vsb *vsb, const struct busyobj *bo)
 	VSB_printf(vsb, "},\n");
 }
 
+static void
+pan_boc(struct vsb *vsb, const struct boc *boc)
+{
+	pan_busyobj(vsb, boc->busyobj);
+}
+
 /*--------------------------------------------------------------------*/
 
 static void
@@ -366,8 +372,8 @@ pan_req(struct vsb *vsb, const struct req *req)
 
 	if (req->objcore != NULL) {
 		pan_objcore(vsb, "REQ", req->objcore);
-		if (req->objcore->busyobj != NULL)
-			pan_busyobj(vsb, req->objcore->busyobj);
+		if (req->objcore->boc != NULL)
+			pan_boc(vsb, req->objcore->boc);
 	}
 
 	VSB_printf(vsb, "flags = {\n");
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index 7fc3f1e..dde710c 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -435,7 +435,7 @@ cnt_lookup(struct worker *wrk, struct req *req)
 	case VCL_RET_DELIVER:
 		if (busy != NULL) {
 			AZ(oc->flags & OC_F_PASS);
-			AZ(busy->busyobj);
+			AZ(busy->boc);
 			VBF_Fetch(wrk, req, busy, oc, VBF_BACKGROUND);
 		} else {
 			(void)VRB_Ignore(req);// XXX: handle err
diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c
index d0a003b..5f0ea1b 100644
--- a/bin/varnishd/storage/storage_simple.c
+++ b/bin/varnishd/storage/storage_simple.c
@@ -371,11 +371,11 @@ sml_getspace(struct worker *wrk, struct objcore *oc, ssize_t *sz,
 	if (st == NULL)
 		return (0);
 
-	if (oc->busyobj != NULL) {
-		CHECK_OBJ_NOTNULL(oc->busyobj, BUSYOBJ_MAGIC);
-		Lck_Lock(&oc->busyobj->boc->mtx);
+	if (oc->boc != NULL) {
+		CHECK_OBJ_NOTNULL(oc->boc, BOC_MAGIC);
+		Lck_Lock(&oc->boc->mtx);
 		VTAILQ_INSERT_TAIL(&o->list, st, list);
-		Lck_Unlock(&oc->busyobj->boc->mtx);
+		Lck_Unlock(&oc->boc->mtx);
 	} else {
 		AN(oc->flags & (OC_F_PRIVATE));
 		VTAILQ_INSERT_TAIL(&o->list, st, list);
@@ -440,10 +440,10 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 		return;
 
 	if (st->len == 0) {
-		if (oc->busyobj != NULL) {
-			Lck_Lock(&oc->busyobj->boc->mtx);
+		if (oc->boc != NULL) {
+			Lck_Lock(&oc->boc->mtx);
 			VTAILQ_REMOVE(&o->list, st, list);
-			Lck_Unlock(&oc->busyobj->boc->mtx);
+			Lck_Unlock(&oc->boc->mtx);
 		} else {
 			VTAILQ_REMOVE(&o->list, st, list);
 		}
@@ -465,21 +465,21 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 
 	memcpy(st1->ptr, st->ptr, st->len);
 	st1->len = st->len;
-	if (oc->busyobj != NULL) {
-		Lck_Lock(&oc->busyobj->boc->mtx);
+	if (oc->boc != NULL) {
+		Lck_Lock(&oc->boc->mtx);
 		VTAILQ_REMOVE(&o->list, st, list);
 		VTAILQ_INSERT_TAIL(&o->list, st1, list);
-		Lck_Unlock(&oc->busyobj->boc->mtx);
+		Lck_Unlock(&oc->boc->mtx);
 	} else {
 		VTAILQ_REMOVE(&o->list, st, list);
 		VTAILQ_INSERT_TAIL(&o->list, st1, list);
 	}
-	if (oc->busyobj == NULL) {
+	if (oc->boc == NULL) {
 		sml_stv_free(stv, st);
 	} else {
 		/* sml_stable frees this */
-		AZ(oc->busyobj->boc->stevedore_priv);
-		oc->busyobj->boc->stevedore_priv = st;
+		AZ(oc->boc->stevedore_priv);
+		oc->boc->stevedore_priv = st;
 	}
 }
 



More information about the varnish-commit mailing list