summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/ext4_fs.h26
-rw-r--r--include/linux/ext4_fs_i.h6
2 files changed, 31 insertions, 1 deletions
diff --git a/include/linux/ext4_fs.h b/include/linux/ext4_fs.h
index b61181aad..e952c6d 100644
--- a/include/linux/ext4_fs.h
+++ b/include/linux/ext4_fs.h
@@ -17,6 +17,7 @@
#define _LINUX_EXT4_FS_H
#include <linux/types.h>
+#include <linux/blkdev.h>
#include <linux/magic.h>
/*
@@ -750,6 +751,27 @@ ext4_group_first_block_no(struct super_block *sb, unsigned long group_no)
#define ERR_BAD_DX_DIR -75000
/*
+ * This function calculate the block group number and offset,
+ * given a block number
+ */
+
+static inline void ext4_get_group_no_and_offset(struct super_block * sb,
+ ext4_fsblk_t blocknr, unsigned long* blockgrpp,
+ ext4_grpblk_t *offsetp)
+{
+ struct ext4_super_block *es = EXT4_SB(sb)->s_es;
+ ext4_grpblk_t offset;
+
+ blocknr = blocknr - le32_to_cpu(es->s_first_data_block);
+ offset = sector_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb));
+ if (offsetp)
+ *offsetp = offset;
+ if (blockgrpp)
+ *blockgrpp = blocknr;
+
+}
+
+/*
* Function prototypes
*/
@@ -762,6 +784,10 @@ ext4_group_first_block_no(struct super_block *sb, unsigned long group_no)
# define NORET_AND noreturn,
/* balloc.c */
+extern unsigned int ext4_block_group(struct super_block *sb,
+ ext4_fsblk_t blocknr);
+extern ext4_grpblk_t ext4_block_group_offset(struct super_block *sb,
+ ext4_fsblk_t blocknr);
extern int ext4_bg_has_super(struct super_block *sb, int group);
extern unsigned long ext4_bg_num_gdb(struct super_block *sb, int group);
extern ext4_fsblk_t ext4_new_block (handle_t *handle, struct inode *inode,
diff --git a/include/linux/ext4_fs_i.h b/include/linux/ext4_fs_i.h
index 40ce04a..b2ccd98 100644
--- a/include/linux/ext4_fs_i.h
+++ b/include/linux/ext4_fs_i.h
@@ -25,9 +25,13 @@
typedef int ext4_grpblk_t;
/* data type for filesystem-wide blocks number */
-typedef unsigned long ext4_fsblk_t;
+typedef sector_t ext4_fsblk_t;
+#if BITS_PER_LONG == 64
#define E3FSBLK "%lu"
+#else
+#define E3FSBLK "%llu"
+#endif
struct ext4_reserve_window {
ext4_fsblk_t _rsv_start; /* First byte reserved */
OpenPOWER on IntegriCloud