r5541 - trunk/varnish-cache/bin/varnishd
phk at varnish-cache.org
phk at varnish-cache.org
Mon Nov 15 12:11:53 CET 2010
Author: phk
Date: 2010-11-15 12:11:52 +0100 (Mon, 15 Nov 2010)
New Revision: 5541
Modified:
trunk/varnish-cache/bin/varnishd/cache_center.c
trunk/varnish-cache/bin/varnishd/cache_expire.c
trunk/varnish-cache/bin/varnishd/cache_hash.c
trunk/varnish-cache/bin/varnishd/hash_slinger.h
Log:
Reduce the arguments of HSH_DerefObjCore() to the minimum needed.
Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c 2010-11-15 10:39:18 UTC (rev 5540)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c 2010-11-15 11:11:52 UTC (rev 5541)
@@ -471,9 +471,9 @@
if (sp->objcore != NULL) {
CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
- HSH_DerefObjCore(sp);
- AZ(sp->objhead);
- AZ(sp->objcore);
+ HSH_DerefObjCore(sp->wrk, sp->objcore);
+ sp->objhead = NULL;
+ sp->objcore = NULL;
}
AZ(sp->obj);
sp->wrk->bereq = NULL;
@@ -531,8 +531,11 @@
AZ(sp->objhead);
sp->wrk->cacheable = 0;
} else if (!sp->wrk->cacheable) {
- if (sp->objhead != NULL)
- HSH_DerefObjCore(sp);
+ if (sp->objhead != NULL) {
+ HSH_DerefObjCore(sp->wrk, sp->objcore);
+ sp->objhead = NULL;
+ sp->objcore = NULL;
+ }
}
/*
@@ -898,18 +901,24 @@
VCL_miss_method(sp);
switch(sp->handling) {
case VCL_RET_ERROR:
- HSH_DerefObjCore(sp);
+ HSH_DerefObjCore(sp->wrk, sp->objcore);
+ sp->objhead = NULL;
+ sp->objcore = NULL;
sp->step = STP_ERROR;
return (0);
case VCL_RET_PASS:
- HSH_DerefObjCore(sp);
+ HSH_DerefObjCore(sp->wrk, sp->objcore);
+ sp->objhead = NULL;
+ sp->objcore = NULL;
sp->step = STP_PASS;
return (0);
case VCL_RET_FETCH:
sp->step = STP_FETCH;
return (0);
case VCL_RET_RESTART:
- HSH_DerefObjCore(sp);
+ HSH_DerefObjCore(sp->wrk, sp->objcore);
+ sp->objhead = NULL;
+ sp->objcore = NULL;
INCOMPL();
default:
WRONG("Illegal action in vcl_miss{}");
Modified: trunk/varnish-cache/bin/varnishd/cache_expire.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_expire.c 2010-11-15 10:39:18 UTC (rev 5540)
+++ trunk/varnish-cache/bin/varnishd/cache_expire.c 2010-11-15 11:11:52 UTC (rev 5541)
@@ -284,10 +284,10 @@
oc->flags &= ~OC_F_ONLRU;
}
- VSC_main->n_expired++;
-
Lck_Unlock(&exp_mtx);
+ VSC_main->n_expired++;
+
CHECK_OBJ_NOTNULL(oc->objhead, OBJHEAD_MAGIC);
if (!(oc->flags & OC_F_PERSISTENT)) {
o = oc->obj;
@@ -298,11 +298,7 @@
} else {
WSL(sp->wrk, SLT_ExpKill, 1, "-1 %d",
(int)(oc->timer_when - t));
- sp->objhead = oc->objhead;
- sp->objcore = oc;
- HSH_DerefObjCore(sp);
- AZ(sp->objcore);
- AZ(sp->objhead);
+ HSH_DerefObjCore(sp->wrk, oc);
sp->wrk->stats.n_vampireobject--;
}
}
Modified: trunk/varnish-cache/bin/varnishd/cache_hash.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_hash.c 2010-11-15 10:39:18 UTC (rev 5540)
+++ trunk/varnish-cache/bin/varnishd/cache_hash.c 2010-11-15 11:11:52 UTC (rev 5541)
@@ -621,21 +621,15 @@
}
void
-HSH_DerefObjCore(struct sess *sp)
+HSH_DerefObjCore(struct worker *wrk, struct objcore *oc)
{
struct objhead *oh;
- struct objcore *oc;
- CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
- CHECK_OBJ_NOTNULL(sp->objcore, OBJCORE_MAGIC);
+ CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
+ oh = oc->objhead;
+ CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
- oh = sp->objhead;
- sp->objhead = NULL;
- oc = sp->objcore;
- sp->objcore = NULL;
-
Lck_Lock(&oh->mtx);
- assert(oc->objhead == oh);
VTAILQ_REMOVE(&oh->objcs, oc, list);
if (oc->flags & OC_F_BUSY)
hsh_rush(oh);
@@ -643,9 +637,9 @@
oc->objhead = NULL;
assert(oh->refcnt > 0);
FREE_OBJ(oc);
- sp->wrk->stats.n_objectcore--;
+ wrk->stats.n_objectcore--;
if (!hash->deref(oh))
- HSH_DeleteObjHead(sp->wrk, oh);
+ HSH_DeleteObjHead(wrk, oh);
}
/*******************************************************************
Modified: trunk/varnish-cache/bin/varnishd/hash_slinger.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/hash_slinger.h 2010-11-15 10:39:18 UTC (rev 5540)
+++ trunk/varnish-cache/bin/varnishd/hash_slinger.h 2010-11-15 11:11:52 UTC (rev 5541)
@@ -61,7 +61,7 @@
double HSH_Grace(double g);
void HSH_Init(void);
void HSH_AddString(const struct sess *sp, const char *str);
-void HSH_DerefObjCore(struct sess *sp);
+void HSH_DerefObjCore(struct worker *sp, struct objcore *oc);
void HSH_FindBan(struct sess *sp, struct objcore **oc);
struct objcore *HSH_Insert(const struct sess *sp);
void HSH_Purge(struct sess *, struct objhead *, double ttl, double grace);
More information about the varnish-commit
mailing list