little bug fixes

This commit is contained in:
rsc 2004-06-17 18:51:50 +00:00
parent 503f601cb0
commit 7cb748941e
4 changed files with 14 additions and 4 deletions

View file

@ -262,7 +262,8 @@ vtcachebumpblock(VtCache *c)
*/ */
if(c->nheap == 0){ if(c->nheap == 0){
vtcachedump(c); vtcachedump(c);
sysfatal("vtcachebumpblock: no free blocks in vtCache"); fprint(2, "vtcachebumpblock: no free blocks in vtCache");
abort();
} }
b = c->heap[0]; b = c->heap[0];
heapdel(b); heapdel(b);

View file

@ -64,6 +64,9 @@ vtreadpacket(VtConn *z, uchar score[VtScoreSize], uint type, int n)
{ {
VtFcall tx, rx; VtFcall tx, rx;
if(memcmp(score, vtzeroscore, VtScoreSize) == 0)
return packetalloc();
memset(&tx, 0, sizeof tx); memset(&tx, 0, sizeof tx);
tx.type = VtTread; tx.type = VtTread;
tx.dtype = type; tx.dtype = type;
@ -107,6 +110,10 @@ vtwritepacket(VtConn *z, uchar score[VtScoreSize], uint type, Packet *p)
{ {
VtFcall tx, rx; VtFcall tx, rx;
if(packetsize(p) == 0){
memmove(score, vtzeroscore, VtScoreSize);
return 0;
}
tx.type = VtTwrite; tx.type = VtTwrite;
tx.dtype = type; tx.dtype = type;
tx.data = p; tx.data = p;

View file

@ -226,5 +226,5 @@ vtfcallclear(VtFcall *f)
vtfree(f->auth); vtfree(f->auth);
f->auth = nil; f->auth = nil;
packetfree(f->data); packetfree(f->data);
f->auth = nil; f->data = nil;
} }

View file

@ -98,6 +98,9 @@ vtfilealloc(VtCache *c, VtBlock *b, VtFile *p, u32int offset, int mode)
assert(mode == VtOREAD || p->mode == VtORDWR); assert(mode == VtOREAD || p->mode == VtORDWR);
p->ref++; p->ref++;
qunlock(&p->lk); qunlock(&p->lk);
}else{
assert(b->addr != NilBlock);
r->local = 1;
} }
memmove(r->score, b->score, VtScoreSize); memmove(r->score, b->score, VtScoreSize);
r->offset = offset; r->offset = offset;
@ -119,7 +122,6 @@ vtfileroot(VtCache *c, u32int addr, int mode)
b = vtcachelocal(c, addr, VtDirType); b = vtcachelocal(c, addr, VtDirType);
if(b == nil) if(b == nil)
return nil; return nil;
r = vtfilealloc(c, b, nil, 0, mode); r = vtfilealloc(c, b, nil, 0, mode);
vtblockput(b); vtblockput(b);
return r; return r;
@ -1151,7 +1153,7 @@ vtfileflush(VtFile *f)
ret = flushblock(f->c, nil, e.score, e.psize/VtScoreSize, e.dsize/VtEntrySize, ret = flushblock(f->c, nil, e.score, e.psize/VtScoreSize, e.dsize/VtEntrySize,
e.type); e.type);
if(!ret){ if(ret < 0){
vtblockput(b); vtblockput(b);
return -1; return -1;
} }