mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
119d1b8a5d
* Introduce Parent Pointer extended attribute for inodes. * Online Repair - Implement atomic file content exchanges i.e. exchange ranges of bytes between two files atomically. - Create temporary files to repair file-based metadata. This uses atomic file content exchange facility to swap file fork mappings between the temporary file and the metadata inode. - Allow callers of directory/xattr code to set an explicit owner number to be written into the header fields of any new blocks that are created. This is required to avoid walking every block of the new structure and modify their ownership during online repair. - Repair - Extended attributes - Inode unlinked state - Directories - Symbolic links - AGI's unlinked inode list. - Parent pointers. - Move Orphan files to lost and found directory. - Fixes for Inode repair functionality. - Introduce a new sub-AG FITRIM implementation to reduce the duration for which the AGF lock is held. - Updates for the design documentation. - Use Parent Pointers to assist in checking directories, parent pointers, extended attributes, and link counts. * Bring back delalloc support for realtime devices which have an extent size that is equal to filesystem's block size. * Improve performance of log incompat feature handling. * Fixes - Prevent userspace from reading invalid file data due to incorrect. updation of file size when performing a non-atomic clone operation. - Minor fixes to online repair. - Fix confusing return values from xfs_bmapi_write(). - Fix an out of bounds access due to incorrect h_size during log recovery. - Defer upgrading the extent counters in xfs_reflink_end_cow_extent() until we know we are going to modify the extent mapping. - Remove racy access to if_bytes check in xfs_reflink_end_cow_extent(). - Fix sparse warnings. * Cleanups - Hold inode locks on all files involved in a rename until the completion of the operation. This is in preparation for the parent pointers patchset where parent pointers are applied in a separate chained update from the actual directory update. - Compile out v4 support when disabled. - Cleanup xfs_extent_busy_clear(). - Remove unused flags and fields from struct xfs_da_args. - Remove definitions of unused functions. - Improve extended attribute validation. - Add higher level directory operations helpers to remove duplication of code. - Cleanup quota (un)reservation interfaces. Signed-off-by: Chandan Babu R <chandanbabu@kernel.org> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQjMC4mbgVeU7MxEIYH7y4RirJu9AUCZjZC0wAKCRAH7y4RirJu 9HsCAPoCQvmPefDv56aMb5JEQNpv9dPz2Djj14hqLytQs5P/twD+LF5NhJgQNDUo Lwnb0tmkAhmG9Y4CCiN1FwSj1rq59gE= =2hXB -----END PGP SIGNATURE----- Merge tag 'xfs-6.10-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux Pull xfs updates from Chandan Babu: "Online repair feature continues to be expanded. Also, we now support delayed allocation for realtime devices which have an extent size that is equal to filesystem's block size. New code: - Introduce Parent Pointer extended attribute for inodes - Bring back delalloc support for realtime devices which have an extent size that is equal to filesystem's block size - Improve performance of log incompat feature handling Online Repair: - Implement atomic file content exchanges i.e. exchange ranges of bytes between two files atomically - Create temporary files to repair file-based metadata. This uses atomic file content exchange facility to swap file fork mappings between the temporary file and the metadata inode - Allow callers of directory/xattr code to set an explicit owner number to be written into the header fields of any new blocks that are created. This is required to avoid walking every block of the new structure and modify their ownership during online repair - Repair more data structures: - Extended attributes - Inode unlinked state - Directories - Symbolic links - AGI's unlinked inode list - Parent pointers - Move Orphan files to lost and found directory - Fixes for Inode repair functionality - Introduce a new sub-AG FITRIM implementation to reduce the duration for which the AGF lock is held - Updates for the design documentation - Use Parent Pointers to assist in checking directories, parent pointers, extended attributes, and link counts Fixes: - Prevent userspace from reading invalid file data due to incorrect. updation of file size when performing a non-atomic clone operation - Minor fixes to online repair - Fix confusing return values from xfs_bmapi_write() - Fix an out of bounds access due to incorrect h_size during log recovery - Defer upgrading the extent counters in xfs_reflink_end_cow_extent() until we know we are going to modify the extent mapping - Remove racy access to if_bytes check in xfs_reflink_end_cow_extent() - Fix sparse warnings Cleanups: - Hold inode locks on all files involved in a rename until the completion of the operation. This is in preparation for the parent pointers patchset where parent pointers are applied in a separate chained update from the actual directory update - Compile out v4 support when disabled - Cleanup xfs_extent_busy_clear() - Remove unused flags and fields from struct xfs_da_args - Remove definitions of unused functions - Improve extended attribute validation - Add higher level directory operations helpers to remove duplication of code - Cleanup quota (un)reservation interfaces" * tag 'xfs-6.10-merge-6' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (221 commits) xfs: simplify iext overflow checking and upgrade xfs: remove a racy if_bytes check in xfs_reflink_end_cow_extent xfs: upgrade the extent counters in xfs_reflink_end_cow_extent later xfs: xfs_quota_unreserve_blkres can't fail xfs: consolidate the xfs_quota_reserve_blkres definitions xfs: clean up buffer allocation in xlog_do_recovery_pass xfs: fix log recovery buffer allocation for the legacy h_size fixup xfs: widen flags argument to the xfs_iflags_* helpers xfs: minor cleanups of xfs_attr3_rmt_blocks xfs: create a helper to compute the blockcount of a max sized remote value xfs: turn XFS_ATTR3_RMT_BUF_SPACE into a function xfs: use unsigned ints for non-negative quantities in xfs_attr_remote.c xfs: do not allocate the entire delalloc extent in xfs_bmapi_write xfs: fix xfs_bmap_add_extent_delay_real for partial conversions xfs: remove the xfs_iext_peek_prev_extent call in xfs_bmapi_allocate xfs: pass the actual offset and len to allocate to xfs_bmapi_allocate xfs: don't open code XFS_FILBLKS_MIN in xfs_bmapi_write xfs: lift a xfs_valid_startblock into xfs_bmapi_allocate xfs: remove the unusued tmp_logflags variable in xfs_bmapi_allocate xfs: fix error returns from xfs_bmapi_write ...
237 lines
5.3 KiB
Makefile
237 lines
5.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Copyright (c) 2000-2005 Silicon Graphics, Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
|
|
ccflags-y += -I $(src) # needed for trace events
|
|
ccflags-y += -I $(src)/libxfs
|
|
|
|
obj-$(CONFIG_XFS_FS) += xfs.o
|
|
|
|
# this one should be compiled first, as the tracing macros can easily blow up
|
|
xfs-y += xfs_trace.o
|
|
|
|
# build the libxfs code first
|
|
xfs-y += $(addprefix libxfs/, \
|
|
xfs_ag.o \
|
|
xfs_alloc.o \
|
|
xfs_alloc_btree.o \
|
|
xfs_attr.o \
|
|
xfs_attr_leaf.o \
|
|
xfs_attr_remote.o \
|
|
xfs_bit.o \
|
|
xfs_bmap.o \
|
|
xfs_bmap_btree.o \
|
|
xfs_btree.o \
|
|
xfs_btree_staging.o \
|
|
xfs_da_btree.o \
|
|
xfs_defer.o \
|
|
xfs_dir2.o \
|
|
xfs_dir2_block.o \
|
|
xfs_dir2_data.o \
|
|
xfs_dir2_leaf.o \
|
|
xfs_dir2_node.o \
|
|
xfs_dir2_sf.o \
|
|
xfs_dquot_buf.o \
|
|
xfs_exchmaps.o \
|
|
xfs_ialloc.o \
|
|
xfs_ialloc_btree.o \
|
|
xfs_iext_tree.o \
|
|
xfs_inode_fork.o \
|
|
xfs_inode_buf.o \
|
|
xfs_log_rlimit.o \
|
|
xfs_ag_resv.o \
|
|
xfs_parent.o \
|
|
xfs_rmap.o \
|
|
xfs_rmap_btree.o \
|
|
xfs_refcount.o \
|
|
xfs_refcount_btree.o \
|
|
xfs_sb.o \
|
|
xfs_symlink_remote.o \
|
|
xfs_trans_inode.o \
|
|
xfs_trans_resv.o \
|
|
xfs_trans_space.o \
|
|
xfs_types.o \
|
|
)
|
|
# xfs_rtbitmap is shared with libxfs
|
|
xfs-$(CONFIG_XFS_RT) += $(addprefix libxfs/, \
|
|
xfs_rtbitmap.o \
|
|
)
|
|
|
|
# highlevel code
|
|
xfs-y += xfs_aops.o \
|
|
xfs_attr_inactive.o \
|
|
xfs_attr_list.o \
|
|
xfs_bmap_util.o \
|
|
xfs_bio_io.o \
|
|
xfs_buf.o \
|
|
xfs_dahash_test.o \
|
|
xfs_dir2_readdir.o \
|
|
xfs_discard.o \
|
|
xfs_error.o \
|
|
xfs_exchrange.o \
|
|
xfs_export.o \
|
|
xfs_extent_busy.o \
|
|
xfs_file.o \
|
|
xfs_filestream.o \
|
|
xfs_fsmap.o \
|
|
xfs_fsops.o \
|
|
xfs_globals.o \
|
|
xfs_handle.o \
|
|
xfs_health.o \
|
|
xfs_icache.o \
|
|
xfs_ioctl.o \
|
|
xfs_iomap.o \
|
|
xfs_iops.o \
|
|
xfs_inode.o \
|
|
xfs_itable.o \
|
|
xfs_iwalk.o \
|
|
xfs_message.o \
|
|
xfs_mount.o \
|
|
xfs_mru_cache.o \
|
|
xfs_pwork.o \
|
|
xfs_reflink.o \
|
|
xfs_stats.o \
|
|
xfs_super.o \
|
|
xfs_symlink.o \
|
|
xfs_sysfs.o \
|
|
xfs_trans.o \
|
|
xfs_xattr.o
|
|
|
|
# low-level transaction/log code
|
|
xfs-y += xfs_log.o \
|
|
xfs_log_cil.o \
|
|
xfs_bmap_item.o \
|
|
xfs_buf_item.o \
|
|
xfs_buf_item_recover.o \
|
|
xfs_dquot_item_recover.o \
|
|
xfs_exchmaps_item.o \
|
|
xfs_extfree_item.o \
|
|
xfs_attr_item.o \
|
|
xfs_icreate_item.o \
|
|
xfs_inode_item.o \
|
|
xfs_inode_item_recover.o \
|
|
xfs_iunlink_item.o \
|
|
xfs_refcount_item.o \
|
|
xfs_rmap_item.o \
|
|
xfs_log_recover.o \
|
|
xfs_trans_ail.o \
|
|
xfs_trans_buf.o
|
|
|
|
# optional features
|
|
xfs-$(CONFIG_XFS_QUOTA) += xfs_dquot.o \
|
|
xfs_dquot_item.o \
|
|
xfs_trans_dquot.o \
|
|
xfs_qm_syscalls.o \
|
|
xfs_qm_bhv.o \
|
|
xfs_qm.o \
|
|
xfs_quotaops.o
|
|
|
|
# xfs_rtbitmap is shared with libxfs
|
|
xfs-$(CONFIG_XFS_RT) += xfs_rtalloc.o
|
|
|
|
xfs-$(CONFIG_XFS_POSIX_ACL) += xfs_acl.o
|
|
xfs-$(CONFIG_SYSCTL) += xfs_sysctl.o
|
|
xfs-$(CONFIG_COMPAT) += xfs_ioctl32.o
|
|
xfs-$(CONFIG_EXPORTFS_BLOCK_OPS) += xfs_pnfs.o
|
|
|
|
# notify failure
|
|
ifeq ($(CONFIG_MEMORY_FAILURE),y)
|
|
xfs-$(CONFIG_FS_DAX) += xfs_notify_failure.o
|
|
endif
|
|
|
|
xfs-$(CONFIG_XFS_DRAIN_INTENTS) += xfs_drain.o
|
|
xfs-$(CONFIG_XFS_LIVE_HOOKS) += xfs_hooks.o
|
|
xfs-$(CONFIG_XFS_MEMORY_BUFS) += xfs_buf_mem.o
|
|
xfs-$(CONFIG_XFS_BTREE_IN_MEM) += libxfs/xfs_btree_mem.o
|
|
|
|
# online scrub/repair
|
|
ifeq ($(CONFIG_XFS_ONLINE_SCRUB),y)
|
|
|
|
# Tracepoints like to blow up, so build that before everything else
|
|
|
|
xfs-y += $(addprefix scrub/, \
|
|
trace.o \
|
|
agb_bitmap.o \
|
|
agheader.o \
|
|
alloc.o \
|
|
attr.o \
|
|
bitmap.o \
|
|
bmap.o \
|
|
btree.o \
|
|
common.o \
|
|
dabtree.o \
|
|
dir.o \
|
|
dirtree.o \
|
|
fscounters.o \
|
|
health.o \
|
|
ialloc.o \
|
|
inode.o \
|
|
iscan.o \
|
|
listxattr.o \
|
|
nlinks.o \
|
|
parent.o \
|
|
readdir.o \
|
|
refcount.o \
|
|
rmap.o \
|
|
scrub.o \
|
|
symlink.o \
|
|
xfarray.o \
|
|
xfblob.o \
|
|
xfile.o \
|
|
)
|
|
|
|
xfs-$(CONFIG_XFS_ONLINE_SCRUB_STATS) += scrub/stats.o
|
|
|
|
xfs-$(CONFIG_XFS_RT) += $(addprefix scrub/, \
|
|
rtbitmap.o \
|
|
rtsummary.o \
|
|
)
|
|
|
|
xfs-$(CONFIG_XFS_QUOTA) += $(addprefix scrub/, \
|
|
dqiterate.o \
|
|
quota.o \
|
|
quotacheck.o \
|
|
)
|
|
|
|
# online repair
|
|
ifeq ($(CONFIG_XFS_ONLINE_REPAIR),y)
|
|
xfs-y += $(addprefix scrub/, \
|
|
agheader_repair.o \
|
|
alloc_repair.o \
|
|
attr_repair.o \
|
|
bmap_repair.o \
|
|
cow_repair.o \
|
|
dir_repair.o \
|
|
dirtree_repair.o \
|
|
findparent.o \
|
|
fscounters_repair.o \
|
|
ialloc_repair.o \
|
|
inode_repair.o \
|
|
newbt.o \
|
|
nlinks_repair.o \
|
|
orphanage.o \
|
|
parent_repair.o \
|
|
rcbag_btree.o \
|
|
rcbag.o \
|
|
reap.o \
|
|
refcount_repair.o \
|
|
repair.o \
|
|
rmap_repair.o \
|
|
symlink_repair.o \
|
|
tempfile.o \
|
|
)
|
|
|
|
xfs-$(CONFIG_XFS_RT) += $(addprefix scrub/, \
|
|
rtbitmap_repair.o \
|
|
rtsummary_repair.o \
|
|
)
|
|
|
|
xfs-$(CONFIG_XFS_QUOTA) += $(addprefix scrub/, \
|
|
quota_repair.o \
|
|
quotacheck_repair.o \
|
|
)
|
|
endif
|
|
endif
|