Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/src/superblock.c

    r6ea5e7a r6ba36a0  
    13151315            ext4_superblock_get_blocks_per_group(sb);
    13161316        uint64_t total_blocks =
    1317             ext4_superblock_get_blocks_count(sb);
    1318         uint32_t first_block =
    1319             ext4_superblock_get_first_data_block(sb);
     1317            ext4_superblock_get_blocks_count(sb) - 1;
    13201318
    13211319        if (bgid < block_group_count - 1)
    13221320                return blocks_per_group;
    13231321        else
    1324                 return (total_blocks - ((block_group_count - 1) * blocks_per_group)) - first_block;
     1322                return (total_blocks - ((block_group_count - 1) * blocks_per_group));
    13251323}
    13261324
     
    13941392{
    13951393        sb->reserved_gdt_blocks = host2uint32_t_le(n);
    1396 }
    1397 
    1398 /** Get the size of the flex groups
    1399  *
    1400  * @param sb    Pointer to the superblock
    1401  *
    1402  * @return      Size of the flex groups
    1403  */
    1404 uint32_t ext4_superblock_get_flex_group_size(ext4_superblock_t *sb)
    1405 {
    1406         return 2 << sb->log_groups_per_flex;
    14071394}
    14081395
     
    14781465                 */
    14791466
     1467                if (idx == 0 && block_size == 1024) {
     1468                        /*
     1469                         * Special case for first group were the boot block
     1470                         * resides
     1471                         */
     1472                        r++;
     1473                }
     1474
    14801475                /* This accounts for the superblock */
    14811476                r++;
     
    15101505        uuid_t uuid;
    15111506        uint32_t cur_ts;
    1512         uint64_t first_block = 0;
     1507        uint64_t first_block;
    15131508        uint64_t fs_blocks;
    15141509        uint32_t blocks_count;
     
    15231518        uint32_t idx;
    15241519        size_t fs_bsize;
    1525         size_t fs_bsize_log;
    15261520        errno_t rc;
    15271521        struct timespec ts;
     
    15391533        cur_ts = ts.tv_sec;
    15401534
    1541         fs_bsize = cfg->bsize;
    1542         switch (fs_bsize) {
    1543         case 1024:
    1544                 first_block = 1;
    1545                 fs_bsize_log = 0;
    1546                 blocks_group = 8192;
    1547                 break;
    1548         case 2048:
    1549                 fs_bsize_log = 1;
    1550                 blocks_group = 8192 * 2;
    1551                 break;
    1552         case 4096:
    1553                 fs_bsize_log = 2;
    1554                 blocks_group = 8192 * 4;
    1555                 break;
    1556         default:
    1557                 return ENOTSUP;
    1558         }
     1535        fs_bsize = 1024;
     1536        first_block = 1; /* 1 for 1k block size, 0 otherwise */
    15591537
    15601538        if (fs_bsize % dev_bsize == 0) {
     
    15651543                fs_blocks = dev_bcnt * (dev_bsize / fs_bsize);
    15661544        }
     1545
     1546        /* FS blocks per group */
     1547        blocks_group = 8 * fs_bsize;
    15671548
    15681549        /* Inodes per group */
     
    16001581        ext4_superblock_set_free_inodes_count(sb, inodes_count);
    16011582        ext4_superblock_set_first_data_block(sb, first_block);
    1602         ext4_superblock_set_log_block_size(sb, fs_bsize_log);
     1583        /* Block size will be 1024 bytes */
     1584        ext4_superblock_set_log_block_size(sb, 0);
    16031585        /* Fragment size should be equal to block size */
    1604         ext4_superblock_set_log_frag_size(sb, fs_bsize_log);
     1586        ext4_superblock_set_log_frag_size(sb, 0);
    16051587        ext4_superblock_set_blocks_per_group(sb, blocks_group);
    16061588        /* Should be the same as blocks per group. */
     
    16521634        /* Compute free blocks */
    16531635        free_blocks = blocks_count;
     1636        ++free_blocks; // XXX Why?
    16541637        for (idx = 0; idx < ngroups; idx++) {
    16551638                free_blocks -= ext4_superblock_get_group_backup_blocks(sb, idx);
Note: See TracChangeset for help on using the changeset viewer.