linux/fs/xfs/libxfs
Christoph Hellwig 1df8d75030 xfs: make metabtree reservations global
Currently each metabtree inode has it's own space reservation to ensure
it can be expanded to the maximum size, mirroring what is done for the
AG-based btrees.  But unlike the AG-based btrees the metabtree inodes
aren't restricted to allocate from a single AG but can use free space
form the entire file system.  And unlike AG-based btrees where the
required reservation shrinks with the available free space due to this,
the metabtree reservations for the rtrmap and rtfreflink trees are not
bound in any way by the data device free space as they track RT extent
allocations.  This is not very efficient as it requires a large number
of blocks to be set aside that can't be used at all by other btrees.

Switch to a model that uses a global pool instead in preparation for
reducing the amount of reserved space, which now also removes the
overloading of the i_nblocks field for metabtree inodes, which would
create problems if metabtree inodes ever had a big enough xattr fork
to require xattr blocks outside the inode.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
2025-03-03 08:16:43 -07:00
..
xfs_ag.c xfs: move the min and max group block numbers to xfs_group 2024-11-05 13:38:44 -08:00
xfs_ag.h xfs: move the min and max group block numbers to xfs_group 2024-11-05 13:38:44 -08:00
xfs_ag_resv.c xfs: allow inode-based btrees to reserve space in the data device 2024-12-23 13:06:03 -08:00
xfs_ag_resv.h xfs: get rid of xfs_ag_resv_rmapbt_alloc 2024-07-04 14:36:13 +05:30
xfs_alloc.c xfs: shard the realtime section [v5.5 06/10] 2024-11-12 11:00:42 +01:00
xfs_alloc.h xfs: support logging EFIs for realtime extents 2024-11-05 13:38:42 -08:00
xfs_alloc_btree.c xfs: add a generic group pointer to the btree cursor 2024-11-05 13:38:29 -08:00
xfs_alloc_btree.h xfs: standardize the btree maxrecs function parameters 2024-09-01 08:58:20 -07:00
xfs_attr.c xfs: prepare to reuse the dquot pointer space in struct xfs_inode 2024-12-23 13:06:03 -08:00
xfs_attr.h xfs: fix xfs_init_attr_trans not handling explicit operation codes 2024-05-27 15:55:52 +05:30
xfs_attr_leaf.c xfs: distinguish extra split from real ENOSPC from xfs_attr3_leaf_split 2024-10-07 08:00:11 +02:00
xfs_attr_leaf.h xfs: return bool from xfs_attr3_leaf_add 2024-10-07 08:00:11 +02:00
xfs_attr_remote.c xfs: minor cleanups of xfs_attr3_rmt_blocks 2024-05-02 07:48:37 -07:00
xfs_attr_remote.h xfs: create a helper to compute the blockcount of a max sized remote value 2024-05-02 07:48:36 -07:00
xfs_attr_sf.h
xfs_bit.c
xfs_bit.h
xfs_bmap.c xfs: fix the entry condition of exact EOF block allocation optimization 2025-01-24 12:05:12 +01:00
xfs_bmap.h xfs: store a generic group structure in the intents 2024-11-05 13:38:30 -08:00
xfs_bmap_btree.c xfs: tidy up xfs_bmap_broot_realloc a bit 2024-12-23 13:06:02 -08:00
xfs_bmap_btree.h xfs: make xfs_iroot_realloc a bmap btree function 2024-12-23 13:06:02 -08:00
xfs_btree.c xfs: introduce realtime refcount btree ondisk definitions 2024-12-23 13:06:10 -08:00
xfs_btree.h xfs: wire up realtime refcount btree cursors 2024-12-23 13:06:12 -08:00
xfs_btree_mem.c xfs: create a shadow rmap btree during realtime rmap repair 2024-12-23 13:06:09 -08:00
xfs_btree_mem.h
xfs_btree_staging.c xfs: online repair of the realtime rmap btree 2024-12-23 13:06:09 -08:00
xfs_btree_staging.h
xfs_cksum.h
xfs_da_btree.c xfs: distinguish extra split from real ENOSPC from xfs_attr3_leaf_split 2024-10-07 08:00:11 +02:00
xfs_da_btree.h
xfs_da_format.h xfs: turn XFS_ATTR3_RMT_BUF_SPACE into a function 2024-05-02 07:48:36 -07:00
xfs_defer.c xfs: support logging EFIs for realtime extents 2024-11-05 13:38:42 -08:00
xfs_defer.h xfs: add a realtime flag to the refcount update log redo items 2024-12-23 13:06:11 -08:00
xfs_dir2.c xfs/libxfs: replace kmalloc() and memcpy() with kmemdup() 2025-01-13 14:58:04 +01:00
xfs_dir2.h xfs: mark xfs_dir_isempty static 2025-01-13 14:55:06 +01:00
xfs_dir2_block.c
xfs_dir2_data.c xfs: don't walk off the end of a directory data block 2024-07-01 09:32:29 +05:30
xfs_dir2_leaf.c
xfs_dir2_node.c
xfs_dir2_priv.h xfs: don't walk off the end of a directory data block 2024-07-01 09:32:29 +05:30
xfs_dir2_sf.c
xfs_dquot_buf.c xfs: use metadir for quota inodes 2024-11-05 13:38:45 -08:00
xfs_errortag.h xfs: allow inode-based btrees to reserve space in the data device 2024-12-23 13:06:03 -08:00
xfs_exchmaps.c xfs: realtime rmap btree transaction reservations 2024-12-23 13:06:04 -08:00
xfs_exchmaps.h
xfs_format.h xfs: wire up a new metafile type for the realtime refcount 2024-12-23 13:06:12 -08:00
xfs_fs.h xfs: scrub the metadir path of rt refcount btree files 2024-12-23 13:06:15 -08:00
xfs_group.c xfs: add group based bno conversion helpers 2024-11-05 13:38:29 -08:00
xfs_group.h xfs: move the min and max group block numbers to xfs_group 2024-11-05 13:38:44 -08:00
xfs_health.h xfs: report realtime refcount btree corruption errors to the health system 2024-12-23 13:06:14 -08:00
xfs_ialloc.c xfs: generalize the freespace and reserved blocks handling 2025-03-03 08:16:37 -07:00
xfs_ialloc.h xfs: pass the icreate args object to xfs_dialloc 2024-09-01 08:58:19 -07:00
xfs_ialloc_btree.c xfs: return a 64-bit block count from xfs_btree_count_blocks 2024-12-12 17:45:09 -08:00
xfs_ialloc_btree.h xfs: standardize the btree maxrecs function parameters 2024-09-01 08:58:20 -07:00
xfs_iext_tree.c
xfs_inode_buf.c xfs: apply rt extent alignment constraints to CoW extsize hint 2024-12-23 13:06:14 -08:00
xfs_inode_buf.h xfs: enforce metadata inode flag 2024-11-05 13:38:31 -08:00
xfs_inode_fork.c xfs: wire up a new metafile type for the realtime refcount 2024-12-23 13:06:12 -08:00
xfs_inode_fork.h xfs: make xfs_iroot_realloc a bmap btree function 2024-12-23 13:06:02 -08:00
xfs_inode_util.c xfs: define the on-disk format for the metadir feature 2024-11-05 13:38:31 -08:00
xfs_inode_util.h xfs: hoist inode free function to libxfs 2024-07-02 11:36:59 -07:00
xfs_log_format.h xfs: remove XFS_ILOG_NONCORE 2025-01-13 14:55:14 +01:00
xfs_log_recover.h xfs: add a realtime flag to the refcount update log redo items 2024-12-23 13:06:11 -08:00
xfs_log_rlimit.c
xfs_metadir.c xfs: allow inode-based btrees to reserve space in the data device 2024-12-23 13:06:03 -08:00
xfs_metadir.h xfs: read and write metadata inode directory tree 2024-11-05 13:38:31 -08:00
xfs_metafile.c xfs: make metabtree reservations global 2025-03-03 08:16:43 -07:00
xfs_metafile.h xfs: make metabtree reservations global 2025-03-03 08:16:43 -07:00
xfs_ondisk.h xfs: wire up a new metafile type for the realtime refcount 2024-12-23 13:06:12 -08:00
xfs_parent.c
xfs_parent.h
xfs_quota_defs.h xfs: use metadir for quota inodes 2024-11-05 13:38:45 -08:00
xfs_refcount.c xfs: recover CoW leftovers in the realtime volume 2024-12-23 13:06:13 -08:00
xfs_refcount.h xfs: recover CoW leftovers in the realtime volume 2024-12-23 13:06:13 -08:00
xfs_refcount_btree.c xfs: add a generic group pointer to the btree cursor 2024-11-05 13:38:29 -08:00
xfs_refcount_btree.h xfs: standardize the btree maxrecs function parameters 2024-09-01 08:58:20 -07:00
xfs_rmap.c xfs: update rmap to allow cow staging extents in the rt rmap 2024-12-23 13:06:12 -08:00
xfs_rmap.h xfs: add a realtime flag to the rmap update log redo items 2024-12-23 13:06:04 -08:00
xfs_rmap_btree.c xfs: add a generic group pointer to the btree cursor 2024-11-05 13:38:29 -08:00
xfs_rmap_btree.h xfs: standardize the btree maxrecs function parameters 2024-09-01 08:58:20 -07:00
xfs_rtbitmap.c xfs: add some rtgroup inode helpers 2024-12-23 13:06:03 -08:00
xfs_rtbitmap.h xfs: online repair of realtime bitmaps for a realtime group 2024-12-23 13:06:08 -08:00
xfs_rtgroup.c xfs: constify feature checks 2025-01-13 14:57:08 +01:00
xfs_rtgroup.h xfs: reflink on the realtime device [v6.2 05/14] 2025-01-13 14:54:52 +01:00
xfs_rtrefcount_btree.c xfs: report realtime refcount btree corruption errors to the health system 2024-12-23 13:06:14 -08:00
xfs_rtrefcount_btree.h xfs: create routine to allocate and initialize a realtime refcount btree inode 2024-12-23 13:06:12 -08:00
xfs_rtrmap_btree.c xfs: compute rtrmap btree max levels when reflink enabled 2024-12-23 13:06:12 -08:00
xfs_rtrmap_btree.h xfs: create a shadow rmap btree during realtime rmap repair 2024-12-23 13:06:09 -08:00
xfs_sb.c xfs: generalize the freespace and reserved blocks handling 2025-03-03 08:16:37 -07:00
xfs_sb.h xfs: make xfs_rtblock_t a segmented address like xfs_fsblock_t 2024-11-05 13:38:44 -08:00
xfs_shared.h xfs: introduce realtime refcount btree ondisk definitions 2024-12-23 13:06:10 -08:00
xfs_symlink_remote.c xfs: return from xfs_symlink_verify early on V4 filesystems 2024-12-12 17:45:13 -08:00
xfs_symlink_remote.h
xfs_trans_inode.c xfs: switch to multigrain timestamps 2024-10-10 10:20:52 +02:00
xfs_trans_resv.c xfs: realtime refcount btree transaction reservations 2024-12-23 13:06:10 -08:00
xfs_trans_resv.h
xfs_trans_space.c
xfs_trans_space.h xfs: realtime rmap btree transaction reservations 2024-12-23 13:06:04 -08:00
xfs_types.c xfs: make xfs_rtblock_t a segmented address like xfs_fsblock_t 2024-11-05 13:38:44 -08:00
xfs_types.h xfs: generalize the freespace and reserved blocks handling 2025-03-03 08:16:37 -07:00