brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · d998c7a Raw
57 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * Copyright (c) 2020-2024 Oracle.  All Rights Reserved.4 * Author: Darrick J. Wong <djwong@kernel.org>5 */6#ifndef __XFS_SCRUB_FINDPARENT_H__7#define __XFS_SCRUB_FINDPARENT_H__8 9struct xrep_parent_scan_info {10	struct xfs_scrub	*sc;11 12	/* Inode scan cursor. */13	struct xchk_iscan	iscan;14 15	/* Hook to capture directory entry updates. */16	struct xfs_dir_hook	dhook;17 18	/* Lock protecting parent_ino. */19	struct mutex		lock;20 21	/* Parent inode that we've found. */22	xfs_ino_t		parent_ino;23 24	bool			lookup_parent;25};26 27int __xrep_findparent_scan_start(struct xfs_scrub *sc,28		struct xrep_parent_scan_info *pscan,29		notifier_fn_t custom_fn);30static inline int xrep_findparent_scan_start(struct xfs_scrub *sc,31		struct xrep_parent_scan_info *pscan)32{33	return __xrep_findparent_scan_start(sc, pscan, NULL);34}35int xrep_findparent_scan(struct xrep_parent_scan_info *pscan);36void xrep_findparent_scan_teardown(struct xrep_parent_scan_info *pscan);37 38static inline void39xrep_findparent_scan_found(40	struct xrep_parent_scan_info	*pscan,41	xfs_ino_t			ino)42{43	mutex_lock(&pscan->lock);44	pscan->parent_ino = ino;45	mutex_unlock(&pscan->lock);46}47 48void xrep_findparent_scan_finish_early(struct xrep_parent_scan_info *pscan,49		xfs_ino_t ino);50 51int xrep_findparent_confirm(struct xfs_scrub *sc, xfs_ino_t *parent_ino);52 53xfs_ino_t xrep_findparent_self_reference(struct xfs_scrub *sc);54xfs_ino_t xrep_findparent_from_dcache(struct xfs_scrub *sc);55 56#endif /* __XFS_SCRUB_FINDPARENT_H__ */57