linux/fs/xfs
Darrick J. Wong 44e69c9af1 xfs: use realtime EFI to free extents when rtgroups are enabled
When rmap is enabled, XFS expects a certain order of operations, which
is: 1) remove the file mapping, 2) remove the reverse mapping, and then
3) free the blocks.  When reflink is enabled, XFS replaces (3) with a
deferred refcount decrement operation that can schedule freeing the
blocks if that was the last refcount.

For realtime files, xfs_bmap_del_extent_real tries to do 1 and 3 in the
same transaction, which will break both rmap and reflink unless we
switch it to use realtime EFIs.  Both rmap and reflink depend on the
rtgroups feature, so let's turn on EFIs for all rtgroups filesystems.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2024-11-05 13:38:42 -08:00
..
libxfs xfs: use realtime EFI to free extents when rtgroups are enabled 2024-11-05 13:38:42 -08:00
scrub xfs: encode the rtsummary in big endian format 2024-11-05 13:38:41 -08:00
Kconfig xfs: verify buffer, inode, and dquot items every tx commit 2024-07-02 11:36:54 -07:00
Makefile xfs: create incore realtime group structures 2024-11-05 13:38:35 -08:00
xfs_acl.c
xfs_acl.h
xfs_aops.c xfs: support the COW fork in xfs_bmap_punch_delalloc_range 2024-10-15 11:37:42 +02:00
xfs_aops.h
xfs_attr_inactive.c
xfs_attr_item.c xfs: fix xfs_init_attr_trans not handling explicit operation codes 2024-05-27 15:55:52 +05:30
xfs_attr_item.h
xfs_attr_list.c xfs: convert comma to semicolon 2024-07-29 09:32:53 +05:30
xfs_bio_io.c
xfs_bmap_item.c xfs: store rtgroup information with a bmap intent 2024-11-05 13:38:41 -08:00
xfs_bmap_item.h
xfs_bmap_util.c xfs: force swapext to a realtime file to use the file content exchange ioctl 2024-11-05 13:38:41 -08:00
xfs_bmap_util.h xfs: support the COW fork in xfs_bmap_punch_delalloc_range 2024-10-15 11:37:42 +02:00
xfs_buf_item_recover.c xfs: add block headers to realtime bitmap and summary blocks 2024-11-05 13:38:40 -08:00
xfs_buf_item.c xfs: verify buffer, inode, and dquot items every tx commit 2024-07-02 11:36:54 -07:00
xfs_buf_item.h
xfs_buf_mem.c mm,tmpfs: consider end of file write in shmem_is_huge 2024-09-09 16:39:12 -07:00
xfs_buf_mem.h
xfs_buf.c getting rid of bogus set_blocksize() uses, switching it 2024-05-21 08:34:51 -07:00
xfs_buf.h treewide: Fix wrong singular form of jiffies in comments 2024-09-08 20:47:40 +02:00
xfs_dahash_test.c
xfs_dahash_test.h
xfs_dir2_readdir.c xfs: refactor dir format helpers 2024-04-26 11:21:46 +05:30
xfs_discard.c xfs: add block headers to realtime bitmap and summary blocks 2024-11-05 13:38:40 -08:00
xfs_discard.h
xfs_dquot_item_recover.c
xfs_dquot_item.c xfs: verify buffer, inode, and dquot items every tx commit 2024-07-02 11:36:54 -07:00
xfs_dquot_item.h
xfs_dquot.c xfs: don't count metadata directory files to quota 2024-11-05 13:38:32 -08:00
xfs_dquot.h
xfs_drain.c xfs: store a generic group structure in the intents 2024-11-05 13:38:30 -08:00
xfs_drain.h xfs: store a generic group structure in the intents 2024-11-05 13:38:30 -08:00
xfs_error.c
xfs_error.h
xfs_exchmaps_item.c
xfs_exchmaps_item.h
xfs_exchrange.c struct fd layout change (and conversion to accessor helpers) 2024-09-23 09:35:36 -07:00
xfs_exchrange.h xfs: introduce new file range commit ioctls 2024-09-01 08:58:19 -07:00
xfs_export.c xfs: add parent pointer ioctls 2024-04-23 07:47:00 -07:00
xfs_export.h xfs: add parent pointer ioctls 2024-04-23 07:47:00 -07:00
xfs_extent_busy.c xfs: convert busy extent tracking to the generic group structure 2024-11-05 13:38:29 -08:00
xfs_extent_busy.h xfs: convert busy extent tracking to the generic group structure 2024-11-05 13:38:29 -08:00
xfs_extfree_item.c xfs: support logging EFIs for realtime extents 2024-11-05 13:38:42 -08:00
xfs_extfree_item.h xfs: move xfs_extent_free_defer_add to xfs_extfree_item.c 2024-07-02 11:37:03 -07:00
xfs_file.c xfs: take XFS_MMAPLOCK_EXCL xfs_file_write_zero_eof 2024-10-15 11:37:42 +02:00
xfs_file.h
xfs_filestream.c xfs: factor out a generic xfs_group structure 2024-11-05 13:38:27 -08:00
xfs_filestream.h
xfs_fsmap.c xfs: make RT extent numbers relative to the rtgroup 2024-11-05 13:38:38 -08:00
xfs_fsmap.h xfs: clean up xfs_getfsmap_helper arguments 2024-11-05 13:38:35 -08:00
xfs_fsops.c xfs: standardize EXPERIMENTAL warning generation 2024-11-05 13:38:30 -08:00
xfs_fsops.h
xfs_globals.c
xfs_handle.c struct fd: representation change 2024-08-12 22:01:05 -04:00
xfs_handle.h xfs: add parent pointer ioctls 2024-04-23 07:47:00 -07:00
xfs_health.c xfs: export the geometry of realtime groups to userspace 2024-11-05 13:38:40 -08:00
xfs_hooks.c
xfs_hooks.h
xfs_icache.c xfs: record health problems with the metadata directory 2024-11-05 13:38:33 -08:00
xfs_icache.h
xfs_icreate_item.c
xfs_icreate_item.h
xfs_inode_item_recover.c xfs: define the on-disk format for the metadir feature 2024-11-05 13:38:31 -08:00
xfs_inode_item.c xfs: define the on-disk format for the metadir feature 2024-11-05 13:38:31 -08:00
xfs_inode_item.h
xfs_inode.c xfs: remove XFS_ILOCK_RT* 2024-11-05 13:38:37 -08:00
xfs_inode.h xfs: remove XFS_ILOCK_RT* 2024-11-05 13:38:37 -08:00
xfs_ioctl32.c
xfs_ioctl32.h
xfs_ioctl.c xfs: export the geometry of realtime groups to userspace 2024-11-05 13:38:40 -08:00
xfs_ioctl.h
xfs_iomap.c xfs: make RT extent numbers relative to the rtgroup 2024-11-05 13:38:38 -08:00
xfs_iomap.h
xfs_iops.c xfs: hide metadata inodes from everyone because they are special 2024-11-05 13:38:32 -08:00
xfs_iops.h
xfs_itable.c xfs: allow bulkstat to return metadata directories 2024-11-05 13:38:32 -08:00
xfs_itable.h xfs: allow bulkstat to return metadata directories 2024-11-05 13:38:32 -08:00
xfs_iunlink_item.c xfs: pass the iunlink item to the xfs_iunlink_update_dinode trace point 2024-11-05 13:38:26 -08:00
xfs_iunlink_item.h
xfs_iwalk.c xfs: switch perag iteration from the for_each macros to a while based iterator 2024-11-05 13:38:28 -08:00
xfs_iwalk.h xfs: factor out a xfs_iwalk_args helper 2024-11-05 13:38:27 -08:00
xfs_linux.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
xfs_log_cil.c xfs: remove the mount field from struct xfs_busy_extents 2024-11-05 13:38:25 -08:00
xfs_log_priv.h xfs: grant heads track byte counts, not LSNs 2024-07-04 12:46:47 +05:30
xfs_log_recover.c xfs: support logging EFIs for realtime extents 2024-11-05 13:38:42 -08:00
xfs_log.c xfs: Use xfs set and clear mp state helpers 2024-09-03 10:07:39 +05:30
xfs_log.h xfs: Remove empty declartion in header file 2024-10-07 08:00:11 +02:00
xfs_message.c xfs: define the on-disk format for the metadir feature 2024-11-05 13:38:31 -08:00
xfs_message.h xfs: define the on-disk format for the metadir feature 2024-11-05 13:38:31 -08:00
xfs_mount.c xfs: make RT extent numbers relative to the rtgroup 2024-11-05 13:38:38 -08:00
xfs_mount.h xfs: add block headers to realtime bitmap and summary blocks 2024-11-05 13:38:40 -08:00
xfs_mru_cache.c xfs: use LIST_HEAD() to simplify code 2024-09-03 10:07:42 +05:30
xfs_mru_cache.h
xfs_notify_failure.c
xfs_pnfs.c xfs: standardize EXPERIMENTAL warning generation 2024-11-05 13:38:30 -08:00
xfs_pnfs.h
xfs_pwork.c
xfs_pwork.h
xfs_qm_bhv.c xfs: Remove header files which are included more than once 2024-07-01 09:32:29 +05:30
xfs_qm_syscalls.c xfs: refactor loading quota inodes in the regular case 2024-09-01 08:58:20 -07:00
xfs_qm.c xfs: move RT bitmap and summary information to the rtgroup 2024-11-05 13:38:37 -08:00
xfs_qm.h xfs: refactor loading quota inodes in the regular case 2024-09-01 08:58:20 -07:00
xfs_quota.h xfs: don't count metadata directory files to quota 2024-11-05 13:38:32 -08:00
xfs_quotaops.c xfs: refactor loading quota inodes in the regular case 2024-09-01 08:58:20 -07:00
xfs_refcount_item.c xfs: store a generic group structure in the intents 2024-11-05 13:38:30 -08:00
xfs_refcount_item.h xfs: move xfs_refcount_update_defer_add to xfs_refcount_item.c 2024-07-02 11:37:07 -07:00
xfs_reflink.c xfs: switch perag iteration from the for_each macros to a while based iterator 2024-11-05 13:38:28 -08:00
xfs_reflink.h xfs: don't free cowblocks from under dirty pagecache on unshare 2024-10-09 10:05:10 +02:00
xfs_rmap_item.c xfs: store a generic group structure in the intents 2024-11-05 13:38:30 -08:00
xfs_rmap_item.h xfs: move xfs_rmap_update_defer_add to xfs_rmap_item.c 2024-07-02 11:37:05 -07:00
xfs_rtalloc.c xfs: grow the realtime section when realtime groups are enabled 2024-11-05 13:38:41 -08:00
xfs_rtalloc.h xfs: check the realtime superblock at mount time 2024-11-05 13:38:39 -08:00
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: check the realtime superblock at mount time 2024-11-05 13:38:39 -08:00
xfs_super.h
xfs_symlink.c xfs: pass the icreate args object to xfs_dialloc 2024-09-01 08:58:19 -07:00
xfs_symlink.h
xfs_sysctl.c sysctl: treewide: constify the ctl_table argument of proc_handlers 2024-07-24 20:59:29 +02:00
xfs_sysctl.h
xfs_sysfs.c xfs: grant heads track byte counts, not LSNs 2024-07-04 12:46:47 +05:30
xfs_sysfs.h
xfs_trace.c xfs: create incore realtime group structures 2024-11-05 13:38:35 -08:00
xfs_trace.h xfs: support logging EFIs for realtime extents 2024-11-05 13:38:42 -08:00
xfs_trans_ail.c xfs: revert AIL TASK_KILLABLE threshold 2024-08-14 21:19:34 +05:30
xfs_trans_buf.c xfs: update realtime super every time we update the primary fs super 2024-11-05 13:38:39 -08:00
xfs_trans_dquot.c xfs: don't count metadata directory files to quota 2024-11-05 13:38:32 -08:00
xfs_trans_priv.h xfs: l_last_sync_lsn is really AIL state 2024-07-04 12:46:46 +05:30
xfs_trans.c xfs: grow the realtime section when realtime groups are enabled 2024-11-05 13:38:41 -08:00
xfs_trans.h xfs: grow the realtime section when realtime groups are enabled 2024-11-05 13:38:41 -08:00
xfs_xattr.c xfs: standardize EXPERIMENTAL warning generation 2024-11-05 13:38:30 -08:00
xfs_xattr.h
xfs.h xfs: verify buffer, inode, and dquot items every tx commit 2024-07-02 11:36:54 -07:00