Commit 3e3008f6 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Eliminate sp->objhead as a general variable, it was always tracking

sp->objcore and we can find the objhead from the objcore.

Rename it to match its remaining functionality:  recording which
busy objhead we are sleeping on.



git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@5571 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 95fca9e4
......@@ -474,9 +474,11 @@ struct sess {
struct vbc *vbc;
struct object *obj;
struct objcore *objcore;
struct objhead *objhead;
struct VCL_conf *vcl;
/* The busy objhead we sleep on */
struct objhead *hash_objhead;
/* Various internal stuff */
struct sessmem *mem;
......
......@@ -469,10 +469,8 @@ cnt_fetch(struct sess *sp)
if (i) {
if (sp->objcore != NULL) {
CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objhead = NULL;
sp->objcore = NULL;
}
AZ(sp->obj);
......@@ -528,14 +526,10 @@ cnt_fetch(struct sess *sp)
if (sp->objcore == NULL) {
/* This is a pass from vcl_recv */
AZ(sp->objhead);
sp->wrk->cacheable = 0;
} else if (!sp->wrk->cacheable) {
if (sp->objhead != NULL) {
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objhead = NULL;
sp->objcore = NULL;
}
} else if (!sp->wrk->cacheable && sp->objcore != NULL) {
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objcore = NULL;
}
/*
......@@ -545,7 +539,6 @@ cnt_fetch(struct sess *sp)
*/
if (sp->wrk->cacheable) {
CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
vary = VRY_Create(sp, sp->wrk->beresp);
if (vary != NULL) {
......@@ -553,7 +546,6 @@ cnt_fetch(struct sess *sp)
assert(varyl > 0);
}
} else {
AZ(sp->objhead);
AZ(sp->objcore);
}
......@@ -743,7 +735,6 @@ cnt_hit(struct sess *sp)
/* Drop our object, we won't need it */
(void)HSH_Deref(sp->wrk, NULL, &sp->obj);
sp->objcore = NULL;
AZ(sp->objhead);
switch(sp->handling) {
case VCL_RET_PASS:
......@@ -820,8 +811,6 @@ cnt_lookup(struct sess *sp)
if (oc->flags & OC_F_BUSY) {
sp->wrk->stats.cache_miss++;
// AZ(oc->obj);
sp->objhead = oh;
sp->objcore = oc;
sp->step = STP_MISS;
return (0);
......@@ -836,7 +825,6 @@ cnt_lookup(struct sess *sp)
WSP(sp, SLT_HitPass, "%u", sp->obj->xid);
(void)HSH_Deref(sp->wrk, NULL, &sp->obj);
sp->objcore = NULL;
sp->objhead = NULL;
sp->step = STP_PASS;
return (0);
}
......@@ -879,7 +867,6 @@ cnt_miss(struct sess *sp)
AZ(sp->obj);
AN(sp->objcore);
AN(sp->objhead);
WS_Reset(sp->wrk->ws, NULL);
sp->wrk->bereq = sp->wrk->http[0];
http_Setup(sp->wrk->bereq, sp->wrk->ws);
......@@ -892,13 +879,11 @@ cnt_miss(struct sess *sp)
switch(sp->handling) {
case VCL_RET_ERROR:
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objhead = NULL;
sp->objcore = NULL;
sp->step = STP_ERROR;
return (0);
case VCL_RET_PASS:
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objhead = NULL;
sp->objcore = NULL;
sp->step = STP_PASS;
return (0);
......@@ -907,7 +892,6 @@ cnt_miss(struct sess *sp)
return (0);
case VCL_RET_RESTART:
AZ(HSH_Deref(sp->wrk, sp->objcore, NULL));
sp->objhead = NULL;
sp->objcore = NULL;
INCOMPL();
default:
......
......@@ -270,7 +270,7 @@ HSH_Insert(const struct sess *sp)
if (params->diag_bitmap & 0x80000000)
hsh_testmagic(sp->wrk->nobjhead->digest);
AZ(sp->objhead);
AZ(sp->hash_objhead);
AN(w->nobjhead);
oh = hash->lookup(sp, w->nobjhead);
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
......@@ -320,14 +320,14 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
if (params->diag_bitmap & 0x80000000)
hsh_testmagic(sp->wrk->nobjhead->digest);
if (sp->objhead != NULL) {
if (sp->hash_objhead != NULL) {
/*
* This sess came off the waiting list, and brings a
* oh refcnt with it.
*/
CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
oh = sp->objhead;
sp->objhead = NULL;
CHECK_OBJ_NOTNULL(sp->hash_objhead, OBJHEAD_MAGIC);
oh = sp->hash_objhead;
sp->hash_objhead = NULL;
} else {
AN(w->nobjhead);
oh = hash->lookup(sp, w->nobjhead);
......@@ -434,7 +434,7 @@ HSH_Lookup(struct sess *sp, struct objhead **poh)
* back when the sess comes off the waiting list and
* calls us again
*/
sp->objhead = oh;
sp->hash_objhead = oh;
sp->wrk = NULL;
Lck_Unlock(&oh->mtx);
return (NULL);
......
......@@ -203,8 +203,6 @@ STV_MkObject(struct sess *sp, void *ptr, unsigned ltot,
CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
o->objcore = sp->objcore;
sp->objhead = NULL; /* XXX: refcnt follows pointer. */
sp->objcore = NULL; /* refcnt follows pointer. */
BAN_NewObj(o);
......
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