2 * Copyright (c) 2015 Grzegorz Kostka (kostka.grzegorz@gmail.com)
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 /** @addtogroup lwext4
37 #include "ext4_config.h"
38 #include "ext4_super.h"
39 #include "ext4_mkfs.h"
42 static int ext4_mkfs_sb2info(struct ext4_sblock *sb, struct ext4_mkfs_info *info)
45 if (to_le16(sb->magic) != EXT4_SUPERBLOCK_MAGIC)
48 if ((to_le16(sb->state) & EXT4_SUPERBLOCK_STATE_VALID_FS)
49 != EXT4_SUPERBLOCK_STATE_VALID_FS)
52 info->block_size = 1024 << to_le32(sb->log_block_size);
53 info->blocks_per_group = to_le32(sb->blocks_per_group);
54 info->inodes_per_group = to_le32(sb->inodes_per_group);
55 info->inode_size = to_le16(sb->inode_size);
56 info->inodes = to_le32(sb->inodes_count);
57 info->feat_ro_compat = to_le32(sb->features_read_only);
58 info->feat_compat = to_le32(sb->features_compatible);
59 info->feat_incompat = to_le32(sb->features_incompatible);
60 info->bg_desc_reserve_blocks = to_le16(sb->s_reserved_gdt_blocks);
61 info->label = sb->volume_name;
62 info->len = (uint64_t)info->block_size * ext4_sb_get_blocks_cnt(sb);
68 int ext4_mkfs_read_info(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)
73 ext4_mkfs_sb2info(0, 0);
78 int ext4_mkfs(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)