Commit 78045920 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Make the object iterator work on objcore and get rid of ims_obj.

parent 43b39e5f
......@@ -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 *);
......
......@@ -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);
......
......@@ -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 {
......
......@@ -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)
......
......@@ -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");
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment