commit - 6802a899956b6c593729c53fe9435dfc89020444
commit + e77222a4ecdf427c2eed2eb44251b8841ef81b3c
blob - 41ebfcee4173d26243078a3c78a59d604c8e680a
blob + 8473aa34c934d17c074a05022cfd95dd7fa3ee7a
--- src/libdiskfs/ext2.c
+++ src/libdiskfs/ext2.c
#include <diskfs.h>
#include "ext2.h"
-#define debug 1
+#define debug 0
static int ext2sync(Fsys*);
static void ext2close(Fsys*);
fprint(2, "loading group: %r...");
return nil;
}
-/* if(debug) */
-/* fprint(2, "group %d bitblock=%d...", bno/fs->blockspergroup, g->bitblock); */
+/*
+ if(debug)
+ fprint(2, "group %d bitblock=%d...", bno/fs->blockspergroup, g->bitblock);
+*/
if((bitb = diskread(fs->disk, fs->blocksize, (u64int)g->bitblock*fs->blocksize)) == nil){
if(debug)
ext2datablock(Ext2 *fs, u32int bno, int size)
{
USED(size);
- return ext2blockread(fs->fsys, bno+fs->firstblock);
+ return ext2blockread(fs->fsys, bno);
}
static Block*
if(debug) fprint(2, "bad namlen %d reclen %d at offset %d of %d\n", de->namlen, de->reclen, (int)(p-b->data), b->len);
break;
}
- if(de->name[de->namlen] != 0){
- if(debug) fprint(2, "bad name %d %.*s\n", de->namlen, de->namlen, de->name);
- continue;
- }
- if(debug) print("%s/%d ", de->name, (int)de->ino);
+ if(debug) print("%.*s/%d ", de->namlen, de->name, (int)de->ino);
if((uchar*)de - b->data < off)
continue;
e.fileid = de->ino;
e.name = de->name;
+ e.namelen = de->namlen;
e.cookie = (u64int)i*fs->blocksize + (p - b->data);
if(nfs3entrypack(dp, dep, &ndp, &e) < 0){
done = 1;
blob - cf246f98463f5327a7ad48b02b784c96bab40ebe
blob + 8b4d051462eb10a03203cbad3e6e8a7ffcd4e969
--- src/libdiskfs/venti.c
+++ src/libdiskfs/venti.c
return i;
}
-static VtBlock*
-_vtfileblock(VtCache *c, VtEntry *e, u32int bn)
-{
- VtBlock *b, *bb;
- int i, d, index[VtPointerDepth+1], t;
-
- i = vtfileindices(e, bn, index);
- if(i < 0)
- return nil;
- d = (e->type&VtTypeDepthMask);
- if(i > d){
- werrstr("bad address %d > %d (%x %x)", i, d, e->type, e->flags);
- return nil;
- }
-
-/*fprint(2, "vtread %V\n", e->score); */
- b = vtcacheglobal(c, e->score, e->type);
- if(b == nil)
- return nil;
-
- for(i=d-1; i>=0; i--){
- t = VtDataType+i;
-/*fprint(2, "vtread %V\n", b->data+index[i]*VtScoreSize); */
- bb = vtcacheglobal(c, b->data+index[i]*VtScoreSize, t);
- vtblockput(b);
- if(bb == nil)
- return nil;
- b = bb;
- }
- return b;
-}
-
+VtBlock *_vtfileblock(VtCache*, VtEntry*, u32int); /* avoid auto-inline by putting later in file */
static void
diskventiblockput(Block *b)
{
return b;
}
+VtBlock*
+_vtfileblock(VtCache *c, VtEntry *e, u32int bn)
+{
+ VtBlock *b, *bb;
+ int i, d, index[VtPointerDepth+1], t;
+ uchar score[VtScoreSize];
+
+ i = vtfileindices(e, bn, index);
+ if(i < 0)
+ return nil;
+ d = (e->type&VtTypeDepthMask);
+ if(i > d){
+ werrstr("bad address %d > %d (%x %x)", i, d, e->type, e->flags);
+ return nil;
+ }
+
+/*fprint(2, "vtread %V\n", e->score); */
+ b = vtcacheglobal(c, e->score, e->type);
+ for(i=d-1; i>=0 && b; i--){
+ t = VtDataType+i;
+/*fprint(2, "vtread %V\n", b->data+index[i]*VtScoreSize); */
+ memmove(score, b->data+index[i]*VtScoreSize, VtScoreSize);
+ vtblockput(b);
+ b = vtcacheglobal(c, score, t);
+ }
+ return b;
+}
+
static void
diskventiclose(Disk *dd)
{