diff options
| author | Mingming Cao <cmm@us.ibm.com> | 2006-10-11 04:21:05 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-11 14:14:16 -0400 |
| commit | 3a5b2ecdd1fa63a8f25bd769223bc1c2564ce45d (patch) | |
| tree | dc80fdde9ed01e77ef0ed6fdef7573d303bd07db /include | |
| parent | a86c61812637c7dd0c57e29880cffd477b62f2e7 (diff) | |
[PATCH] ext4: switch fsblk to sector_t
Redefine ext3 in-kernel filesystem block type (ext3_fsblk_t) from unsigned
long to sector_t, to allow kernel to handle >32 bit ext3 blocks.
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: Dave Kleikamp <shaggy@austin.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/ext4_fs.h | 26 | ||||
| -rw-r--r-- | include/linux/ext4_fs_i.h | 6 |
2 files changed, 31 insertions, 1 deletions
diff --git a/include/linux/ext4_fs.h b/include/linux/ext4_fs.h index b61181aadcbb..e952c6db9690 100644 --- a/include/linux/ext4_fs.h +++ b/include/linux/ext4_fs.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #define _LINUX_EXT4_FS_H | 17 | #define _LINUX_EXT4_FS_H |
| 18 | 18 | ||
| 19 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 20 | #include <linux/blkdev.h> | ||
| 20 | #include <linux/magic.h> | 21 | #include <linux/magic.h> |
| 21 | 22 | ||
| 22 | /* | 23 | /* |
| @@ -750,6 +751,27 @@ ext4_group_first_block_no(struct super_block *sb, unsigned long group_no) | |||
| 750 | #define ERR_BAD_DX_DIR -75000 | 751 | #define ERR_BAD_DX_DIR -75000 |
| 751 | 752 | ||
| 752 | /* | 753 | /* |
| 754 | * This function calculate the block group number and offset, | ||
| 755 | * given a block number | ||
| 756 | */ | ||
| 757 | |||
| 758 | static inline void ext4_get_group_no_and_offset(struct super_block * sb, | ||
| 759 | ext4_fsblk_t blocknr, unsigned long* blockgrpp, | ||
| 760 | ext4_grpblk_t *offsetp) | ||
| 761 | { | ||
| 762 | struct ext4_super_block *es = EXT4_SB(sb)->s_es; | ||
| 763 | ext4_grpblk_t offset; | ||
| 764 | |||
| 765 | blocknr = blocknr - le32_to_cpu(es->s_first_data_block); | ||
| 766 | offset = sector_div(blocknr, EXT4_BLOCKS_PER_GROUP(sb)); | ||
| 767 | if (offsetp) | ||
| 768 | *offsetp = offset; | ||
| 769 | if (blockgrpp) | ||
| 770 | *blockgrpp = blocknr; | ||
| 771 | |||
| 772 | } | ||
| 773 | |||
| 774 | /* | ||
| 753 | * Function prototypes | 775 | * Function prototypes |
| 754 | */ | 776 | */ |
| 755 | 777 | ||
| @@ -762,6 +784,10 @@ ext4_group_first_block_no(struct super_block *sb, unsigned long group_no) | |||
| 762 | # define NORET_AND noreturn, | 784 | # define NORET_AND noreturn, |
| 763 | 785 | ||
| 764 | /* balloc.c */ | 786 | /* balloc.c */ |
| 787 | extern unsigned int ext4_block_group(struct super_block *sb, | ||
| 788 | ext4_fsblk_t blocknr); | ||
| 789 | extern ext4_grpblk_t ext4_block_group_offset(struct super_block *sb, | ||
| 790 | ext4_fsblk_t blocknr); | ||
| 765 | extern int ext4_bg_has_super(struct super_block *sb, int group); | 791 | extern int ext4_bg_has_super(struct super_block *sb, int group); |
| 766 | extern unsigned long ext4_bg_num_gdb(struct super_block *sb, int group); | 792 | extern unsigned long ext4_bg_num_gdb(struct super_block *sb, int group); |
| 767 | extern ext4_fsblk_t ext4_new_block (handle_t *handle, struct inode *inode, | 793 | 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 40ce04a52b04..b2ccd9876bd1 100644 --- a/include/linux/ext4_fs_i.h +++ b/include/linux/ext4_fs_i.h | |||
| @@ -25,9 +25,13 @@ | |||
| 25 | typedef int ext4_grpblk_t; | 25 | typedef int ext4_grpblk_t; |
| 26 | 26 | ||
| 27 | /* data type for filesystem-wide blocks number */ | 27 | /* data type for filesystem-wide blocks number */ |
| 28 | typedef unsigned long ext4_fsblk_t; | 28 | typedef sector_t ext4_fsblk_t; |
| 29 | 29 | ||
| 30 | #if BITS_PER_LONG == 64 | ||
| 30 | #define E3FSBLK "%lu" | 31 | #define E3FSBLK "%lu" |
| 32 | #else | ||
| 33 | #define E3FSBLK "%llu" | ||
| 34 | #endif | ||
| 31 | 35 | ||
| 32 | struct ext4_reserve_window { | 36 | struct ext4_reserve_window { |
| 33 | ext4_fsblk_t _rsv_start; /* First byte reserved */ | 37 | ext4_fsblk_t _rsv_start; /* First byte reserved */ |
