[master] 3bfe3fe De-inline the oc_*() methods by moving them into cache_obj.c.
Poul-Henning Kamp
phk at FreeBSD.org
Mon Jun 30 10:14:35 CEST 2014
commit 3bfe3fe793e775d3352de91618ba4da122a7dfa8
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Jun 30 08:14:04 2014 +0000
De-inline the oc_*() methods by moving them into cache_obj.c.
Rename suitably and always put the objcore argument first.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 55377d2..7ecaf8f 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -450,58 +450,6 @@ struct objcore {
struct ban *ban;
};
-static inline unsigned
-oc_getxid(struct dstat *ds, struct objcore *oc)
-{
- CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
-
- AN(oc->methods);
- AN(oc->methods->getxid);
- return (oc->methods->getxid(ds, oc));
-}
-
-static inline struct object *
-oc_getobj(struct dstat *ds, struct objcore *oc)
-{
-
- CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
- // AZ(oc->flags & OC_F_BUSY);
- AN(oc->methods);
- AN(oc->methods->getobj);
- return (oc->methods->getobj(ds, oc));
-}
-
-static inline void
-oc_updatemeta(struct objcore *oc)
-{
-
- CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
- AN(oc->methods);
- if (oc->methods->updatemeta != NULL)
- oc->methods->updatemeta(oc);
-}
-
-static inline void
-oc_freeobj(struct dstat *ds, struct objcore *oc)
-{
-
- AN(ds);
- CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
- AN(oc->methods);
- AN(oc->methods->freeobj);
- oc->methods->freeobj(ds, oc);
-}
-
-static inline struct lru *
-oc_getlru(const struct objcore *oc)
-{
-
- CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
- AN(oc->methods);
- AN(oc->methods->getlru);
- return (oc->methods->getlru(oc));
-}
-
/* Busy Object structure ---------------------------------------------
*
* The busyobj structure captures the aspects of an object related to,
@@ -1100,7 +1048,12 @@ enum objiter_status {
struct objiter *ObjIterBegin(struct worker *, struct object *);
enum objiter_status ObjIter(struct objiter *, void **, ssize_t *);
void ObjIterEnd(struct objiter **);
-void ObjTrimStore(struct objcore *oc, struct dstat *ds);
+void ObjTrimStore(struct objcore *, struct dstat *);
+unsigned ObjGetXID(struct objcore *, struct dstat *);
+struct object *ObjGetObj(struct objcore *, struct dstat *);
+void ObjUpdateMeta(struct objcore *);
+void ObjFreeObj(struct objcore *, struct dstat *);
+struct lru *ObjGetLRU(const struct objcore *);
/* cache_panic.c */
void PAN_Init(void);
diff --git a/bin/varnishd/cache/cache_ban.c b/bin/varnishd/cache/cache_ban.c
index 7bd3378..7388acb 100644
--- a/bin/varnishd/cache/cache_ban.c
+++ b/bin/varnishd/cache/cache_ban.c
@@ -958,7 +958,7 @@ ban_check_object(const struct object *o, struct vsl_log *vsl,
if (b == oc->ban) { /* not banned */
oc->ban = b0;
- oc_updatemeta(oc);
+ ObjUpdateMeta(oc);
return (0);
} else {
oc->ban = NULL;
@@ -1087,7 +1087,7 @@ ban_lurker_test_ban(struct worker *wrk, struct vsl_log *vsl, struct ban *bt,
oc = ban_lurker_getfirst(vsl, bt);
if (oc == NULL)
return;
- o = oc_getobj(&wrk->stats, oc);
+ o = ObjGetObj(oc, &wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
i = 0;
VTAILQ_FOREACH_REVERSE_SAFE(bl, obans, banhead_s, l_list, bln) {
diff --git a/bin/varnishd/cache/cache_expire.c b/bin/varnishd/cache/cache_expire.c
index e03df79..dd3ed1a 100644
--- a/bin/varnishd/cache/cache_expire.c
+++ b/bin/varnishd/cache/cache_expire.c
@@ -168,7 +168,7 @@ EXP_Insert(struct objcore *oc)
AZ(oc->exp_flags & OC_EF_DYING);
AN(oc->flags & OC_F_BUSY);
- lru = oc_getlru(oc);
+ lru = ObjGetLRU(oc);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
Lck_Lock(&lru->mtx);
@@ -201,7 +201,7 @@ EXP_Touch(struct objcore *oc, double now)
if (now - oc->last_lru < cache_param->lru_interval)
return;
- lru = oc_getlru(oc);
+ lru = ObjGetLRU(oc);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
/*
@@ -257,7 +257,7 @@ EXP_Rearm(struct objcore *oc, double now, double ttl, double grace, double keep)
if (when > oc->exp.t_origin && when > oc->timer_when)
return;
- lru = oc_getlru(oc);
+ lru = ObjGetLRU(oc);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
Lck_Lock(&lru->mtx);
@@ -334,14 +334,14 @@ EXP_NukeOne(struct busyobj *bo, struct lru *lru)
}
/* XXX: We could grab and return one storage segment to our caller */
- o = oc_getobj(bo->stats, oc);
+ o = ObjGetObj(oc, bo->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
STV_Freestore(o);
exp_mail_it(oc);
VSLb(bo->vsl, SLT_ExpKill, "LRU x=%u",
- oc_getxid(bo->stats, oc) & VSL_IDENTMASK);
+ ObjGetXID(oc, bo->stats) & VSL_IDENTMASK);
AN(bo->stats);
AN(oc);
(void)HSH_DerefObjCore(bo->stats, &oc);
@@ -367,7 +367,7 @@ exp_inbox(struct exp_priv *ep, struct objcore *oc, double now)
// AZ(oc->flags & OC_F_BUSY);
- lru = oc_getlru(oc);
+ lru = ObjGetLRU(oc);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
/* Evacuate our action-flags, and put it back on the LRU list */
@@ -395,10 +395,10 @@ exp_inbox(struct exp_priv *ep, struct objcore *oc, double now)
}
if (flags & OC_EF_MOVE) {
- o = oc_getobj(&ep->wrk->stats, oc);
+ o = ObjGetObj(oc, &ep->wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
oc->timer_when = EXP_When(&oc->exp);
- oc_updatemeta(oc);
+ ObjUpdateMeta(oc);
}
VSLb(&ep->vsl, SLT_ExpKill, "EXP_When p=%p e=%.9f f=0x%x", oc,
@@ -448,7 +448,7 @@ exp_expire(struct exp_priv *ep, double now)
VSC_C_main->n_expired++;
- lru = oc_getlru(oc);
+ lru = ObjGetLRU(oc);
CHECK_OBJ_NOTNULL(lru, LRU_MAGIC);
Lck_Lock(&lru->mtx);
// AZ(oc->flags & OC_F_BUSY);
@@ -470,10 +470,10 @@ exp_expire(struct exp_priv *ep, double now)
assert(oc->timer_idx == BINHEAP_NOIDX);
CHECK_OBJ_NOTNULL(oc->objhead, OBJHEAD_MAGIC);
- o = oc_getobj(&ep->wrk->stats, oc);
+ o = ObjGetObj(oc, &ep->wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
VSLb(&ep->vsl, SLT_ExpKill, "EXP_Expired x=%u t=%.0f",
- oc_getxid(&ep->wrk->stats, oc) & VSL_IDENTMASK,
+ ObjGetXID(oc, &ep->wrk->stats) & VSL_IDENTMASK,
EXP_Ttl(NULL, &oc->exp) - now);
(void)HSH_DerefObjCore(&ep->wrk->stats, &oc);
return (0);
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 8c9acbc..0980c64 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -536,7 +536,7 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
if (bo->failed && !bo->do_stream) {
assert(bo->state < BOS_STREAM);
if (bo->fetch_obj != NULL) {
- oc_freeobj(bo->stats, bo->fetch_objcore);
+ ObjFreeObj(bo->fetch_objcore, bo->stats);
bo->fetch_obj = NULL;
}
return (F_STP_ERROR);
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index f03d901..70796e7 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -423,7 +423,7 @@ HSH_Lookup(struct req *req, struct objcore **ocp, struct objcore **bocp,
if (oc->exp.ttl <= 0.)
continue;
- o = oc_getobj(&wrk->stats, oc);
+ o = ObjGetObj(oc, &wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
if (BAN_CheckObject(o, req))
@@ -801,7 +801,7 @@ HSH_DerefObjCore(struct dstat *ds, struct objcore **ocp)
AZ(oc->ban);
if (oc->methods != NULL)
- oc_freeobj(ds, oc);
+ ObjFreeObj(oc, ds);
FREE_OBJ(oc);
ds->n_objectcore--;
diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index 038a751..038255d 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -145,7 +145,7 @@ ObjTrimStore(struct objcore *oc, struct dstat *ds)
CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
stv = oc->stevedore;
CHECK_OBJ_NOTNULL(stv, STEVEDORE_MAGIC);
- o = oc_getobj(ds, oc);
+ o = ObjGetObj(oc, ds);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
st = VTAILQ_LAST(&o->store, storagehead);
if (st == NULL)
@@ -157,3 +157,55 @@ ObjTrimStore(struct objcore *oc, struct dstat *ds)
STV_trim(st, st->len, 1);
}
}
+
+unsigned
+ObjGetXID(struct objcore *oc, struct dstat *ds)
+{
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+
+ AN(oc->methods);
+ AN(oc->methods->getxid);
+ return (oc->methods->getxid(ds, oc));
+}
+
+struct object *
+ObjGetObj(struct objcore *oc, struct dstat *ds)
+{
+
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ // AZ(oc->flags & OC_F_BUSY);
+ AN(oc->methods);
+ AN(oc->methods->getobj);
+ return (oc->methods->getobj(ds, oc));
+}
+
+void
+ObjUpdateMeta(struct objcore *oc)
+{
+
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ AN(oc->methods);
+ if (oc->methods->updatemeta != NULL)
+ oc->methods->updatemeta(oc);
+}
+
+void
+ObjFreeObj(struct objcore *oc, struct dstat *ds)
+{
+
+ AN(ds);
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ AN(oc->methods);
+ AN(oc->methods->freeobj);
+ oc->methods->freeobj(ds, oc);
+}
+
+struct lru *
+ObjGetLRU(const struct objcore *oc)
+{
+
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ AN(oc->methods);
+ AN(oc->methods->getlru);
+ return (oc->methods->getlru(oc));
+}
diff --git a/bin/varnishd/cache/cache_req_fsm.c b/bin/varnishd/cache/cache_req_fsm.c
index bc5ffc2..f987568 100644
--- a/bin/varnishd/cache/cache_req_fsm.c
+++ b/bin/varnishd/cache/cache_req_fsm.c
@@ -287,7 +287,7 @@ cnt_fetch(struct worker *wrk, struct req *req)
return (REQ_FSM_MORE);
}
- req->obj = oc_getobj(&wrk->stats, req->objcore);
+ req->obj = ObjGetObj(req->objcore, &wrk->stats);
req->objcore = NULL;
req->err_code = http_GetStatus(req->obj->http);
req->req_step = R_STP_DELIVER;
@@ -381,7 +381,7 @@ cnt_lookup(struct worker *wrk, struct req *req)
AZ(oc->flags & OC_F_BUSY);
AZ(req->objcore);
- o = oc_getobj(&wrk->stats, oc);
+ o = ObjGetObj(oc, &wrk->stats);
CHECK_OBJ_NOTNULL(o, OBJECT_MAGIC);
req->obj = o;
diff --git a/bin/varnishd/storage/stevedore.c b/bin/varnishd/storage/stevedore.c
index a20c58b..7ddee95 100644
--- a/bin/varnishd/storage/stevedore.c
+++ b/bin/varnishd/storage/stevedore.c
@@ -53,7 +53,7 @@ default_oc_getxid(struct dstat *ds, struct objcore *oc)
{
struct object *o;
- o = oc_getobj(ds, oc);
+ o = ObjGetObj(oc, ds);
return (o->vxid);
}
More information about the varnish-commit
mailing list