URI: 
       tmore ext2 fixes - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit c1a4592dd111d1c80c320d854d3a4a80d56d3adf
   DIR parent 9bbcb80d35f8868a90603368078f91ba56cfe0d3
  HTML Author: rsc <devnull@localhost>
       Date:   Thu, 15 Jun 2006 05:16:59 +0000
       
       more ext2 fixes
       
       Diffstat:
         M src/libdiskfs/ext2.c                |      22 +++++++++++++++++++---
       
       1 file changed, 19 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/src/libdiskfs/ext2.c b/src/libdiskfs/ext2.c
       t@@ -88,7 +88,8 @@ ext2blockread(Fsys *fsys, u64int vbno)
                Group *g;
                Block *gb;
                uchar *bits;
       -        u32int bno, boff, bitpos;
       +        u32int bno, boff, bitblock;
       +        u64int bitpos;
                Ext2 *fs;
        
                fs = fsys->priv;
       t@@ -113,9 +114,19 @@ ext2blockread(Fsys *fsys, u64int vbno)
                }
        /*
                if(debug)
       +                fprint(2, "ext2 group %d: bitblock=%ud inodebitblock=%ud inodeaddr=%ud freeblocks=%ud freeinodes=%ud useddirs=%ud\n",
       +                        (int)(bno/fs->blockspergroup),
       +                        g->bitblock,
       +                        g->inodebitblock,
       +                        g->inodeaddr,
       +                        g->freeblockscount,
       +                        g->freeinodescount,
       +                        g->useddirscount);
       +        if(debug)
                        fprint(2, "group %d bitblock=%d...", bno/fs->blockspergroup, g->bitblock);
        */
       -        bitpos = (u64int)g->bitblock*fs->blocksize;
       +        bitblock = g->bitblock;
       +        bitpos = (u64int)bitblock*fs->blocksize;
                blockput(gb);
        
                if((bitb = diskread(fs->disk, fs->blocksize, bitpos)) == nil){
       t@@ -127,7 +138,12 @@ ext2blockread(Fsys *fsys, u64int vbno)
                boff = bno%fs->blockspergroup;
                if((bits[boff>>3] & (1<<(boff&7))) == 0){
                        if(debug)
       -                        fprint(2, "block %d not allocated...", bno);
       +                        fprint(2, "block %d not allocated in group %d: bitblock %d/%lld bits[%d] = %#x\n",
       +                                boff, bno/fs->blockspergroup, 
       +                                (int)bitblock,
       +                                bitpos,
       +                                boff>>3,
       +                                bits[boff>>3]);
                        blockput(bitb);
                        return nil;
                }