[master] 3995e91 Rename ref/rel functions from "busy" to "boc" and remove special cases dealing with oc's without a boc duing fill-up.

Poul-Henning Kamp phk at FreeBSD.org
Fri Feb 5 21:09:46 CET 2016


commit 3995e9106edf3acc4fca960554682064c5815371
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date:   Fri Feb 5 20:08:45 2016 +0000

    Rename ref/rel functions from "busy" to "boc" and remove special
    cases dealing with oc's without a boc duing fill-up.

diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 99b283d..35a6dd6 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -956,7 +956,7 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
 		(void)HSH_DerefObjCore(wrk, &bo->stale_oc);
 
 	wrk->vsl = NULL;
-	HSH_DerefBusy(wrk, bo->fetch_objcore);
+	HSH_DerefBoc(wrk, bo->fetch_objcore);
 	VBO_ReleaseBusyObj(wrk, &bo);
 	THR_SetBusyobj(NULL);
 }
@@ -989,7 +989,7 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
 	bo = VBO_GetBusyObj(wrk, req);
 	CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
 
-	boc = HSH_RefBusy(oc);
+	boc = HSH_RefBoc(oc);
 	CHECK_OBJ_NOTNULL(boc, BOC_MAGIC);
 
 	VSLb(bo->vsl, SLT_Begin, "bereq %u %s", VXID(req->vsl->wid), how);
@@ -1028,7 +1028,7 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
 		(void)vbf_stp_fail(req->wrk, bo);
 		if (bo->stale_oc != NULL)
 			(void)HSH_DerefObjCore(wrk, &bo->stale_oc);
