/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _EXT4_UTILS_EXT4_SB_H_
#define _EXT4_UTILS_EXT4_SB_H_

#include "ext4_kernel_headers.h"

#define EXT4_SUPER_MAGIC 0xEF53

#ifdef __cplusplus
extern "C" {
#endif

#include <stdbool.h>

struct fs_info {
	int64_t len;	/* If set to 0, ask the block device for the size,
			 * if less than 0, reserve that much space at the
			 * end of the partition, else use the size given. */
	uint32_t block_size;
	uint32_t blocks_per_group;
	uint32_t inodes_per_group;
	uint32_t inode_size;
	uint32_t inodes;
	uint32_t journal_blocks;
	uint16_t feat_ro_compat;
	uint16_t feat_compat;
	uint16_t feat_incompat;
	uint32_t bg_desc_reserve_blocks;
	const char *label;
	uint8_t no_journal;
	bool block_device;	/* target fd is a block device? */
};

int ext4_parse_sb(struct ext4_super_block *sb, struct fs_info *info);

#ifdef __cplusplus
}
#endif

#endif
