FIX: ea_size accounting is not correct after resizing. (2)
[lwext4.git] / lwext4 / ext4_balloc.h
index dc77561328a364ad3b43a80e01cbeeaef4f61315..b3c84885841b281cf1cc5188f2033130d504e5ae 100644 (file)
 #ifndef EXT4_BALLOC_H_
 #define EXT4_BALLOC_H_
 
-#include <ext4_config.h>
-#include <ext4_types.h>
+#include "ext4_config.h"
+#include "ext4_types.h"
 
 #include <stdint.h>
 #include <stdbool.h>
 
+/**@brief Compute number of block group from block address.
+ * @param sb superblock pointer.
+ * @param baddr Absolute address of block.
+ * @return Block group index
+ */
+uint32_t ext4_balloc_get_bgid_of_block(struct ext4_sblock *s,
+                                      uint32_t baddr);
 
-/**@brief      Get first datablock in block group
- * @param      s superblock descriptor
- * @param      bg_ref block group reference
- * @return     block id of the first datablock in block group*/
-uint32_t ext4_balloc_get_first_data_block_in_group(struct ext4_sblock *s,
-         struct ext4_block_group_ref * bg_ref);
+/**@brief Compute the starting block address of a block group
+ * @param sb   superblock pointer.
+ * @param bgid block group index
+ * @return Block address
+ */
+uint32_t ext4_balloc_get_block_of_bgid(struct ext4_sblock *s,
+                                      uint32_t bgid);
 
-/**@brief      Free block from inode.
- * @param      inode_ref inode reference
- * @param      baddr block address
- * @return     standard error code*/
-int    ext4_balloc_free_block(struct ext4_inode_ref *inode_ref,
-        uint32_t baddr);
+/**@brief   Free block from inode.
+ * @param   inode_ref inode reference
+ * @param   baddr block address
+ * @return  standard error code*/
+int ext4_balloc_free_block(struct ext4_inode_ref *inode_ref, uint32_t baddr);
 
-/**@brief      Free blocks from inode.
- * @param      inode_ref inode reference
- * @param      baddr block address
- * @return     standard error code*/
-int    ext4_balloc_free_blocks(struct ext4_inode_ref *inode_ref,
-        uint32_t first, uint32_t count);
+/**@brief   Free blocks from inode.
+ * @param   inode_ref inode reference
+ * @param   baddr block address
+ * @return  standard error code*/
+int ext4_balloc_free_blocks(struct ext4_inode_ref *inode_ref, uint32_t first,
+                           uint32_t count);
 
-/**@brief      Allocate block procedure.
- * @param      inode_ref inode reference
- * @param      baddr allocated block address
- * @return     standard error code*/
-int    ext4_balloc_alloc_block(struct ext4_inode_ref *inode_ref,
-        uint32_t *baddr);
+/**@brief   Allocate block procedure.
+ * @param   inode_ref inode reference
+ * @param   baddr allocated block address
+ * @return  standard error code*/
+int ext4_balloc_alloc_block(struct ext4_inode_ref *inode_ref, uint32_t *baddr);
 
-/**@brief      Try allocate selected block.
- * @param      inode_ref inode reference
- * @param      baddr block address to allocate
- * @param      free if baddr is not allocated
- * @return     standard error code*/
-int    ext4_balloc_try_alloc_block(struct ext4_inode_ref *inode_ref,
-        uint32_t baddr, bool *free);
+/**@brief   Try allocate selected block.
+ * @param   inode_ref inode reference
+ * @param   baddr block address to allocate
+ * @param   free if baddr is not allocated
+ * @return  standard error code*/
+int ext4_balloc_try_alloc_block(struct ext4_inode_ref *inode_ref,
+                               uint32_t baddr, bool *free);
 
 #endif /* EXT4_BALLOC_H_ */
 
 /**
  * @}
  */
-