r945 - trunk/varnish-cache/bin/varnishd
phk at projects.linpro.no
phk at projects.linpro.no
Thu Sep 7 10:25:06 CEST 2006
Author: phk
Date: 2006-09-07 10:25:05 +0200 (Thu, 07 Sep 2006)
New Revision: 945
Modified:
trunk/varnish-cache/bin/varnishd/storage_file.c
Log:
Insert a bunch of asserts to try to catch anything going wrong
Modified: trunk/varnish-cache/bin/varnishd/storage_file.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/storage_file.c 2006-09-07 08:01:14 UTC (rev 944)
+++ trunk/varnish-cache/bin/varnishd/storage_file.c 2006-09-07 08:25:05 UTC (rev 945)
@@ -288,6 +288,24 @@
smf_initfile(sc, size, 1);
}
+/*--------------------------------------------------------------------*/
+
+static void
+phk(struct smf *sp)
+{
+ struct smf *sp2;
+ sp2 = TAILQ_NEXT(sp, order);
+ if (sp2 != NULL) {
+ assert(sp2->offset > sp->offset);
+ assert(sp2->ptr > sp->ptr);
+ }
+ sp2 = TAILQ_PREV(sp, smfhead, order);
+ if (sp2 != NULL) {
+ assert(sp2->offset < sp->offset);
+ assert(sp2->ptr < sp->ptr);
+ }
+}
+
/*--------------------------------------------------------------------
* Insert/Remove from correct freelist
*/
@@ -298,6 +316,7 @@
unsigned b, n;
struct smf *sp2;
+ phk(sp);
assert(sp->alloc == 0);
assert(sp->flist == NULL);
b = sp->size / sc->pagesize;
@@ -327,6 +346,7 @@
{
unsigned b;
+ phk(sp);
assert(sp->alloc == 0);
assert(sp->flist != NULL);
b = sp->size / sc->pagesize;
@@ -356,10 +376,8 @@
if (b >= NBUCKET)
b = NBUCKET - 1;
n = 0;
- for (sp = NULL; b < NBUCKET; b++) {
+ for (sp = NULL; sp == NULL && b < NBUCKET; b++) {
sp = TAILQ_FIRST(&sc->free[b]);
- if (sp != NULL)
- break;
n++;
}
if (sp == NULL)
@@ -388,6 +406,8 @@
TAILQ_INSERT_BEFORE(sp, sp2, order);
TAILQ_INSERT_TAIL(&sc->used, sp2, status);
insfree(sc, sp);
+ phk(sp);
+ phk(sp2);
return (sp2);
}
@@ -403,9 +423,10 @@
struct smf_sc *sc = sp->sc;
CHECK_OBJ_NOTNULL(sp, SMF_MAGIC);
+ assert(sp->alloc != 0);
TAILQ_REMOVE(&sc->used, sp, status);
- assert(sp->alloc != 0);
sp->alloc = 0;
+ phk(sp);
sp2 = TAILQ_NEXT(sp, order);
if (sp2 != NULL &&
@@ -445,6 +466,8 @@
struct smf *sp2;
struct smf_sc *sc = sp->sc;
+ phk(sp);
+ assert(sp->alloc != 0);
assert(bytes > 0);
CHECK_OBJ_NOTNULL(sp, SMF_MAGIC);
sp2 = malloc(sizeof *sp2);
More information about the varnish-commit
mailing list