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


Ignore:
Timestamp:
2018-10-03T15:31:58Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9b0ceb1
Parents:
b209135
Message:

Setting a custom ext4 volume label.

File:
1 edited

Legend:

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

    rb209135 r6ba36a0  
    912912 * @param sb   Superblock
    913913 * @param name New name of the volume
    914  */
    915 void ext4_superblock_set_volume_name(ext4_superblock_t *sb, const char *name)
    916 {
    917         memcpy(sb->volume_name, name, sizeof(sb->volume_name));
     914 * @return EOK on success or error code
     915 */
     916errno_t ext4_superblock_set_volume_name(ext4_superblock_t *sb, const char *name)
     917{
     918        size_t off;
     919        wchar_t ch;
     920        size_t wi;
     921
     922        off = 0;
     923        wi = 0;
     924        while (wi < sizeof(sb->volume_name)) {
     925                ch = str_decode(name, &off, STR_NO_LIMIT);
     926                if (ch == 0)
     927                        break;
     928                if (ch > 255)
     929                        return EINVAL;
     930
     931                sb->volume_name[wi++] = ch;
     932        }
     933
     934        while (wi < sizeof(sb->volume_name))
     935                sb->volume_name[wi++] = '\0';
     936
     937        return EOK;
    918938}
    919939
     
    14751495 * @param dev_bsize Device block size
    14761496 * @param dev_bcnt Device number of blocks
    1477  * @param ver Filesystem version
     1497 * @param cfg Configuration of new file system
    14781498 * @param rsb Place to store pointer to newly allocated superblock
    14791499 * @return EOK on success or error code
    14801500 */
    14811501errno_t ext4_superblock_create(size_t dev_bsize, uint64_t dev_bcnt,
    1482     ext4_cfg_ver_t ver, ext4_superblock_t **rsb)
     1502    ext4_cfg_t *cfg, ext4_superblock_t **rsb)
    14831503{
    14841504        ext4_superblock_t *sb;
     
    15791599        ext4_superblock_set_check_interval(sb, 0);
    15801600        ext4_superblock_set_creator_os(sb, EXT4_SUPERBLOCK_OS_LINUX);
    1581         if (ver >= extver_ext2)
     1601        if (cfg->version >= extver_ext2)
    15821602                ext4_superblock_set_rev_level(sb, EXT4_DYNAMIC_REV);
    15831603        else
     
    15861606        ext4_superblock_set_def_resgid(sb, 0);
    15871607
    1588         if (ver >= extver_ext2) {
     1608        if (cfg->version >= extver_ext2) {
    15891609                /* Dynamic rev */
    15901610                ext4_superblock_set_first_inode(sb, EXT4_REV0_FIRST_INO);
     
    15961616
    15971617                ext4_superblock_set_uuid(sb, &uuid);
    1598                 /* 16-byte Latin-1 string padded with null characters */
    1599                 ext4_superblock_set_volume_name(sb, "HelenOS-Ext4\0\0\0\0");
     1618
     1619                rc = ext4_superblock_set_volume_name(sb, cfg->volume_name);
     1620                if (rc != EOK)
     1621                        goto error;
     1622
    16001623                /* 64-byte Latin-1 string padded with null characters */
    16011624                ext4_superblock_set_last_mounted(sb,
Note: See TracChangeset for help on using the changeset viewer.