-		HSH_DerefBusy(wrk, oc);
+		HSH_DerefBoc(wrk, oc);
 	} else {
 		bo = NULL; /* ref transferred to fetch thread */
 		if (mode == VBF_BACKGROUND) {
@@ -1045,7 +1045,7 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
 	AZ(bo);
 	VSLb_ts_req(req, "Fetch", W_TIM_real(wrk));
 	assert(oc->boc == boc);
-	HSH_DerefBusy(wrk, oc);
+	HSH_DerefBoc(wrk, oc);
 	if (mode == VBF_BACKGROUND)
 		(void)HSH_DerefObjCore(wrk, &oc);
 	THR_SetBusyobj(NULL);
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index 1a28fbf..b9bff87 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -385,7 +385,7 @@ HSH_Lookup(struct req *req, struct objcore **ocp, struct objcore **bocp,
 			if (req->hash_ignore_busy)
 				continue;
 
-			if (oc->boc != NULL && oc->boc->vary != NULL &&
+			if (oc->boc->vary != NULL &&
 			    !VRY_Match(req, oc->boc->vary))
 				continue;
 
@@ -714,7 +714,7 @@ HSH_Ref(struct objcore *oc)
  */
 
 struct boc *
-HSH_RefBusy(const struct objcore *oc)
+HSH_RefBoc(const struct objcore *oc)
 {
 	struct objhead *oh;
 	struct boc *boc;
@@ -735,7 +735,7 @@ HSH_RefBusy(const struct objcore *oc)
 }
 
 void
-HSH_DerefBusy(struct worker *wrk, struct objcore *oc)
+HSH_DerefBoc(struct worker *wrk, struct objcore *oc)
 {
 	struct boc *boc;
 	unsigned r;
diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index 9f0bdf2..76f67df 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -144,17 +144,12 @@ ObjExtend(struct worker *wrk, struct objcore *oc, ssize_t l)
 	AZ(ObjGetU64(wrk, oc, OA_LEN, &len));
 	len += l;
 
-	if (oc->boc != NULL) {
-		Lck_Lock(&oc->boc->mtx);
-		AN(om->objextend);
-		om->objextend(wrk, oc, l);
-		AZ(ObjSetU64(wrk, oc, OA_LEN, len));
-		Lck_Unlock(&oc->boc->mtx);
-		AZ(pthread_cond_broadcast(&oc->boc->cond));
-	} else {
-		om->objextend(wrk, oc, l);
-		AZ(ObjSetU64(wrk, oc, OA_LEN, len));
-	}
+	Lck_Lock(&oc->boc->mtx);
+	AN(om->objextend);
+	om->objextend(wrk, oc, l);
+	AZ(ObjSetU64(wrk, oc, OA_LEN, len));
+	Lck_Unlock(&oc->boc->mtx);
+	AZ(pthread_cond_broadcast(&oc->boc->cond));
 }
 
 /*====================================================================
diff --git a/bin/varnishd/cache/cache_req_body.c b/bin/varnishd/cache/cache_req_body.c
index 90145e4..06a43fa 100644
--- a/bin/varnishd/cache/cache_req_body.c
+++ b/bin/varnishd/cache/cache_req_body.c
@@ -227,7 +227,7 @@ VRB_Cache(struct req *req, ssize_t maxsize)
 
 	if (VFP_Open(vfc) < 0) {
 		req->req_body_status = REQ_BODY_FAIL;
-		HSH_DerefBusy(req->wrk, req->body_oc);
+		HSH_DerefBoc(req->wrk, req->body_oc);
 		AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
 		return (-1);
 	}
@@ -242,7 +242,7 @@ VRB_Cache(struct req *req, ssize_t maxsize)
 		if (req->req_bodybytes > maxsize) {
 			req->req_body_status = REQ_BODY_FAIL;
 			(void)VFP_Error(vfc, "Request body too big to cache");
-			HSH_DerefBusy(req->wrk, req->body_oc);
+			HSH_DerefBoc(req->wrk, req->body_oc);
 			AZ(HSH_DerefObjCore(req->wrk, &req->body_oc));
 			VFP_Close(vfc);
 			return(-1);
@@ -291,6 +291,6 @@ VRB_Cache(struct req *req, ssize_t maxsize)
 		req->req_body_status = REQ_BODY_FAIL;
 	}
 	VSLb_ts_req(req, "ReqBody", VTIM_real());
-	HSH_DerefBusy(req->wrk, req->body_oc);
+	HSH_DerefBoc(req->wrk, req->body_oc);
 	return (vfps == VFP_END ? req->req_bodybytes : -1);
 }
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index e468aab..fa8f373 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -207,7 +207,7 @@ cnt_synth(struct worker *wrk, struct req *req)
 		}
 	}
 
-	HSH_DerefBusy(wrk, req->objcore);
+	HSH_DerefBoc(wrk, req->objcore);
 	VSB_delete(synth_body);
 
 	if (szl < 0) {
@@ -241,7 +241,7 @@ cnt_transmit(struct worker *wrk, struct req *req)
 	CHECK_OBJ_NOTNULL(req->transport, TRANSPORT_MAGIC);
 
 	/* Grab a ref to the bo if there is one */
-	boc = HSH_RefBusy(req->objcore);
+	boc = HSH_RefBoc(req->objcore);
 
 	clval = http_GetContentLength(req->resp);
 	if (boc != NULL)
@@ -310,7 +310,7 @@ cnt_transmit(struct worker *wrk, struct req *req)
 	}
 
 	if (boc != NULL)
-		HSH_DerefBusy(wrk, req->objcore);
+		HSH_DerefBoc(wrk, req->objcore);
 
 	(void)HSH_DerefObjCore(wrk, &req->objcore);
 	http_Teardown(req->resp);
diff --git a/bin/varnishd/hash/hash_slinger.h b/bin/varnishd/hash/hash_slinger.h
index 54becbb..9a64916 100644
--- a/bin/varnishd/hash/hash_slinger.h
+++ b/bin/varnishd/hash/hash_slinger.h
@@ -71,8 +71,8 @@ void HSH_Insert(struct worker *, const void *hash, struct objcore *);
 void HSH_Purge(struct worker *, struct objhead *, double ttl, double grace,
     double keep);
 void HSH_config(const char *h_arg);
-struct boc *HSH_RefBusy(const struct objcore *);
-void HSH_DerefBusy(struct worker *wrk, struct objcore *);
+struct boc *HSH_RefBoc(const struct objcore *);
+void HSH_DerefBoc(struct worker *wrk, struct objcore *);
 struct objcore *HSH_Private(struct worker *wrk);
 void HSH_Abandon(struct objcore *oc);
 
diff --git a/bin/varnishd/storage/storage_persistent_silo.c b/bin/varnishd/storage/storage_persistent_silo.c
index df159e1..0c7c8ec 100644
--- a/bin/varnishd/storage/storage_persistent_silo.c
+++ b/bin/varnishd/storage/storage_persistent_silo.c
@@ -170,7 +170,7 @@ smp_load_seg(struct worker *wrk, const struct smp_sc *sc,
 		sg->nobj++;
 		EXP_Inject(wrk, oc);
 		AN(isnan(oc->last_lru));
-		HSH_DerefBusy(wrk, oc);	// XXX Keep it an stream resurrection?
+		HSH_DerefBoc(wrk, oc);	// XXX Keep it an stream resurrection?
 		AZ(isnan(oc->last_lru));
 	}
 	Pool_Sumstat(wrk);
diff --git a/bin/varnishd/storage/storage_simple.c b/bin/varnishd/storage/storage_simple.c
index f27bc95..3fdd242 100644
--- a/bin/varnishd/storage/storage_simple.c
+++ b/bin/varnishd/storage/storage_simple.c
@@ -236,7 +236,7 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
 	obj = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
 
-	boc = HSH_RefBusy(oc);
+	boc = HSH_RefBoc(oc);
 
 	if (boc == NULL) {
 		VTAILQ_FOREACH(st, &obj->list, list)
@@ -300,7 +300,7 @@ sml_iterator(struct worker *wrk, struct objcore *oc,
 			break;
 		}
 	}
-	HSH_DerefBusy(wrk, oc);
+	HSH_DerefBoc(wrk, oc);
 	return (ret);
 }
 
@@ -351,6 +351,7 @@ sml_getspace(struct worker *wrk, struct objcore *oc, ssize_t *sz,
 
 	o = sml_getobj(wrk, oc);
 	CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
+	CHECK_OBJ_NOTNULL(oc->boc, BOC_MAGIC);
 
 	st = VTAILQ_LAST(&o->list, storagehead);
 	if (st != NULL && st->len < st->space) {
@@ -364,15 +365,11 @@ sml_getspace(struct worker *wrk, struct objcore *oc, ssize_t *sz,
 	if (st == NULL)
 		return (0);
 
-	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->boc->mtx);
-	} else {
-		AN(oc->flags & (OC_F_PRIVATE));
-		VTAILQ_INSERT_TAIL(&o->list, st, list);
-	}
+	CHECK_OBJ_NOTNULL(oc->boc, BOC_MAGIC);
+	Lck_Lock(&oc->boc->mtx);
+	VTAILQ_INSERT_TAIL(&o->list, st, list);
+	Lck_Unlock(&oc->boc->mtx);
+
 	*sz = st->space - st->len;
 	assert (*sz > 0);
 	*ptr = st->ptr + st->len;
@@ -405,6 +402,7 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 
 	CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
 	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+	CHECK_OBJ_NOTNULL(oc->boc, BOC_MAGIC);
 
 	stv = oc->stobj->stevedore;
 	CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
@@ -420,13 +418,9 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 		return;
 
 	if (st->len == 0) {
-		if (oc->boc != NULL) {
-			Lck_Lock(&oc->boc->mtx);
-			VTAILQ_REMOVE(&o->list, st, list);
-			Lck_Unlock(&oc->boc->mtx);
-		} else {
-			VTAILQ_REMOVE(&o->list, st, list);
-		}
+		Lck_Lock(&oc->boc->mtx);
+		VTAILQ_REMOVE(&o->list, st, list);
+		Lck_Unlock(&oc->boc->mtx);
 		sml_stv_free(stv, st);
 		return;
 	}
@@ -445,22 +439,13 @@ sml_trimstore(struct worker *wrk, struct objcore *oc)
 
 	memcpy(st1->ptr, st->ptr, st->len);
 	st1->len = st->len;
-	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->boc->mtx);
-	} else {
-		VTAILQ_REMOVE(&o->list, st, list);
-		VTAILQ_INSERT_TAIL(&o->list, st1, list);
-	}
-	if (oc->boc == NULL) {
-		sml_stv_free(stv, st);
-	} else {
-		/* sml_stable frees this */
-		AZ(oc->boc->stevedore_priv);
-		oc->boc->stevedore_priv = st;
-	}
+	Lck_Lock(&oc->boc->mtx);
+	VTAILQ_REMOVE(&o->list, st, list);
+	VTAILQ_INSERT_TAIL(&o->list, st1, list);
+	Lck_Unlock(&oc->boc->mtx);
+	/* sml_stable frees this */
+	AZ(oc->boc->stevedore_priv);
+	oc->boc->stevedore_priv = st;
 }
 
 static void __match_proto__(objstable_f)



More information about the varnish-commit mailing list