[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