49 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * Copyright (c) 2021-2024 Oracle. All Rights Reserved.4 * Author: Darrick J. Wong <djwong@kernel.org>5 */6#ifndef __XFS_SCRUB_TEMPFILE_H__7#define __XFS_SCRUB_TEMPFILE_H__8 9#ifdef CONFIG_XFS_ONLINE_REPAIR10int xrep_tempfile_create(struct xfs_scrub *sc, uint16_t mode);11void xrep_tempfile_rele(struct xfs_scrub *sc);12 13bool xrep_tempfile_iolock_nowait(struct xfs_scrub *sc);14int xrep_tempfile_iolock_polled(struct xfs_scrub *sc);15void xrep_tempfile_iounlock(struct xfs_scrub *sc);16 17void xrep_tempfile_ilock(struct xfs_scrub *sc);18bool xrep_tempfile_ilock_nowait(struct xfs_scrub *sc);19void xrep_tempfile_iunlock(struct xfs_scrub *sc);20void xrep_tempfile_iunlock_both(struct xfs_scrub *sc);21void xrep_tempfile_ilock_both(struct xfs_scrub *sc);22 23int xrep_tempfile_prealloc(struct xfs_scrub *sc, xfs_fileoff_t off,24 xfs_filblks_t len);25 26enum xfs_blft;27 28typedef int (*xrep_tempfile_copyin_fn)(struct xfs_scrub *sc,29 struct xfs_buf *bp, void *data);30 31int xrep_tempfile_copyin(struct xfs_scrub *sc, xfs_fileoff_t off,32 xfs_filblks_t len, xrep_tempfile_copyin_fn fn, void *data);33 34int xrep_tempfile_set_isize(struct xfs_scrub *sc, unsigned long long isize);35 36int xrep_tempfile_roll_trans(struct xfs_scrub *sc);37void xrep_tempfile_copyout_local(struct xfs_scrub *sc, int whichfork);38bool xrep_is_tempfile(const struct xfs_inode *ip);39#else40static inline void xrep_tempfile_iolock_both(struct xfs_scrub *sc)41{42 xchk_ilock(sc, XFS_IOLOCK_EXCL);43}44# define xrep_is_tempfile(ip) (false)45# define xrep_tempfile_rele(sc)46#endif /* CONFIG_XFS_ONLINE_REPAIR */47 48#endif /* __XFS_SCRUB_TEMPFILE_H__ */49