#include <ext4_types.h>
-/****************************Unstandard access to superblock*****************/
/**@brief Blocks count get stored in superblock.
* @param s superblock descriptor
* @param s superblock descriptor
* @param v feature to check
* @return true if feature is supported*/
-static inline bool ext4_sb_check_feature_compatible(struct ext4_sblock *s,
+static inline bool ext4_sb_has_feature_compatible(struct ext4_sblock *s,
uint32_t v)
{
return to_le32(s->features_compatible) & v;
* @param s superblock descriptor
* @param v feature to check
* @return true if feature is supported*/
-static inline bool ext4_sb_check_feature_incompatible(struct ext4_sblock *s,
+static inline bool ext4_sb_has_feature_incompatible(struct ext4_sblock *s,
uint32_t v)
{
return to_le32(s->features_incompatible) & v;
* @param s superblock descriptor
* @param v flag to check
* @return true if flag is supported*/
-static inline bool ext4_sb_check_read_only(struct ext4_sblock *s, uint32_t v)
+static inline bool ext4_sb_has_feature_read_only(struct ext4_sblock *s,
+ uint32_t v)
{
return to_le32(s->features_read_only) & v;
}
+/**@brief Block group to flex group.
+ * @param s superblock descriptor
+ * @param block_group block group
+ * @return flex group id*/
+static inline uint32_t ext4_sb_bg_to_flex(struct ext4_sblock *s,
+ uint32_t block_group)
+{
+ return block_group >> to_le32(s->log_groups_per_flex);
+}
+
+/**@brief Flex block group size.
+ * @param s superblock descriptor
+ * @return flex bg size*/
+static inline uint32_t ext4_sb_flex_bg_size(struct ext4_sblock *s)
+{
+ return 1 << to_le32(s->log_groups_per_flex);
+}
+
+/**@brief Return first meta block group id.
+ * @param s superblock descriptor
+ * @return first meta_bg id */
+static inline uint32_t ext4_sb_first_meta_bg(struct ext4_sblock *s)
+{
+ return to_le32(s->first_meta_bg);
+}
+
/**************************More complex functions****************************/
/**@brief Returns a block group count.
* @return true if OK*/
bool ext4_sb_check(struct ext4_sblock *s);
+/**@brief Superblock presence in block group.
+ * @param s superblock dsecriptor
+ * @param block_group block group id
+ * @return true if block group has superblock*/
+bool ext4_sb_is_super_in_bg(struct ext4_sblock *s, uint32_t block_group);
+
+
+/**@brief TODO:*/
+uint32_t ext4_bg_num_gdb(struct ext4_sblock *s, uint32_t group);
+
+/**@brief TODO:*/
+uint32_t ext4_num_base_meta_clusters(struct ext4_sblock *s,
+ uint32_t block_group);
#endif /* EXT4_SUPER_H_ */