Fixed 2 bugs:
- Superblock was being looked for in the wrong place for blocksizes larger than 1K. - Fixed arithmetic on blocks to correctly determine block number to get next without overflowing 32-bit arithmetic on moderately large hard disks.
This commit is contained in:
parent
4080247fe9
commit
acd07871bc
1 changed files with 5 additions and 3 deletions
|
@ -252,7 +252,7 @@ ext2_rdfsb (int fsblock, int buffer) {
|
|||
#ifdef E2DEBUG
|
||||
printf("fsblock %d buffer %d\n", fsblock, buffer);
|
||||
#endif /* E2DEBUG */
|
||||
return devread(fsblock * EXT2_BLOCK_SIZE(SUPERBLOCK) / DEV_BSIZE, 0,
|
||||
return devread(fsblock * (EXT2_BLOCK_SIZE(SUPERBLOCK) / DEV_BSIZE), 0,
|
||||
EXT2_BLOCK_SIZE(SUPERBLOCK), (int)buffer);
|
||||
}
|
||||
|
||||
|
@ -388,7 +388,7 @@ ext2fs_read(int addr, int len)
|
|||
debug_fs_func = debug_fs;
|
||||
#endif /* NO_FANCY_STUFF */
|
||||
|
||||
devread(map * EXT2_BLOCK_SIZE(SUPERBLOCK) / DEV_BSIZE,
|
||||
devread(map * (EXT2_BLOCK_SIZE(SUPERBLOCK) / DEV_BSIZE),
|
||||
offset, size, addr);
|
||||
|
||||
#ifndef NO_FANCY_STUFF
|
||||
|
@ -483,7 +483,9 @@ ext2fs_dir(char *dirname)
|
|||
EXT2_DESC_PER_BLOCK(SUPERBLOCK));
|
||||
printf("group_id=%d group_desc=%d desc=%d\n", group_id, group_desc, desc);
|
||||
#endif /* E2DEBUG */
|
||||
if (!ext2_rdfsb((WHICH_SUPER + group_desc + 1), (int)GROUP_DESC)) {
|
||||
if (!ext2_rdfsb(
|
||||
(WHICH_SUPER + group_desc + SUPERBLOCK->s_first_data_block),
|
||||
(int)GROUP_DESC)) {
|
||||
return 0;
|
||||
}
|
||||
gdp = GROUP_DESC;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue