linux/fs/xfs/scrub
Darrick J. Wong 56596d8bff xfs: teach the tempfile to set up atomic file content exchanges
Create some new routines to exchange the contents of a temporary file
created to stage a repair with another ondisk file.  This will be used
by the realtime summary repair function to commit atomically the new
rtsummary data, which will be staged in the tempfile.

The rest of XFS coordinates access to the realtime metadata inodes
solely through the ILOCK.  For repair to hold its exclusive access to
the realtime summary file, it has to allocate a single large transaction
and roll it repeatedly throughout the repair while holding the ILOCK.
In turn, this means that for now there's only a partial file mapping
exchange implementation for the temporary file because we can only work
within an existing transaction.

For now, the only tempswap functions needed here are to estimate the
resource requirements of the exchange, reserve more space/quota to an
existing transaction, and kick off the actual exchange.  The rest will
be added in a later patch in preparation for repairing xattrs and
directories.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2024-04-15 14:58:49 -07:00
..
agb_bitmap.c xfs: move the per-AG datatype bitmaps to separate files 2023-12-15 10:03:30 -08:00
agb_bitmap.h xfs: create agblock bitmap helper to count the number of set regions 2024-02-22 12:43:37 -08:00
agheader_repair.c xfs: split xfs_inobt_init_cursor 2024-02-22 12:40:49 -08:00
agheader.c xfs: split the agf_roots and agf_levels arrays 2024-02-22 12:39:46 -08:00
alloc_repair.c xfs: fix error bailout in xrep_abt_build_new_trees 2024-04-15 14:54:06 -07:00
alloc.c xfs: repair free space btrees 2023-12-15 10:03:32 -08:00
attr.c xfs: remove struct xfs_attr_shortform 2023-12-29 13:37:05 +05:30
attr.h xfs: check used space of shortform xattr structures 2023-04-11 19:00:33 -07:00
bitmap.c xfs: create agblock bitmap helper to count the number of set regions 2024-02-22 12:43:37 -08:00
bitmap.h xfs: create agblock bitmap helper to count the number of set regions 2024-02-22 12:43:37 -08:00
bmap_repair.c xfs: remove xfs_bmbt_stage_cursor 2024-02-22 12:39:45 -08:00
bmap.c xfs: create a helper to decide if a file mapping targets the rt volume 2024-02-22 12:43:36 -08:00
btree.c xfs: consolidate btree block verification 2024-02-22 12:40:57 -08:00
btree.h overflow: Add struct_size_t() helper 2023-05-26 13:52:19 -07:00
common.c xfs: pass xfs_buf lookup flags to xfs_*read_agi 2024-04-15 14:54:03 -07:00
common.h xfs: repair the rmapbt 2024-02-22 12:43:38 -08:00
cow_repair.c xfs: convert remaining kmem_free() to kfree() 2024-02-13 18:07:34 +05:30
dabtree.c xfs: scrub should use ECHRNG to signal that the drain is needed 2023-04-11 19:00:00 -07:00
dabtree.h xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00
dir.c xfs: create a predicate to determine if two xfs_names are the same 2024-02-22 12:30:49 -08:00
dqiterate.c xfs: improve dquot iteration for scrub 2023-12-15 10:03:45 -08:00
fsb_bitmap.h xfs: reintroduce reaping of file metadata blocks to xrep_reap_extents 2023-12-15 10:03:38 -08:00
fscounters_repair.c xfs: repair summary counters 2024-02-22 12:33:05 -08:00
fscounters.c xfs: pass xfs_buf lookup flags to xfs_*read_agi 2024-04-15 14:54:03 -07:00
fscounters.h xfs: repair summary counters 2024-02-22 12:33:05 -08:00
health.c xfs: refactor the btree cursor allocation logic in xchk_ag_btcur_init 2024-02-22 12:39:48 -08:00
health.h xfs: refactor the btree cursor allocation logic in xchk_ag_btcur_init 2024-02-22 12:39:48 -08:00
ialloc_repair.c xfs: split xfs_inobt_init_cursor 2024-02-22 12:40:49 -08:00
ialloc.c xfs: remove xfs_btnum_t 2024-02-22 12:40:51 -08:00
inode_repair.c xfs: fix potential AGI <-> ILOCK ABBA deadlock in xrep_dinode_findmode_walk_directory 2024-04-15 14:54:05 -07:00
inode.c xfs: repair inode records 2023-12-15 10:03:36 -08:00
iscan.c xfs: fix an AGI lock acquisition ordering problem in xrep_dinode_findmode 2024-04-15 14:54:04 -07:00
iscan.h xfs: fix an AGI lock acquisition ordering problem in xrep_dinode_findmode 2024-04-15 14:54:04 -07:00
newbt.c xfs: repair the rmapbt 2024-02-22 12:43:38 -08:00
newbt.h xfs: repair the rmapbt 2024-02-22 12:43:38 -08:00
nlinks_repair.c xfs: teach repair to fix file nlinks 2024-02-22 12:31:00 -08:00
nlinks.c xfs: teach repair to fix file nlinks 2024-02-22 12:31:00 -08:00
nlinks.h xfs: teach repair to fix file nlinks 2024-02-22 12:31:00 -08:00
off_bitmap.h xfs: repair problems in CoW forks 2023-12-15 10:03:40 -08:00
parent.c xfs: create temporary files and directories for online repair 2024-04-15 14:58:48 -07:00
quota_repair.c xfs: repair quotas 2023-12-15 10:03:45 -08:00
quota.c xfs: repair quotas 2023-12-15 10:03:45 -08:00
quota.h xfs: repair quotas 2023-12-15 10:03:45 -08:00
quotacheck_repair.c xfs: repair dquots based on live quotacheck results 2024-02-22 12:30:57 -08:00
quotacheck.c xfs: repair dquots based on live quotacheck results 2024-02-22 12:30:57 -08:00
quotacheck.h xfs: repair dquots based on live quotacheck results 2024-02-22 12:30:57 -08:00
rcbag_btree.c xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
rcbag_btree.h xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
rcbag.c xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
rcbag.h xfs: create refcount bag structure for btree repairs 2024-02-22 12:43:41 -08:00
readdir.c xfs: Replace xfs_isilocked with xfs_assert_ilocked 2024-02-19 21:19:33 +05:30
readdir.h xfs: streamline the directory iteration code for scrub 2023-04-11 19:00:17 -07:00
reap.c xfs: add the ability to reap entire inode forks 2024-04-15 14:58:49 -07:00
reap.h xfs: add the ability to reap entire inode forks 2024-04-15 14:58:49 -07:00
refcount_repair.c xfs: port refcount repair to the new refcount bag structure 2024-02-22 12:43:42 -08:00
refcount.c xfs: port refcount repair to the new refcount bag structure 2024-02-22 12:43:42 -08:00
repair.c xfs: pass xfs_buf lookup flags to xfs_*read_agi 2024-04-15 14:54:03 -07:00
repair.h xfs: port refcount repair to the new refcount bag structure 2024-02-22 12:43:42 -08:00
rmap_repair.c xfs: hook live rmap operations during a repair operation 2024-02-22 12:43:40 -08:00
rmap.c xfs: repair the rmapbt 2024-02-22 12:43:38 -08:00
rtbitmap_repair.c xfs: online repair of realtime bitmaps 2023-12-15 10:03:43 -08:00
rtbitmap.c xfs: remove conditional building of rt geometry validator functions 2024-01-30 14:04:43 +05:30
rtbitmap.h xfs: online repair of realtime bitmaps 2023-12-15 10:03:43 -08:00
rtsummary.c xfs: remove the xfile_pread/pwrite APIs 2024-02-21 11:36:53 +05:30
scrub.c xfs: teach the tempfile to set up atomic file content exchanges 2024-04-15 14:58:49 -07:00
scrub.h xfs: teach the tempfile to set up atomic file content exchanges 2024-04-15 14:58:49 -07:00
stats.c xfs: fix scrub stats file permissions 2024-02-26 17:58:37 +05:30
stats.h xfs: track usage statistics of online fsck 2023-08-10 07:48:07 -07:00
symlink.c xfs: move remote symlink target read function to libxfs 2024-02-22 12:45:17 -08:00
tempexch.h xfs: teach the tempfile to set up atomic file content exchanges 2024-04-15 14:58:49 -07:00
tempfile.c xfs: teach the tempfile to set up atomic file content exchanges 2024-04-15 14:58:49 -07:00
tempfile.h xfs: support preallocating and copying content into temporary files 2024-04-15 14:58:49 -07:00
trace.c xfs: hook live rmap operations during a repair operation 2024-02-22 12:43:40 -08:00
trace.h xfs: teach the tempfile to set up atomic file content exchanges 2024-04-15 14:58:49 -07:00
xfarray.c xfs: convert xfarray_pagesort to deal with large folios 2024-02-21 11:36:55 +05:30
xfarray.h xfs: create a sparse load xfarray function 2024-02-22 12:30:54 -08:00
xfile.c xfs: remove xfile_{get,put}_page 2024-02-21 11:36:56 +05:30
xfile.h xfs: remove xfile_{get,put}_page 2024-02-21 11:36:56 +05:30
xfs_scrub.h xfs: update copyright years for scrub/ files 2023-04-11 18:59:57 -07:00