ref: 9d667e4f5f732c994118fcd6303e6ff21c6669de
parent: bba14d471c3c15ed98726df5e05f9621aec110fc
author: gkostka <[email protected]>
date: Sun Oct 11 06:48:31 EDT 2015
Add ext4_mkfs module skeleton
--- /dev/null
+++ b/lwext4/ext4_mkfs.c
@@ -1,0 +1,87 @@
+/*
+ * Copyright (c) 2015 Grzegorz Kostka ([email protected])
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup lwext4
+ * @{
+ */
+/**
+ * @file ext4_mkfs.c
+ * @brief
+ */
+
+#include "ext4_config.h"
+#include "ext4_super.h"
+#include "ext4_mkfs.h"
+
+
+static int ext4_mkfs_sb2info(struct ext4_sblock *sb, struct ext4_mkfs_info *info)
+{
+
+ if (to_le16(sb->magic) != EXT4_SUPERBLOCK_MAGIC)
+ return EINVAL;
+
+ if ((to_le16(sb->state) & EXT4_SUPERBLOCK_STATE_VALID_FS)
+ != EXT4_SUPERBLOCK_STATE_VALID_FS)
+ return EINVAL;
+
+ info->block_size = 1024 << to_le32(sb->log_block_size);
+ info->blocks_per_group = to_le32(sb->blocks_per_group);
+ info->inodes_per_group = to_le32(sb->inodes_per_group);
+ info->inode_size = to_le16(sb->inode_size);
+ info->inodes = to_le32(sb->inodes_count);
+ info->feat_ro_compat = to_le32(sb->features_read_only);
+ info->feat_compat = to_le32(sb->features_compatible);
+ info->feat_incompat = to_le32(sb->features_incompatible);
+ info->bg_desc_reserve_blocks = to_le16(sb->s_reserved_gdt_blocks);
+ info->label = sb->volume_name;
+ info->len = (uint64_t)info->block_size * ext4_sb_get_blocks_cnt(sb);
+
+ return EOK;
+}
+
+
+int ext4_mkfs_read_info(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)
+{
+ (void)bd;
+ (void)info;
+
+ ext4_mkfs_sb2info(0, 0);
+
+ return EOK;
+}
+
+int ext4_mkfs(struct ext4_blockdev *bd, struct ext4_mkfs_info *info)
+{
+ (void)bd;
+ (void)info;
+ return EOK;
+}
+
+/**
+ * @}
+ */
--- /dev/null
+++ b/lwext4/ext4_mkfs.h
@@ -1,0 +1,70 @@
+/*
+ * Copyright (c) 2015 Grzegorz Kostka ([email protected])
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup lwext4
+ * @{
+ */
+/**
+ * @file ext4_mkfs.h
+ * @brief
+ */
+
+#ifndef EXT4_MKFS_H_
+#define EXT4_MKFS_H_
+
+#include "ext4_config.h"
+#include "ext4_types.h"
+#include "ext4_blockdev.h"
+
+#include <stdbool.h>
+#include <stdint.h>
+
+
+struct ext4_mkfs_info {
+ int64_t len;
+ uint32_t block_size;
+ uint32_t blocks_per_group;
+ uint32_t inodes_per_group;
+ uint32_t inode_size;
+ uint32_t inodes;
+ uint16_t feat_ro_compat;
+ uint16_t feat_compat;
+ uint16_t feat_incompat;
+ uint32_t bg_desc_reserve_blocks;
+ const char *label;
+};
+
+int ext4_mkfs_read_info(struct ext4_blockdev *bd, struct ext4_mkfs_info *info);
+
+int ext4_mkfs(struct ext4_blockdev *bd, struct ext4_mkfs_info *info);
+
+#endif /* EXT4_MKFS_H_ */
+
+/**
+ * @}
+ */