0001
0002
0003
0004
0005
0006 #ifndef __XFS_SCRUB_REPAIR_H__
0007 #define __XFS_SCRUB_REPAIR_H__
0008
0009 #include "xfs_quota_defs.h"
0010
0011 static inline int xrep_notsupported(struct xfs_scrub *sc)
0012 {
0013 return -EOPNOTSUPP;
0014 }
0015
0016 #ifdef CONFIG_XFS_ONLINE_REPAIR
0017
0018
0019
0020 int xrep_attempt(struct xfs_scrub *sc);
0021 void xrep_failure(struct xfs_mount *mp);
0022 int xrep_roll_ag_trans(struct xfs_scrub *sc);
0023 bool xrep_ag_has_space(struct xfs_perag *pag, xfs_extlen_t nr_blocks,
0024 enum xfs_ag_resv_type type);
0025 xfs_extlen_t xrep_calc_ag_resblks(struct xfs_scrub *sc);
0026 int xrep_alloc_ag_block(struct xfs_scrub *sc,
0027 const struct xfs_owner_info *oinfo, xfs_fsblock_t *fsbno,
0028 enum xfs_ag_resv_type resv);
0029 int xrep_init_btblock(struct xfs_scrub *sc, xfs_fsblock_t fsb,
0030 struct xfs_buf **bpp, xfs_btnum_t btnum,
0031 const struct xfs_buf_ops *ops);
0032
0033 struct xbitmap;
0034
0035 int xrep_fix_freelist(struct xfs_scrub *sc, bool can_shrink);
0036 int xrep_invalidate_blocks(struct xfs_scrub *sc, struct xbitmap *btlist);
0037 int xrep_reap_extents(struct xfs_scrub *sc, struct xbitmap *exlist,
0038 const struct xfs_owner_info *oinfo, enum xfs_ag_resv_type type);
0039
0040 struct xrep_find_ag_btree {
0041
0042 uint64_t rmap_owner;
0043
0044
0045 const struct xfs_buf_ops *buf_ops;
0046
0047
0048 unsigned int maxlevels;
0049
0050
0051 xfs_agblock_t root;
0052 unsigned int height;
0053 };
0054
0055 int xrep_find_ag_btree_roots(struct xfs_scrub *sc, struct xfs_buf *agf_bp,
0056 struct xrep_find_ag_btree *btree_info, struct xfs_buf *agfl_bp);
0057 void xrep_force_quotacheck(struct xfs_scrub *sc, xfs_dqtype_t type);
0058 int xrep_ino_dqattach(struct xfs_scrub *sc);
0059
0060
0061
0062 int xrep_probe(struct xfs_scrub *sc);
0063 int xrep_superblock(struct xfs_scrub *sc);
0064 int xrep_agf(struct xfs_scrub *sc);
0065 int xrep_agfl(struct xfs_scrub *sc);
0066 int xrep_agi(struct xfs_scrub *sc);
0067
0068 #else
0069
0070 static inline int
0071 xrep_attempt(
0072 struct xfs_scrub *sc)
0073 {
0074 return -EOPNOTSUPP;
0075 }
0076
0077 static inline void xrep_failure(struct xfs_mount *mp) {}
0078
0079 static inline xfs_extlen_t
0080 xrep_calc_ag_resblks(
0081 struct xfs_scrub *sc)
0082 {
0083 return 0;
0084 }
0085
0086 #define xrep_probe xrep_notsupported
0087 #define xrep_superblock xrep_notsupported
0088 #define xrep_agf xrep_notsupported
0089 #define xrep_agfl xrep_notsupported
0090 #define xrep_agi xrep_notsupported
0091
0092 #endif
0093
0094 #endif