linux/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.h xfs: verify buffer, inode, and dquot items every tx commit 2024-07-02 11:36:54 -07:00
xfs_acl.c xfs: make attr removal an explicit operation 2024-04-23 07:46:51 -07:00
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: fix xfs_init_attr_trans not handling explicit operation codes 2024-05-27 15:55:52 +05:30
xfs_attr_item.h xfs: create attr log item opcodes and formats for parent pointers 2024-04-23 07:46:57 -07:00
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.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_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_item_recover.c xfs: kill XBF_UNMAPPED 2025-03-10 14:29:44 +01: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_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 a xfs_group_type_buftarg helper 2025-07-08 13:30:26 +02:00
xfs_discard.h
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_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_item_recover.c
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: capture inode generation numbers in the ondisk exchmaps log item 2024-04-15 14:54:24 -07:00
xfs_exchmaps_item.h xfs: create deferred log items for file mapping exchanges 2024-04-15 14:54:17 -07:00
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: 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: 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: create a new helper to return a file's allocation unit 2024-04-15 14:54:10 -07:00
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: clean up xfs_getfsmap_helper arguments 2024-11-05 13:38:35 -08:00
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 simplify xfs_find_handle() a bit 2024-11-03 01:28:06 -05:00
xfs_handle.h xfs: add parent pointer ioctls 2024-04-23 07:47:00 -07:00
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: allow scrub to hook metadata updates in other writers 2024-02-22 12:30:45 -08:00
xfs_hooks.h xfs: allow scrub to hook metadata updates in other writers 2024-02-22 12:30:45 -08:00
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: convert kmem_free() for kvmalloc users to kvfree() 2024-02-13 18:07:34 +05:30
xfs_icreate_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_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_item_recover.c xfs: define the zoned on-disk format 2025-03-03 08:16:45 -07: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: move handle ioctl code to xfs_handle.c 2024-04-23 07:47:00 -07:00
xfs_ioctl32.c xfs: move handle ioctl code to xfs_handle.c 2024-04-23 07:47:00 -07:00
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: 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.c xfs: simplify building the bio in xlog_write_iclog 2025-05-07 07:31:07 -06:00
xfs_log.h xfs: Remove empty declartion in header file 2024-10-07 08:00:11 +02:00
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_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.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_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_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: refactor loading quota inodes in the regular case 2024-09-01 08:58:20 -07:00
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: pass the icreate args object to xfs_dialloc 2024-09-01 08:58:19 -07:00
xfs_symlink.h xfs: move remote symlink target read function to libxfs 2024-02-22 12:45:17 -08:00
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.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_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_xattr.c xfs: replace strncpy with memcpy in xattr listing 2025-07-08 11:50:09 +02:00
xfs_xattr.h xfs: remove xfs_da_args.attr_flags 2024-04-23 07:46:50 -07:00
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