another -90 bytes. That #define is **evil**
This commit is contained in:
parent
66b86c6902
commit
016a82e279
@ -503,8 +503,10 @@ static void make_root_inode2(void)
|
|||||||
|
|
||||||
static void setup_tables(void)
|
static void setup_tables(void)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
unsigned long inodes;
|
unsigned long inodes;
|
||||||
|
unsigned norm_firstzone;
|
||||||
|
uint16_t sb_zmaps;
|
||||||
|
int i;
|
||||||
|
|
||||||
memset(super_block_buffer, 0, BLOCK_SIZE);
|
memset(super_block_buffer, 0, BLOCK_SIZE);
|
||||||
memset(boot_block_buffer, 0, 512);
|
memset(boot_block_buffer, 0, 512);
|
||||||
@ -539,19 +541,21 @@ static void setup_tables(void)
|
|||||||
* dd if=/dev/zero of=test.fs count=10 bs=1024
|
* dd if=/dev/zero of=test.fs count=10 bs=1024
|
||||||
* mkfs.minix -i 200 test.fs
|
* mkfs.minix -i 200 test.fs
|
||||||
*/
|
*/
|
||||||
/* This code is not insane: NORM_FIRSTZONE is not a constant, */
|
/* This code is not insane: NORM_FIRSTZONE is not a constant,
|
||||||
/* it uses previous value of SB_ZMAPS inside */
|
* it is calculated from SB_INODES, SB_IMAPS and SB_ZMAPS */
|
||||||
i = 999;
|
i = 999;
|
||||||
SB_ZMAPS = 0;
|
SB_ZMAPS = 0;
|
||||||
do {
|
do {
|
||||||
uint16_t t = div_roundup(total_blocks - NORM_FIRSTZONE + 1, BITS_PER_BLOCK);
|
norm_firstzone = NORM_FIRSTZONE;
|
||||||
if (SB_ZMAPS == t) goto got_it;
|
sb_zmaps = div_roundup(total_blocks - norm_firstzone + 1, BITS_PER_BLOCK);
|
||||||
SB_ZMAPS = t;
|
if (SB_ZMAPS == sb_zmaps) goto got_it;
|
||||||
|
SB_ZMAPS = sb_zmaps;
|
||||||
|
/* new SB_ZMAPS, need to recalc NORM_FIRSTZONE */
|
||||||
} while (--i);
|
} while (--i);
|
||||||
bb_error_msg_and_die("incompatible size/inode count, try different -i N");
|
bb_error_msg_and_die("incompatible size/inode count, try different -i N");
|
||||||
got_it:
|
got_it:
|
||||||
|
|
||||||
SB_FIRSTZONE = NORM_FIRSTZONE;
|
SB_FIRSTZONE = norm_firstzone;
|
||||||
inode_map = xmalloc(SB_IMAPS * BLOCK_SIZE);
|
inode_map = xmalloc(SB_IMAPS * BLOCK_SIZE);
|
||||||
zone_map = xmalloc(SB_ZMAPS * BLOCK_SIZE);
|
zone_map = xmalloc(SB_ZMAPS * BLOCK_SIZE);
|
||||||
memset(inode_map, 0xff, SB_IMAPS * BLOCK_SIZE);
|
memset(inode_map, 0xff, SB_IMAPS * BLOCK_SIZE);
|
||||||
@ -563,7 +567,7 @@ static void setup_tables(void)
|
|||||||
inode_buffer = xzalloc(INODE_BUFFER_SIZE);
|
inode_buffer = xzalloc(INODE_BUFFER_SIZE);
|
||||||
printf("%ld inodes\n", (long)SB_INODES);
|
printf("%ld inodes\n", (long)SB_INODES);
|
||||||
printf("%ld blocks\n", (long)SB_ZONES);
|
printf("%ld blocks\n", (long)SB_ZONES);
|
||||||
printf("Firstdatazone=%ld (%ld)\n", (long)SB_FIRSTZONE, (long)NORM_FIRSTZONE);
|
printf("Firstdatazone=%ld (%ld)\n", (long)SB_FIRSTZONE, (long)norm_firstzone);
|
||||||
printf("Zonesize=%d\n", BLOCK_SIZE << SB_ZONE_SIZE);
|
printf("Zonesize=%d\n", BLOCK_SIZE << SB_ZONE_SIZE);
|
||||||
printf("Maxsize=%ld\n", (long)SB_MAXSIZE);
|
printf("Maxsize=%ld\n", (long)SB_MAXSIZE);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user