commit 9bbcb80d35f8868a90603368078f91ba56cfe0d3 from: rsc date: Thu Jun 15 04:35:57 2006 UTC ext2 fixes (Steve VanDeBogart) commit - 751ff8ab61cc89cc7c351e1874720a61b865077f commit + 9bbcb80d35f8868a90603368078f91ba56cfe0d3 blob - 8473aa34c934d17c074a05022cfd95dd7fa3ee7a blob + ddd3d7b87d90290a7001c427c115aa53d3a28d05 --- src/libdiskfs/ext2.c +++ src/libdiskfs/ext2.c @@ -88,7 +88,7 @@ ext2blockread(Fsys *fsys, u64int vbno) Group *g; Block *gb; uchar *bits; - u32int bno, boff; + u32int bno, boff, bitpos; Ext2 *fs; fs = fsys->priv; @@ -115,11 +115,12 @@ ext2blockread(Fsys *fsys, u64int vbno) if(debug) fprint(2, "group %d bitblock=%d...", bno/fs->blockspergroup, g->bitblock); */ + bitpos = (u64int)g->bitblock*fs->blocksize; + blockput(gb); - if((bitb = diskread(fs->disk, fs->blocksize, (u64int)g->bitblock*fs->blocksize)) == nil){ + if((bitb = diskread(fs->disk, fs->blocksize, bitpos)) == nil){ if(debug) fprint(2, "loading bitblock: %r..."); - blockput(gb); return nil; } bits = bitb->data; @@ -128,9 +129,9 @@ ext2blockread(Fsys *fsys, u64int vbno) if(debug) fprint(2, "block %d not allocated...", bno); blockput(bitb); - blockput(gb); return nil; } + blockput(bitb); bno += fs->firstblock; return diskread(fs->disk, fs->blocksize, (u64int)bno*fs->blocksize);