Changeset 2175178 in mainline for uspace/lib/ext4/src/superblock.c


Ignore:
Timestamp:
2018-10-03T08:34:52Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b209135
Parents:
174156fd
git-author:
Jiri Svoboda <jiri@…> (2018-10-02 21:31:25)
git-committer:
Jiri Svoboda <jiri@…> (2018-10-03 08:34:52)
Message:

Allow creating ext2 dynamic revision. Allow choosing ext filesystem version by mkext4 argument. Fix support for filesystems without filetype feature.

File:
1 edited

Legend:

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

    r174156fd r2175178  
    4545#include <stdlib.h>
    4646#include <time.h>
     47#include "ext4/cfg.h"
    4748#include "ext4/superblock.h"
    4849
     
    14541455 * @param dev_bsize Device block size
    14551456 * @param dev_bcnt Device number of blocks
     1457 * @param ver Filesystem version
    14561458 * @param rsb Place to store pointer to newly allocated superblock
    14571459 * @return EOK on success or error code
    14581460 */
    14591461errno_t ext4_superblock_create(size_t dev_bsize, uint64_t dev_bcnt,
    1460     ext4_superblock_t **rsb)
     1462    ext4_cfg_ver_t ver, ext4_superblock_t **rsb)
    14611463{
    14621464        ext4_superblock_t *sb;
     
    15571559        ext4_superblock_set_check_interval(sb, 0);
    15581560        ext4_superblock_set_creator_os(sb, EXT4_SUPERBLOCK_OS_LINUX);
    1559         ext4_superblock_set_rev_level(sb, EXT4_GOOD_OLD_REV);
     1561        if (ver >= extver_ext2)
     1562                ext4_superblock_set_rev_level(sb, EXT4_DYNAMIC_REV);
     1563        else
     1564                ext4_superblock_set_rev_level(sb, EXT4_GOOD_OLD_REV);
    15601565        ext4_superblock_set_def_resuid(sb, 0);
    15611566        ext4_superblock_set_def_resgid(sb, 0);
     1567
     1568        if (ver >= extver_ext2) {
     1569                /* Dynamic rev */
     1570                ext4_superblock_set_first_inode(sb, EXT4_REV0_FIRST_INO);
     1571                ext4_superblock_set_inode_size(sb, EXT4_REV0_INODE_SIZE);
     1572                ext4_superblock_set_block_group_index(sb, 0); // XXX
     1573                ext4_superblock_set_features_compatible(sb, 0);
     1574                ext4_superblock_set_features_incompatible(sb, 0);
     1575                ext4_superblock_set_features_read_only(sb, 0);
     1576
     1577                ext4_superblock_set_uuid(sb, &uuid);
     1578                /* 16-byte Latin-1 string padded with null characters */
     1579                ext4_superblock_set_volume_name(sb, "HelenOS-Ext4\0\0\0\0");
     1580                /* 64-byte Latin-1 string padded with null characters */
     1581                ext4_superblock_set_last_mounted(sb,
     1582                    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
     1583                    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
     1584                sb->algorithm_usage_bitmap = 0;
     1585        }
    15621586#if 0
    1563         /* Dynamic rev */
    1564         ext4_superblock_set_first_inode(sb, EXT4_REV0_FIRST_INO);
    1565         ext4_superblock_set_inode_size(sb, EXT4_REV0_INODE_SIZE);
    1566         ext4_superblock_set_block_group_index(sb, 0); // XXX
    1567         ext4_superblock_set_features_compatible(sb, 0);
    1568         ext4_superblock_set_features_incompatible(sb, 0);
    1569         ext4_superblock_set_features_read_only(sb, 0);
    1570 
    1571         ext4_superblock_set_uuid(sb, &uuid);
    1572         /* 16-byte Latin-1 string padded with null characters */
    1573         ext4_superblock_set_volume_name(sb, "HelenOS-Ext4\0\0\0\0");
    1574         /* 64-byte Latin-1 string padded with null characters */
    1575         ext4_superblock_set_last_mounted(sb,
    1576             "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
    1577             "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
    1578         sb->algorithm_usage_bitmap = 0;
    1579 
    15801587        /* Journalling */
    15811588        ext4_superblock_set_desc_size(sb, EXT4_MAX_BLOCK_GROUP_DESCRIPTOR_SIZE);
Note: See TracChangeset for help on using the changeset viewer.