> I do sometimes get errors like this from my fossil server: > could not write super block; waiting 10 seconds > blistAlloc: called on clean block > but I've been assuming they are benign. Am I wrong?
i looked into this. /sys/src/cmd/fossil/cache.c:1210,1217 if(p->index < 0){ /* * We don't know how to temporarily undo * b's dependency on bb, so just don't write b yet. */ if(0) fprint(2, "blockWrite skipping %d %x %d %d; need to write %d %x %d\n", b->part, b->addr, b->vers, b->l.type, p->part, p->addr, bb->vers); return 0; } what if bb == b? it'd be interesting to see what that outputs with if(1). i think _cacheLocalLookup is finding the superblock itself. perhaps no write between snaps meaning that only the sb itself is dirty? - erik