Changeset ae1ae27 in mainline for uspace/app/mkminix/mkminix.c


Ignore:
Timestamp:
2011-03-06T20:32:51Z (13 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e03a733
Parents:
9cfe0d5
Message:

Fix incorrect bitmaps size calculation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/mkminix/mkminix.c

    r9cfe0d5 rae1ae27  
    5555#define USED    1
    5656
     57#define UPPER(n, size) (((n) / (size)) + (((n) % (size)) != 0))
     58
    5759typedef enum {
    5860        HELP_SHORT,
     
    268270
    269271        /*Compute inode bitmap size in blocks*/
    270         sb->s_ibmap_blocks = 1 + (sb->s_ninodes / (MFS_BLOCKSIZE * 8));
     272        sb->s_ibmap_blocks = UPPER(sb->s_ninodes, MFS_BLOCKSIZE * 8);
    271273
    272274        /*Compute zone bitmap size in blocks*/
    273275        if (fs_version == 1)
    274                 sb->s_zbmap_blocks = 1 + (sb->s_nzones / (MFS_BLOCKSIZE * 8));
     276                sb->s_zbmap_blocks = UPPER(sb->s_nzones, MFS_BLOCKSIZE * 8);
    275277        else
    276                 sb->s_zbmap_blocks = 1 + (sb->s_nzones2 / (MFS_BLOCKSIZE * 8));
     278                sb->s_zbmap_blocks = UPPER(sb->s_nzones2, MFS_BLOCKSIZE * 8);
    277279
    278280        /*Compute first data zone position*/
    279         sb->s_first_data_zone = 2 + sb->s_zbmap_blocks + sb->s_ibmap_blocks;
    280         unsigned long ninodes_blocks = 1 + (sb->s_ninodes / (fs_version == 1 ?
     281        unsigned long ninodes_blocks = sb->s_ninodes / (fs_version == 1 ?
    281282                                                        V1_INODES_PER_BLOCK :
    282                                                         V2_INODES_PER_BLOCK));
    283         sb->s_first_data_zone += ninodes_blocks;
     283                                                        V2_INODES_PER_BLOCK);
     284        sb->s_first_data_zone = 2 + ninodes_blocks +
     285                                sb->s_zbmap_blocks + sb->s_ibmap_blocks;
     286
     287        /*Set log2 of zone to block ratio to zero*/
    284288        sb->s_log2_zone_size = 0;
     289
    285290        /*Superblock is now ready to be written on disk*/
    286291        printf(NAME ": %d inodes\n", sb->s_ninodes);
    287292        printf(NAME ": %d zones\n", sb->s_nzones2);
    288         printf(NAME ": %d first data zone\n", sb->s_first_data_zone);
     293        printf(NAME ": inode table blocks = %ld\n", ninodes_blocks);
     294        printf(NAME ": first data zone = %d\n", sb->s_first_data_zone);
    289295}
    290296
Note: See TracChangeset for help on using the changeset viewer.