linux-yocto/fs/xfs
Christoph Hellwig 5948705adb xfs: don't allocate the xfs_extent_busy structure for zoned RTGs
Busy extent tracking is primarily used to ensure that freed blocks are
not reused for data allocations before the transaction that deleted them
has been committed to stable storage, and secondarily to drive online
discard.  None of the use cases applies to zoned RTGs, as the zoned
allocator can't overwrite blocks before resetting the zone, which already
flushes out all transactions touching the RTGs.

So the busy extent tracking is not needed for zoned RTGs, and also not
called for zoned RTGs.  But somehow the code to skip allocating and
freeing the structure got lost during the zoned XFS upstreaming process.
This not only causes these structures to unnecessarily allocated, but can
also lead to memory leaks as the xg_busy_extents pointer in the
xfs_group structure is overlayed with the pointer for the linked list
of to be reset zones.

Stop allocating and freeing the structure to not pointlessly allocate
memory which is then leaked when the zone is reset.

Fixes: 080d01c41d ("xfs: implement zoned garbage collection")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: <stable@vger.kernel.org> # v6.15
[cem: Fix type and add stable tag]
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
2025-07-18 17:42:31 +02:00
..
libxfs xfs: don't allocate the xfs_extent_busy structure for zoned RTGs 2025-07-18 17:42:31 +02:00
scrub xfs: New code for 6.16 2025-05-26 12:56:01 -07:00
Kconfig lib/crc: remove CONFIG_LIBCRC32C 2025-04-04 11:31:42 -07:00
Makefile xfs: export zone stats in /proc/*/mountstats 2025-03-03 08:17:10 -07:00
xfs_acl.c
xfs_acl.h
xfs_aops.c iomap: don't lose folio dropbehind state for overwrites 2025-05-28 09:26:07 +02:00
xfs_aops.h xfs: implement direct writes to zoned RT devices 2025-03-03 08:17:07 -07:00
xfs_attr_inactive.c xfs: remove bp->b_error check in xfs_attr3_root_inactive 2025-01-13 14:56:15 +01:00
xfs_attr_item.c
xfs_attr_item.h
xfs_attr_list.c xfs: eliminate lockdep false positives in xfs_attr_shortform_list 2024-11-22 09:52:03 +01:00
xfs_bio_io.c xfs: simplify xfs_rw_bdev 2025-05-07 07:31:07 -06:00
xfs_bmap_item.c xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_bmap_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_bmap_util.c xfs: implement buffered writes to zoned RT devices 2025-03-03 08:17:07 -07:00
xfs_bmap_util.h xfs: implement buffered writes to zoned RT devices 2025-03-03 08:17:07 -07:00
xfs_buf_item_recover.c xfs: kill XBF_UNMAPPED 2025-03-10 14:29:44 +01:00
xfs_buf_item.c xfs: fix unmount hang with unflushable inodes stuck in the AIL 2025-06-27 14:14:37 +02:00
xfs_buf_item.h xfs: fix unmount hang with unflushable inodes stuck in the AIL 2025-06-27 14:14:37 +02:00
xfs_buf_mem.c xfs: compute buffer address correctly in xmbuf_map_backing_mem 2025-04-14 11:22:52 +02:00
xfs_buf_mem.h xfs: cleanup mapping tmpfs folios into the buffer cache 2025-03-10 14:29:44 +01:00
xfs_buf.c xfs: remove the bt_bdev_file buftarg field 2025-07-08 13:30:26 +02:00
xfs_buf.h xfs: remove the bt_bdev_file buftarg field 2025-07-08 13:30:26 +02:00
xfs_dahash_test.c
xfs_dahash_test.h
xfs_dir2_readdir.c
xfs_discard.c xfs: add a xfs_group_type_buftarg helper 2025-07-08 13:30:26 +02:00
xfs_discard.h
xfs_dquot_item_recover.c
xfs_dquot_item.c xfs: attach dquot buffer to dquot log item buffer 2024-12-12 17:45:11 -08:00
xfs_dquot_item.h xfs: attach dquot buffer to dquot log item buffer 2024-12-12 17:45:11 -08:00
xfs_dquot.c xfs: avoid dquot buffer pin deadlock 2025-06-27 14:14:37 +02:00
xfs_dquot.h xfs: prepare to reuse the dquot pointer space in struct xfs_inode 2024-12-23 13:06:03 -08:00
xfs_drain.c xfs: allow queued realtime intents to drain before scrubbing 2024-12-23 13:06:06 -08:00
xfs_drain.h xfs: allow queued realtime intents to drain before scrubbing 2024-12-23 13:06:06 -08:00
xfs_error.c xfs: allow inode-based btrees to reserve space in the data device 2024-12-23 13:06:03 -08:00
xfs_error.h
xfs_exchmaps_item.c
xfs_exchmaps_item.h
xfs_exchrange.c xfs: don't call remap_verify_area with sb write protection held 2025-01-24 12:08:50 +01:00
xfs_exchrange.h
xfs_export.c
xfs_export.h
xfs_extent_busy.c xfs: implement zoned garbage collection 2025-03-03 08:17:07 -07:00
xfs_extent_busy.h xfs: don't allocate the xfs_extent_busy structure for zoned RTGs 2025-07-18 17:42:31 +02:00
xfs_extfree_item.c xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_extfree_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_file.c xfs: rename the bt_bdev_* buftarg fields 2025-07-08 13:30:26 +02:00
xfs_file.h
xfs_filestream.c xfs: free the item in xfs_mru_cache_insert on failure 2025-05-14 19:00:12 +02:00
xfs_filestream.h
xfs_fsmap.c xfs: fix fsmap for internal zoned devices 2025-04-16 12:56:10 +02:00
xfs_fsmap.h
xfs_fsops.c xfs: remove the flags argument to xfs_buf_read_uncached 2025-03-18 14:47:45 +01:00
xfs_fsops.h xfs: support reserved blocks for the rt extent counter 2025-03-03 08:16:43 -07:00
xfs_globals.c xfs: Remove deprecated xfs_bufd sysctl parameters 2025-05-14 12:35:24 +02:00
xfs_handle.c
xfs_handle.h
xfs_health.c xfs: report realtime refcount btree corruption errors to the health system 2024-12-23 13:06:14 -08:00
xfs_hooks.c
xfs_hooks.h
xfs_icache.c xfs: xfs_ifree_cluster vs xfs_iflush_shutdown_abort deadlock 2025-06-27 14:08:39 +02:00
xfs_icache.h
xfs_icreate_item.c
xfs_icreate_item.h
xfs_inode_item_recover.c xfs: define the zoned on-disk format 2025-03-03 08:16:45 -07:00
xfs_inode_item.c xfs: add tracepoints for stale pinned inode state debug 2025-06-27 14:14:37 +02:00
xfs_inode_item.h
xfs_inode.c xfs: xfs_ifree_cluster vs xfs_iflush_shutdown_abort deadlock 2025-06-27 14:08:39 +02:00
xfs_inode.h xfs: rename the bt_bdev_* buftarg fields 2025-07-08 13:30:26 +02:00
xfs_ioctl.c xfs: support reserved blocks for the rt extent counter 2025-03-03 08:16:43 -07:00
xfs_ioctl.h
xfs_ioctl32.c
xfs_ioctl32.h
xfs_iomap.c xfs: rename the bt_bdev_* buftarg fields 2025-07-08 13:30:26 +02:00
xfs_iomap.h xfs: add xfs_atomic_write_cow_iomap_begin() 2025-05-07 14:25:31 -07:00
xfs_iops.c xfs: rename the bt_bdev_* buftarg fields 2025-07-08 13:30:26 +02:00
xfs_iops.h xfs: refine atomic write size check in xfs_file_write_iter() 2025-05-07 14:25:31 -07:00
xfs_itable.c
xfs_itable.h
xfs_iunlink_item.c
xfs_iunlink_item.h
xfs_iwalk.c
xfs_iwalk.h
xfs_linux.h
xfs_log_cil.c xfs: add tracepoints for stale pinned inode state debug 2025-06-27 14:14:37 +02:00
xfs_log_priv.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_log_recover.c xfs: decouple buffer readahead from the normal buffer read path 2025-02-25 13:05:59 +01:00
xfs_log.c xfs: simplify building the bio in xlog_write_iclog 2025-05-07 07:31:07 -06:00
xfs_log.h
xfs_message.c xfs: remove the EXPERIMENTAL warning for pNFS 2025-05-14 12:42:12 +02:00
xfs_message.h xfs: remove the EXPERIMENTAL warning for pNFS 2025-05-14 12:42:12 +02:00
xfs_mount.c xfs: rename the bt_bdev_* buftarg fields 2025-07-08 13:30:26 +02:00
xfs_mount.h xfs: add a xfs_group_type_buftarg helper 2025-07-08 13:30:26 +02:00
xfs_mru_cache.c xfs: Improve error handling in xfs_mru_cache_create() 2025-06-16 10:07:21 +02:00
xfs_mru_cache.h
xfs_notify_failure.c xfs: add a xfs_group_type_buftarg helper 2025-07-08 13:30:26 +02:00
xfs_notify_failure.h xfs: react to fsdax failure notifications on the rt device 2024-12-23 13:06:09 -08:00
xfs_pnfs.c xfs: remove the EXPERIMENTAL warning for pNFS 2025-05-14 12:42:12 +02:00
xfs_pnfs.h
xfs_pwork.c
xfs_pwork.h
xfs_qm_bhv.c xfs: Do not allow norecovery mount with quotacheck 2025-02-14 09:40:35 +01:00
xfs_qm_syscalls.c xfs: delalloc and quota softlimit timers are incoherent 2024-11-22 11:24:45 +01:00
xfs_qm.c xfs: avoid dquot buffer pin deadlock 2025-06-27 14:14:37 +02:00
xfs_qm.h xfs: keep quota directory inode loaded 2024-12-12 17:45:08 -08:00
xfs_quota.h xfs: prepare to reuse the dquot pointer space in struct xfs_inode 2024-12-23 13:06:03 -08:00
xfs_quotaops.c
xfs_refcount_item.c xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_refcount_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_reflink.c xfs: add xfs_calc_atomic_write_unit_max() 2025-05-07 14:25:32 -07:00
xfs_reflink.h xfs: add xfs_calc_atomic_write_unit_max() 2025-05-07 14:25:32 -07:00
xfs_rmap_item.c xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_rmap_item.h xfs: add helpers to compute log item overhead 2025-05-07 14:25:30 -07:00
xfs_rtalloc.c xfs: actually use the xfs_growfs_check_rtgeom tracepoint 2025-06-16 10:18:01 +02:00
xfs_rtalloc.h xfs: make metabtree reservations global 2025-03-03 08:16:43 -07:00
xfs_stats.c xfs: introduce realtime refcount btree ondisk definitions 2024-12-23 13:06:10 -08:00
xfs_stats.h xfs: introduce realtime refcount btree ondisk definitions 2024-12-23 13:06:10 -08:00
xfs_super.c xfs: use xfs_readonly_buftarg in xfs_remount_rw 2025-06-16 10:05:08 +02:00
xfs_super.h xfs: react to fsdax failure notifications on the rt device 2024-12-23 13:06:09 -08:00
xfs_symlink.c
xfs_symlink.h
xfs_sysctl.c treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
xfs_sysctl.h xfs: Remove deprecated xfs_bufd sysctl parameters 2025-05-14 12:35:24 +02:00
xfs_sysfs.c xfs: add tunable threshold parameter for triggering zone GC 2025-04-14 10:41:33 +02:00
xfs_sysfs.h xfs: contain more sysfs code in xfs_sysfs.c 2025-03-03 08:17:10 -07:00
xfs_trace.c xfs: add the zoned space allocator 2025-03-03 08:16:56 -07:00
xfs_trace.h xfs: refactor xfs_calc_atomic_write_unit_max 2025-07-08 13:30:26 +02:00
xfs_trans_ail.c xfs: Fix comment on xfs_trans_ail_update_bulk() 2025-05-14 15:37:50 +02:00
xfs_trans_buf.c xfs: add a b_iodone callback to struct xfs_buf 2025-01-14 11:38:15 +01:00
xfs_trans_dquot.c xfs: prepare to reuse the dquot pointer space in struct xfs_inode 2024-12-23 13:06:03 -08:00
xfs_trans_priv.h xfs: remove the leftover xfs_{set,clear}_li_failed infrastructure 2025-04-14 10:24:30 +02:00
xfs_trans.c xfs: add tracepoints for stale pinned inode state debug 2025-06-27 14:14:37 +02:00
xfs_trans.h xfs: remove the t_magic field in struct xfs_trans 2025-01-13 14:55:19 +01:00
xfs_xattr.c xfs: replace strncpy with memcpy in xattr listing 2025-07-08 11:50:09 +02:00
xfs_xattr.h
xfs_zone_alloc.c xfs: move xfs_submit_zoned_bio a bit 2025-06-16 10:05:08 +02:00
xfs_zone_alloc.h xfs: export zone stats in /proc/*/mountstats 2025-03-03 08:17:10 -07:00
xfs_zone_gc.c - The 3 patch series "hung_task: extend blocking task stacktrace dump to 2025-05-31 19:12:53 -07:00
xfs_zone_info.c xfs: export zone stats in /proc/*/mountstats 2025-03-03 08:17:10 -07:00
xfs_zone_priv.h xfs: support write life time based data placement 2025-03-03 08:17:10 -07:00
xfs_zone_space_resv.c xfs: trigger zone GC when out of available rt blocks 2025-03-11 12:52:27 +01:00
xfs.h