commit - df1ee4e1af9340a8207535c5009ec289bf1ecda1
commit + d29f5ece8b534180076e2859dcc014b3c36b00cf
blob - afd952222c6cba995ea02827ae16aa7015b70be7
blob + b55f1eb3dadc4d18291f14212b1d1b77af23ffac
--- src/libdiskfs/ext2.c
+++ src/libdiskfs/ext2.c
/ super.blockspergroup;
fs->inospergroup = super.inospergroup;
fs->blockspergroup = super.blockspergroup;
- fs->inosperblock = fs->blocksize / InodeSize;
+ if(super.revlevel >= 1)
+ fs->inosize = super.inosize;
+ else
+ fs->inosize = 128;
+ fs->inosperblock = fs->blocksize / fs->inosize;
if(fs->blocksize == SBOFF)
fs->groupaddr = 2;
else
addr = g.inodeaddr + ioff/fs->inosperblock;
if((b = diskread(fs->disk, fs->blocksize, (u64int)addr*fs->blocksize)) == nil)
return Nfs3ErrIo;
- parseinode(ino, b->data+InodeSize*(ioff%fs->inosperblock));
+ parseinode(ino, b->data+fs->inosize*(ioff%fs->inosperblock));
blockput(b);
return Nfs3Ok;
}
s->revlevel = l32(p+76);
s->defresuid = l16(p+80);
s->defresgid = l16(p+82);
- /* 940 byte reserved */
+ s->firstino = l32(p+84);
+ s->inosize = l32(p+88);
+ s->blockgroupnr = l16(p+60);
+ /* 932 byte reserved */
}
blob - 6109974d2b53a7571dd69fd8d19f561d44bcdaf9
blob + 7ddd400a94457930b7e37d45a6a32d297edb3bb6
--- src/libdiskfs/ext2.h
+++ src/libdiskfs/ext2.h
u32int revlevel; /* Revision level */
u16int defresuid; /* Default uid for reserved blocks */
u16int defresgid; /* Default gid for reserved blocks */
- u32int reserved[235]; /* Padding to the end of the block */
+
+ /* the following are only available with revlevel = 1 */
+ u32int firstino; /* First non-reserved inode */
+ u16int inosize; /* size of inode structure */
+ u16int blockgroupnr; /* block group # of this super block */
+ u32int reserved[233]; /* Padding to the end of the block */
};
/*
u32int diracl; /* Directory ACL or high size bits */
u32int faddr; /* Fragment address */
};
-enum
-{
- InodeSize = 128
-};
/*
* Directory entry
uint inospergroup;
uint blockspergroup;
uint inosperblock;
+ uint inosize;
uint groupaddr;
uint descperblock;
uint firstblock;