[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