[master] 7804592 Make the object iterator work on objcore and get rid of ims_obj.
Poul-Henning Kamp
phk at FreeBSD.org
Mon Aug 18 08:54:17 CEST 2014
commit 780459204d77e421ec859a5d3b8771de68acd75e
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Aug 18 06:53:53 2014 +0000
Make the object iterator work on objcore and get rid of ims_obj.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 0e6a240..f71f507 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -494,7 +494,6 @@ struct busyobj {
struct http *bereq0;
struct http *bereq;
struct http *beresp;
- struct object *ims_obj;
struct objcore *ims_oc;
struct objcore *fetch_objcore;
@@ -1058,7 +1057,7 @@ enum objiter_status {
OIS_STREAM,
OIS_ERROR,
};
-struct objiter *ObjIterBegin(struct worker *, struct object *);
+struct objiter *ObjIterBegin(struct worker *, struct objcore *);
enum objiter_status ObjIter(struct objiter *, void **, ssize_t *);
void ObjIterEnd(struct objiter **);
void ObjTrimStore(struct objcore *, struct dstat *);
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index 03b4772..19c9bf6 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -590,7 +590,7 @@ vbf_stp_condfetch(struct worker *wrk, struct busyobj *bo)
al = 0;
ol = ObjGetLen(bo->ims_oc, bo->stats);
- oi = ObjIterBegin(wrk, bo->ims_obj);
+ oi = ObjIterBegin(wrk, bo->ims_oc);
do {
ois = ObjIter(oi, &sp, &sl);
while (sl > 0) {
@@ -803,10 +803,8 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
}
AZ(bo->fetch_objcore->busyobj);
- if (bo->ims_oc != NULL) {
+ if (bo->ims_oc != NULL)
(void)HSH_DerefObjCore(&wrk->stats, &bo->ims_oc);
- bo->ims_obj = NULL;
- }
bo->stats = NULL;
@@ -823,7 +821,6 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
{
struct busyobj *bo;
const char *how;
- struct object *oldobj = NULL;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
@@ -861,17 +858,12 @@ VBF_Fetch(struct worker *wrk, struct req *req, struct objcore *oc,
HSH_Ref(oc);
bo->fetch_objcore = oc;
- AZ(bo->ims_obj);
AZ(bo->ims_oc);
if (oldoc != NULL &&
ObjCheckFlag(oldoc, &req->wrk->stats, OF_IMSCAND)) {
assert(oldoc->refcnt > 0);
HSH_Ref(oldoc);
bo->ims_oc = oldoc;
-
- oldobj = ObjGetObj(oldoc, &wrk->stats);
- CHECK_OBJ_NOTNULL(oldobj, OBJECT_MAGIC);
- bo->ims_obj = oldobj;
}
AZ(bo->req);
diff --git a/bin/varnishd/cache/cache_http1_deliver.c b/bin/varnishd/cache/cache_http1_deliver.c
index f27f1bd..194193a 100644
--- a/bin/varnishd/cache/cache_http1_deliver.c
+++ b/bin/varnishd/cache/cache_http1_deliver.c
@@ -174,7 +174,7 @@ v1d_WriteDirObj(struct req *req)
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
- oi = ObjIterBegin(req->wrk, req->obj);
+ oi = ObjIterBegin(req->wrk, req->objcore);
XXXAN(oi);
do {
diff --git a/bin/varnishd/cache/cache_obj.c b/bin/varnishd/cache/cache_obj.c
index 6d4f593..8e6474b 100644
--- a/bin/varnishd/cache/cache_obj.c
+++ b/bin/varnishd/cache/cache_obj.c
@@ -46,10 +46,13 @@ struct objiter {
};
struct objiter *
-ObjIterBegin(struct worker *wrk, struct object *obj)
+ObjIterBegin(struct worker *wrk, struct objcore *oc)
{
struct objiter *oi;
+ struct object *obj;
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ obj = ObjGetObj(oc, &wrk->stats);
CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
ALLOC_OBJ(oi, OBJITER_MAGIC);
if (oi == NULL)
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index 74dcab9..43919d7 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -341,8 +341,8 @@ pan_busyobj(const struct busyobj *bo)
pan_ws(bo->ws_o, 4);
if (bo->fetch_objcore)
pan_objcore("FETCH", bo->fetch_objcore);
- if (bo->ims_obj)
- pan_object("IMS", bo->ims_obj);
+ if (bo->ims_oc)
+ pan_objcore("IMS", bo->ims_oc);
VSB_printf(pan_vsp, " }\n");
}
More information about the varnish-commit
mailing list