Add ext4_mkfs module skeleton
[lwext4.git] / lwext4 / ext4_mkfs.c
1 /*
2  * Copyright (c) 2015 Grzegorz Kostka (kostka.grzegorz@gmail.com)
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
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.
16  *
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.
27  */
28
29 /** @addtogroup lwext4
30  * @{
31  */
32 /**
33  * @file  ext4_mkfs.c
34  * @brief
35  */
36
37 #include "ext4_config.h"
38 #include "ext4_super.h"
39 #include "ext4_mkfs.h"
40
41
42 static int ext4_mkfs_sb2info(struct ext4_sblock *sb, struct ext4_mkfs_info *info)
43 {
44
45         if (to_le16(sb->magic) != EXT4_SUPERBLOCK_MAGIC)
46                 return EINVAL;
47
48         if ((to_le16(sb->state) & EXT4_SUPERBLOCK_STATE_VALID_FS)
49                         != EXT4_SUPERBLOCK_STATE_VALID_FS)
50                 return EINVAL;
51
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);
63
64         return EOK;
65 }
66
67
68 int ext4_mkfs_read_info(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)
69 {
70         (void)bd;
71         (void)info;
72
73         ext4_mkfs_sb2info(0, 0);
74
75         return EOK;
76 }
77
78 int ext4_mkfs(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)
79 {
80         (void)bd;
81         (void)info;
82         return EOK;
83 }
84
85 /**
86  * @}
87  */