1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (C) 2022-2023 Oracle.  All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
5 */
6#ifndef __XFS_SCRUB_REAP_H__
7#define __XFS_SCRUB_REAP_H__
8
9struct xagb_bitmap;
10struct xfsb_bitmap;
11
12int xrep_reap_agblocks(struct xfs_scrub *sc, struct xagb_bitmap *bitmap,
13		const struct xfs_owner_info *oinfo, enum xfs_ag_resv_type type);
14int xrep_reap_fsblocks(struct xfs_scrub *sc, struct xfsb_bitmap *bitmap,
15		const struct xfs_owner_info *oinfo);
16int xrep_reap_ifork(struct xfs_scrub *sc, struct xfs_inode *ip, int whichfork);
17
18/* Buffer cache scan context. */
19struct xrep_bufscan {
20	/* Disk address for the buffers we want to scan. */
21	xfs_daddr_t		daddr;
22
23	/* Maximum number of sectors to scan. */
24	xfs_daddr_t		max_sectors;
25
26	/* Each round, increment the search length by this number of sectors. */
27	xfs_daddr_t		daddr_step;
28
29	/* Internal scan state; initialize to zero. */
30	xfs_daddr_t		__sector_count;
31};
32
33xfs_daddr_t xrep_bufscan_max_sectors(struct xfs_mount *mp,
34		xfs_extlen_t fsblocks);
35struct xfs_buf *xrep_bufscan_advance(struct xfs_mount *mp,
36		struct xrep_bufscan *scan);
37
38#endif /* __XFS_SCRUB_REAP_H__ */
39