diff options
Diffstat (limited to 'fs/ext4/extents_status.h')
| -rw-r--r-- | fs/ext4/extents_status.h | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/fs/ext4/extents_status.h b/fs/ext4/extents_status.h new file mode 100644 index 000000000000..077f82db092a --- /dev/null +++ b/fs/ext4/extents_status.h @@ -0,0 +1,45 @@ +/* + *  fs/ext4/extents_status.h + * + * Written by Yongqiang Yang <[email protected]> + * Modified by + *	Allison Henderson <[email protected]> + *	Zheng Liu <[email protected]> + * + */ + +#ifndef _EXT4_EXTENTS_STATUS_H +#define _EXT4_EXTENTS_STATUS_H + +/* + * Turn on ES_DEBUG__ to get lots of info about extent status operations. + */ +#ifdef ES_DEBUG__ +#define es_debug(fmt, ...)	printk(fmt, ##__VA_ARGS__) +#else +#define es_debug(fmt, ...)	no_printk(fmt, ##__VA_ARGS__) +#endif + +struct extent_status { +	struct rb_node rb_node; +	ext4_lblk_t start;	/* first block extent covers */ +	ext4_lblk_t len;	/* length of extent in block */ +}; + +struct ext4_es_tree { +	struct rb_root root; +	struct extent_status *cache_es;	/* recently accessed extent */ +}; + +extern int __init ext4_init_es(void); +extern void ext4_exit_es(void); +extern void ext4_es_init_tree(struct ext4_es_tree *tree); + +extern int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t start, +				 ext4_lblk_t len); +extern int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t start, +				 ext4_lblk_t len); +extern ext4_lblk_t ext4_es_find_extent(struct inode *inode, +				struct extent_status *es); + +#endif /* _EXT4_EXTENTS_STATUS_H */ |