rgrp.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
  3. * Copyright (C) 2004-2006 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 v.2.
  8. */
  9. #ifndef __RGRP_DOT_H__
  10. #define __RGRP_DOT_H__
  11. void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd);
  12. struct gfs2_rgrpd *gfs2_blk2rgrpd(struct gfs2_sbd *sdp, uint64_t blk);
  13. struct gfs2_rgrpd *gfs2_rgrpd_get_first(struct gfs2_sbd *sdp);
  14. struct gfs2_rgrpd *gfs2_rgrpd_get_next(struct gfs2_rgrpd *rgd);
  15. void gfs2_clear_rgrpd(struct gfs2_sbd *sdp);
  16. int gfs2_rindex_hold(struct gfs2_sbd *sdp, struct gfs2_holder *ri_gh);
  17. int gfs2_rgrp_bh_get(struct gfs2_rgrpd *rgd);
  18. void gfs2_rgrp_bh_hold(struct gfs2_rgrpd *rgd);
  19. void gfs2_rgrp_bh_put(struct gfs2_rgrpd *rgd);
  20. void gfs2_rgrp_repolish_clones(struct gfs2_rgrpd *rgd);
  21. struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip);
  22. void gfs2_alloc_put(struct gfs2_inode *ip);
  23. int gfs2_inplace_reserve_i(struct gfs2_inode *ip,
  24. char *file, unsigned int line);
  25. #define gfs2_inplace_reserve(ip) \
  26. gfs2_inplace_reserve_i((ip), __FILE__, __LINE__)
  27. void gfs2_inplace_release(struct gfs2_inode *ip);
  28. unsigned char gfs2_get_block_type(struct gfs2_rgrpd *rgd, uint64_t block);
  29. u64 gfs2_alloc_data(struct gfs2_inode *ip);
  30. u64 gfs2_alloc_meta(struct gfs2_inode *ip);
  31. u64 gfs2_alloc_di(struct gfs2_inode *ip, u64 *generation);
  32. void gfs2_free_data(struct gfs2_inode *ip, uint64_t bstart, uint32_t blen);
  33. void gfs2_free_meta(struct gfs2_inode *ip, uint64_t bstart, uint32_t blen);
  34. void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip);
  35. void gfs2_unlink_di(struct inode *inode);
  36. struct gfs2_rgrp_list {
  37. unsigned int rl_rgrps;
  38. unsigned int rl_space;
  39. struct gfs2_rgrpd **rl_rgd;
  40. struct gfs2_holder *rl_ghs;
  41. };
  42. void gfs2_rlist_add(struct gfs2_sbd *sdp, struct gfs2_rgrp_list *rlist,
  43. uint64_t block);
  44. void gfs2_rlist_alloc(struct gfs2_rgrp_list *rlist, unsigned int state,
  45. int flags);
  46. void gfs2_rlist_free(struct gfs2_rgrp_list *rlist);
  47. #endif /* __RGRP_DOT_H__ */