linux/fs/xfs/scrub
Allison Henderson fd92000878 xfs: Set up infrastructure for log attribute replay
Currently attributes are modified directly across one or more
transactions. But they are not logged or replayed in the event of an
error. The goal of log attr replay is to enable logging and replaying
of attribute operations using the existing delayed operations
infrastructure.  This will later enable the attributes to become part of
larger multi part operations that also must first be recorded to the
log.  This is mostly of interest in the scheme of parent pointers which
would need to maintain an attribute containing parent inode information
any time an inode is moved, created, or removed.  Parent pointers would
then be of interest to any feature that would need to quickly derive an
inode path from the mount point. Online scrub, nfs lookups and fs grow
or shrink operations are all features that could take advantage of this.

This patch adds two new log item types for setting or removing
attributes as deferred operations.  The xfs_attri_log_item will log an
intent to set or remove an attribute.  The corresponding
xfs_attrd_log_item holds a reference to the xfs_attri_log_item and is
freed once the transaction is done.  Both log items use a generic
xfs_attr_log_format structure that contains the attribute name, value,
flags, inode, and an op_flag that indicates if the operations is a set
or remove.

[dchinner: added extra little bits needed for intent whiteouts]

Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2022-05-04 12:41:02 +10:00
..
agheader_repair.c xfs: fix online fsck handling of v5 feature bits on secondary supers 2022-01-12 09:45:21 -08:00
agheader.c xfs: fix online fsck handling of v5 feature bits on secondary supers 2022-01-12 09:45:21 -08:00
alloc.c xfs: mark the record passed into xchk_btree functions as const 2021-08-18 18:46:01 -07:00
attr.c xfs: replace xfs_sb_version checks with feature flag checks 2021-08-19 10:07:12 -07:00
attr.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
bitmap.c xfs: prepare xfs_btree_cur for dynamic cursor heights 2021-10-19 11:45:14 -07:00
bitmap.h xfs: replace open-coded bitmap weight logic 2020-03-18 08:12:23 -07:00
bmap.c xfs: simplify xfs_rmap_lookup_le call sites 2022-04-27 10:47:19 -07:00
btree.c xfs: prepare xfs_btree_cur for dynamic cursor heights 2021-10-19 11:45:14 -07:00
btree.h xfs: dynamically allocate btree scrub context structure 2021-10-19 11:45:14 -07:00
common.c xfs: Set up infrastructure for log attribute replay 2022-05-04 12:41:02 +10:00
common.h xfs: grab active perag ref when reading AG headers 2021-08-09 11:13:17 -07:00
dabtree.c xfs: don't allocate scrub contexts on the stack 2021-10-14 09:19:32 -07:00
dabtree.h xfs: refactor btree node scrubbing 2019-11-10 16:54:19 -08:00
dir.c xfs: fix a bug in the online fsck directory leaf1 bestcount check 2021-12-21 09:49:41 -08:00
fscounters.c xfs: fix perag structure refcounting error when scrub fails 2021-08-20 13:20:33 -07:00
health.c xfs: move xfs_perag_get/put to xfs_ag.[ch] 2021-06-02 10:48:24 +10:00
health.h xfs: scrub should only cross-reference with healthy btrees 2019-04-16 10:01:57 -07:00
ialloc.c xfs: replace xfs_sb_version checks with feature flag checks 2021-08-19 10:07:12 -07:00
inode.c xfs: Introduce xfs_dfork_nextents() helper 2022-04-11 04:11:18 +00:00
parent.c xfs: get rid of the ip parameter to xchk_setup_* 2021-04-09 10:27:18 -07:00
quota.c xfs: fix quotaoff mutex usage now that we don't support disabling it 2021-12-21 09:49:41 -08:00
refcount.c xfs: mark the record passed into xchk_btree functions as const 2021-08-18 18:46:01 -07:00
repair.c xfs: fix quotaoff mutex usage now that we don't support disabling it 2021-12-21 09:49:41 -08:00
repair.h xfs: stricter btree height checking when scanning for btree roots 2021-10-14 09:19:32 -07:00
rmap.c xfs: mark the record passed into xchk_btree functions as const 2021-08-18 18:46:01 -07:00
rtbitmap.c xfs: pass explicit mount pointer to rtalloc query functions 2022-04-12 06:49:41 +10:00
scrub.c xfs: fix quotaoff mutex usage now that we don't support disabling it 2021-12-21 09:49:41 -08:00
scrub.h xfs: fix quotaoff mutex usage now that we don't support disabling it 2021-12-21 09:49:41 -08:00
symlink.c xfs: remove XFS_IFINLINE 2021-04-15 09:35:51 -07:00
trace.c xfs: prepare xfs_btree_cur for dynamic cursor heights 2021-10-19 11:45:14 -07:00
trace.h xfs: prepare xfs_btree_cur for dynamic cursor heights 2021-10-19 11:45:14 -07:00
xfs_scrub.h xfs: fix scrub and remount-ro protection when running scrub 2021-04-09 10:27:13 -07:00