rgrp.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
  3. * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
  4. *
  5. * This copyrighted material is made available to anyone wishing to use,
  6. * modify, copy, or redistribute it subject to the terms and conditions
  7. * of the GNU General Public License version 2.
  8. */
  9. #ifndef __RGRP_DOT_H__
  10. #define __RGRP_DOT_H__
  11. struct gfs2_rgrpd;
  12. struct gfs2_sbd;
  13. struct gfs2_holder;
  14. void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd);
  15. struct gfs2_rgrpd *gfs2_blk2rgrpd(struct gfs2_sbd *sdp, u64 blk);
  16. struct gfs2_rgrpd *gfs2_rgrpd_get_first(struct gfs2_sbd *sdp);
  17. struct gfs2_rgrpd *gfs2_rgrpd_get_next(struct gfs2_rgrpd *rgd);
  18. void gfs2_clear_rgrpd(struct gfs2_sbd *sdp);
  19. int gfs2_rindex_hold(struct gfs2_sbd *sdp, struct gfs2_holder *ri_gh);
  20. int gfs2_rgrp_bh_get(struct gfs2_rgrpd *rgd);
  21. void gfs2_rgrp_bh_hold(struct gfs2_rgrpd *rgd);
  22. void gfs2_rgrp_bh_put(struct gfs2_rgrpd *rgd);
  23. void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd);
  24. struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip);
  25. static inline void gfs2_alloc_put(struct gfs2_inode *ip)
  26. {
  27. BUG_ON(ip->i_alloc == NULL);
  28. kfree(ip->i_alloc);
  29. ip->i_alloc = NULL;
  30. }
  31. int gfs2_inplace_reserve_i(struct gfs2_inode *ip,
  32. char *file, unsigned int line);
  33. #define gfs2_inplace_reserve(ip) \
  34. gfs2_inplace_reserve_i((ip), __FILE__, __LINE__)
  35. void gfs2_inplace_release(struct gfs2_inode *ip);
  36. unsigned char gfs2_get_block_type(struct gfs2_rgrpd *rgd, u64 block);
  37. u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n);
  38. u64 gfs2_alloc_di(struct gfs2_inode *ip, u64 *generation);
  39. void gfs2_free_data(struct gfs2_inode *ip, u64 bstart, u32 blen);
  40. void gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen);
  41. void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip);
  42. void gfs2_unlink_di(struct inode *inode);
  43. struct gfs2_rgrp_list {
  44. unsigned int rl_rgrps;
  45. unsigned int rl_space;
  46. struct gfs2_rgrpd **rl_rgd;
  47. struct gfs2_holder *rl_ghs;
  48. };
  49. void gfs2_rlist_add(struct gfs2_sbd *sdp, struct gfs2_rgrp_list *rlist,
  50. u64 block);
  51. void gfs2_rlist_alloc(struct gfs2_rgrp_list *rlist, unsigned int state);
  52. void gfs2_rlist_free(struct gfs2_rgrp_list *rlist);
  53. u64 gfs2_ri_total(struct gfs2_sbd *sdp);
  54. #endif /* __RGRP_DOT_H__ */