extents_status.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * fs/ext4/extents_status.h
  3. *
  4. * Written by Yongqiang Yang <xiaoqiangnk@gmail.com>
  5. * Modified by
  6. * Allison Henderson <achender@linux.vnet.ibm.com>
  7. * Zheng Liu <wenqing.lz@taobao.com>
  8. *
  9. */
  10. #ifndef _EXT4_EXTENTS_STATUS_H
  11. #define _EXT4_EXTENTS_STATUS_H
  12. /*
  13. * Turn on ES_DEBUG__ to get lots of info about extent status operations.
  14. */
  15. #ifdef ES_DEBUG__
  16. #define es_debug(fmt, ...) printk(fmt, ##__VA_ARGS__)
  17. #else
  18. #define es_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__)
  19. #endif
  20. struct extent_status {
  21. struct rb_node rb_node;
  22. ext4_lblk_t start; /* first block extent covers */
  23. ext4_lblk_t len; /* length of extent in block */
  24. };
  25. struct ext4_es_tree {
  26. struct rb_root root;
  27. struct extent_status *cache_es; /* recently accessed extent */
  28. };
  29. extern int __init ext4_init_es(void);
  30. extern void ext4_exit_es(void);
  31. extern void ext4_es_init_tree(struct ext4_es_tree *tree);
  32. extern int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t start,
  33. ext4_lblk_t len);
  34. extern int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t start,
  35. ext4_lblk_t len);
  36. extern ext4_lblk_t ext4_es_find_extent(struct inode *inode,
  37. struct extent_status *es);
  38. #endif /* _EXT4_EXTENTS_STATUS_H */