diff options
Diffstat (limited to 'fs/ext4/ext4_extents.h')
| -rw-r--r-- | fs/ext4/ext4_extents.h | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/fs/ext4/ext4_extents.h b/fs/ext4/ext4_extents.h index bdb6ce7e2eb4..28ce70fd9cd0 100644 --- a/fs/ext4/ext4_extents.h +++ b/fs/ext4/ext4_extents.h | |||
| @@ -225,11 +225,60 @@ static inline void ext4_ext_mark_initialized(struct ext4_extent *ext) | |||
| 225 | ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext)); | 225 | ext->ee_len = cpu_to_le16(ext4_ext_get_actual_len(ext)); |
| 226 | } | 226 | } |
| 227 | 227 | ||
| 228 | /* | ||
| 229 | * ext4_ext_pblock: | ||
| 230 | * combine low and high parts of physical block number into ext4_fsblk_t | ||
| 231 | */ | ||
| 232 | static inline ext4_fsblk_t ext4_ext_pblock(struct ext4_extent *ex) | ||
| 233 | { | ||
| 234 | ext4_fsblk_t block; | ||
| 235 | |||
| 236 | block = le32_to_cpu(ex->ee_start_lo); | ||
| 237 | block |= ((ext4_fsblk_t) le16_to_cpu(ex->ee_start_hi) << 31) << 1; | ||
| 238 | return block; | ||
| 239 | } | ||
| 240 | |||
| 241 | /* | ||
| 242 | * ext4_idx_pblock: | ||
| 243 | * combine low and high parts of a leaf physical block number into ext4_fsblk_t | ||
| 244 | */ | ||
| 245 | static inline ext4_fsblk_t ext4_idx_pblock(struct ext4_extent_idx *ix) | ||
| 246 | { | ||
| 247 | ext4_fsblk_t block; | ||
| 248 | |||
| 249 | block = le32_to_cpu(ix->ei_leaf_lo); | ||
| 250 | block |= ((ext4_fsblk_t) le16_to_cpu(ix->ei_leaf_hi) << 31) << 1; | ||
| 251 | return block; | ||
| 252 | } | ||
| 253 | |||
| 254 | /* | ||
| 255 | * ext4_ext_store_pblock: | ||
| 256 | * stores a large physical block number into an extent struct, | ||
| 257 | * breaking it into parts | ||
| 258 | */ | ||
| 259 | static inline void ext4_ext_store_pblock(struct ext4_extent *ex, | ||
| 260 | ext4_fsblk_t pb) | ||
| 261 | { | ||
| 262 | ex->ee_start_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 263 | ex->ee_start_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & | ||
| 264 | 0xffff); | ||
| 265 | } | ||
| 266 | |||
| 267 | /* | ||
| 268 | * ext4_idx_store_pblock: | ||
| 269 | * stores a large physical block number into an index struct, | ||
| 270 | * breaking it into parts | ||
| 271 | */ | ||
| 272 | static inline void ext4_idx_store_pblock(struct ext4_extent_idx *ix, | ||
| 273 | ext4_fsblk_t pb) | ||
| 274 | { | ||
| 275 | ix->ei_leaf_lo = cpu_to_le32((unsigned long) (pb & 0xffffffff)); | ||
| 276 | ix->ei_leaf_hi = cpu_to_le16((unsigned long) ((pb >> 31) >> 1) & | ||
| 277 | 0xffff); | ||
| 278 | } | ||
| 279 | |||
| 228 | extern int ext4_ext_calc_metadata_amount(struct inode *inode, | 280 | extern int ext4_ext_calc_metadata_amount(struct inode *inode, |
| 229 | sector_t lblocks); | 281 | sector_t lblocks); |
| 230 | extern ext4_fsblk_t ext_pblock(struct ext4_extent *ex); | ||
| 231 | extern ext4_fsblk_t idx_pblock(struct ext4_extent_idx *); | ||
| 232 | extern void ext4_ext_store_pblock(struct ext4_extent *, ext4_fsblk_t); | ||
| 233 | extern int ext4_extent_tree_init(handle_t *, struct inode *); | 282 | extern int ext4_extent_tree_init(handle_t *, struct inode *); |
| 234 | extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, | 283 | extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, |
| 235 | int num, | 284 | int num, |
| @@ -237,19 +286,9 @@ extern int ext4_ext_calc_credits_for_single_extent(struct inode *inode, | |||
| 237 | extern int ext4_can_extents_be_merged(struct inode *inode, | 286 | extern int ext4_can_extents_be_merged(struct inode *inode, |
| 238 | struct ext4_extent *ex1, | 287 | struct ext4_extent *ex1, |
| 239 | struct ext4_extent *ex2); | 288 | struct ext4_extent *ex2); |
| 240 | extern int ext4_ext_try_to_merge(struct inode *inode, | ||
| 241 | struct ext4_ext_path *path, | ||
| 242 | struct ext4_extent *); | ||
| 243 | extern unsigned int ext4_ext_check_overlap(struct inode *, struct ext4_extent *, struct ext4_ext_path *); | ||
| 244 | extern int ext4_ext_insert_extent(handle_t *, struct inode *, struct ext4_ext_path *, struct ext4_extent *, int); | 289 | extern int ext4_ext_insert_extent(handle_t *, struct inode *, struct ext4_ext_path *, struct ext4_extent *, int); |
| 245 | extern int ext4_ext_walk_space(struct inode *, ext4_lblk_t, ext4_lblk_t, | ||
| 246 | ext_prepare_callback, void *); | ||
| 247 | extern struct ext4_ext_path *ext4_ext_find_extent(struct inode *, ext4_lblk_t, | 290 | extern struct ext4_ext_path *ext4_ext_find_extent(struct inode *, ext4_lblk_t, |
| 248 | struct ext4_ext_path *); | 291 | struct ext4_ext_path *); |
| 249 | extern int ext4_ext_search_left(struct inode *, struct ext4_ext_path *, | ||
| 250 | ext4_lblk_t *, ext4_fsblk_t *); | ||
| 251 | extern int ext4_ext_search_right(struct inode *, struct ext4_ext_path *, | ||
| 252 | ext4_lblk_t *, ext4_fsblk_t *); | ||
| 253 | extern void ext4_ext_drop_refs(struct ext4_ext_path *); | 292 | extern void ext4_ext_drop_refs(struct ext4_ext_path *); |
| 254 | extern int ext4_ext_check_inode(struct inode *inode); | 293 | extern int ext4_ext_check_inode(struct inode *inode); |
| 255 | #endif /* _EXT4_EXTENTS */ | 294 | #endif /* _EXT4_EXTENTS */ |
