mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 23:51:37 +00:00
629fdaf5f5
Build on the code that was recently added to the temporary repair file code so that we can atomically switch the contents of any file fork, even if the fork is in local format. The upcoming functions to repair xattrs, directories, and symlinks will need that capability. Repair can lock out access to these user files by holding IOLOCK_EXCL on these user files. Therefore, it is safe to drop the ILOCK of both the file being repaired and the tempfile being used for staging, and cancel the scrub transaction. We do this so that we can reuse the resource estimation and transaction allocation functions used by a regular file exchange operation. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
24 lines
708 B
C
24 lines
708 B
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (c) 2022-2024 Oracle. All Rights Reserved.
|
|
* Author: Darrick J. Wong <djwong@kernel.org>
|
|
*/
|
|
#ifndef __XFS_SCRUB_TEMPEXCH_H__
|
|
#define __XFS_SCRUB_TEMPEXCH_H__
|
|
|
|
#ifdef CONFIG_XFS_ONLINE_REPAIR
|
|
struct xrep_tempexch {
|
|
struct xfs_exchmaps_req req;
|
|
};
|
|
|
|
int xrep_tempexch_enable(struct xfs_scrub *sc);
|
|
int xrep_tempexch_trans_reserve(struct xfs_scrub *sc, int whichfork,
|
|
struct xrep_tempexch *ti);
|
|
int xrep_tempexch_trans_alloc(struct xfs_scrub *sc, int whichfork,
|
|
struct xrep_tempexch *ti);
|
|
|
|
int xrep_tempexch_contents(struct xfs_scrub *sc, struct xrep_tempexch *ti);
|
|
#endif /* CONFIG_XFS_ONLINE_REPAIR */
|
|
|
|
#endif /* __XFS_SCRUB_TEMPEXCH_H__ */
|