> 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

Reply via email to