little bug fixes
This commit is contained in:
parent
503f601cb0
commit
7cb748941e
4 changed files with 14 additions and 4 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue