xref: /linux/fs/xfs/scrub/rcbag.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (c) 2022-2024 Oracle.  All Rights Reserved.
4  * Author: Darrick J. Wong <djwong@kernel.org>
5  */
6 #ifndef __XFS_SCRUB_RCBAG_H__
7 #define __XFS_SCRUB_RCBAG_H__
8 
9 struct xfs_mount;
10 struct rcbag;
11 struct xfs_buftarg;
12 
13 int rcbag_init(struct xfs_mount *mp, struct xfs_buftarg *btp,
14 		struct rcbag **bagp);
15 void rcbag_free(struct rcbag **bagp);
16 int rcbag_add(struct rcbag *bag, struct xfs_trans *tp,
17 		const struct xfs_rmap_irec *rmap);
18 uint64_t rcbag_count(const struct rcbag *bag);
19 
20 int rcbag_next_edge(struct rcbag *bag, struct xfs_trans *tp,
21 		const struct xfs_rmap_irec *next_rmap, bool next_valid,
22 		uint32_t *next_bnop);
23 int rcbag_remove_ending_at(struct rcbag *bag, struct xfs_trans *tp,
24 		uint32_t next_bno);
25 
26 void rcbag_dump(struct rcbag *bag, struct xfs_trans *tp);
27 
28 #endif /* __XFS_SCRUB_RCBAG_H__ */
29