OpenCloudOS-Kernel/fs/xfs/libxfs
Chandan Babu R 83a21c1844 xfs: Directory's data fork extent counter can never overflow
The maximum file size that can be represented by the data fork extent counter
in the worst case occurs when all extents are 1 block in length and each block
is 1KB in size.

With XFS_MAX_EXTCNT_DATA_FORK_SMALL representing maximum extent count and with
1KB sized blocks, a file can reach upto,
(2^31) * 1KB = 2TB

This is much larger than the theoretical maximum size of a directory
i.e. XFS_DIR2_SPACE_SIZE * 3 = ~96GB.

Since a directory's inode can never overflow its data fork extent counter,
this commit removes all the overflow checks associated with
it. xfs_dinode_verify() now performs a rough check to verify if a diretory's
data fork is larger than 96GB.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
2022-04-13 07:02:07 +00:00
..
xfs_ag.c xfs: #ifdef out perag code for userspace 2021-11-10 09:37:38 -08:00
xfs_ag.h xfs: #ifdef out perag code for userspace 2021-11-10 09:37:38 -08:00
xfs_ag_resv.c xfs: compute maximum AG btree height for critical reservation calculation 2021-10-19 11:45:15 -07:00
xfs_ag_resv.h xfs: move perag structure and setup to libxfs/xfs_ag.[ch] 2021-06-02 10:48:24 +10:00
xfs_alloc.c xfs: Define max extent length based on on-disk format definition 2022-04-11 04:11:17 +00:00
xfs_alloc.h xfs: document the XFS_ALLOC_AGFL_RESERVE constant 2022-03-21 13:57:45 -07:00
xfs_alloc_btree.c xfs: remove kmem_zone typedef 2021-10-22 16:00:31 -07:00
xfs_alloc_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_attr.c xfs: Fix the free logic of state in xfs_attr_node_hasname 2021-11-24 10:06:02 -08:00
xfs_attr.h xfs: rename xfs_has_attr() 2021-08-19 10:07:11 -07:00
xfs_attr_leaf.c xfs: rename _zone variables to _cache 2021-10-22 16:04:20 -07:00
xfs_attr_leaf.h xfs: Make attr name schemes consistent 2021-06-09 09:34:05 -07:00
xfs_attr_remote.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_attr_remote.h xfs: Rename __xfs_attr_rmtval_remove 2021-08-11 09:12:45 -07:00
xfs_attr_sf.h xfs: Convert xfs_attr_sf macros to inline functions 2020-09-15 20:52:42 -07:00
xfs_bit.c xfs: fix missing header includes 2019-11-07 13:00:53 -08:00
xfs_bit.h xfs: Use the correct style for SPDX License Identifier 2020-05-13 15:32:45 -07:00
xfs_bmap.c xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_bmap.h xfs: rename xfs_bmap_add_free to xfs_free_extent_later 2021-10-22 16:04:36 -07:00
xfs_bmap_btree.c xfs: Introduce macros to represent new maximum extent counts for data/attr forks 2022-04-11 04:11:19 +00:00
xfs_bmap_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_btree.c mm/fs: delete PF_SWAPWRITE 2022-03-22 15:57:08 -07:00
xfs_btree.h xfs: remove kmem_zone typedef 2021-10-22 16:00:31 -07:00
xfs_btree_staging.c xfs: encode the max btree height in the cursor 2021-10-19 11:45:15 -07:00
xfs_btree_staging.h xfs: xfs_btree_staging.h: delete duplicated words 2020-07-28 20:24:14 -07:00
xfs_cksum.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xfs_da_btree.c xfs: use swap() to make dabtree code cleaner 2021-11-08 11:23:25 -08:00
xfs_da_btree.h xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_da_format.h xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_defer.c xfs: rename xfs_bmap_add_free to xfs_free_extent_later 2021-10-22 16:04:36 -07:00
xfs_defer.h xfs: create slab caches for frequently-used deferred items 2021-10-22 16:04:36 -07:00
xfs_dir2.c xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_dir2.h xfs: constify xfs_name_dotdot 2022-03-14 10:23:17 -07:00
xfs_dir2_block.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_data.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_leaf.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_node.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_dir2_priv.h xfs: constify the name argument to various directory functions 2022-03-14 10:23:17 -07:00
xfs_dir2_sf.c xfs: convert xfs_sb_version_has checks to use mount features 2021-08-19 10:07:14 -07:00
xfs_dquot_buf.c xfs: remove the xfs_dqblk_t typedef 2021-10-14 09:19:33 -07:00
xfs_errortag.h xfs: add error injection for per-AG resv failure 2021-03-25 16:47:53 -07:00
xfs_format.h xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_fs.h xfs: Introduce XFS_FSOP_GEOM_FLAGS_NREXT64 2022-04-11 04:11:19 +00:00
xfs_health.h xfs: Use the correct style for SPDX License Identifier 2020-05-13 15:32:45 -07:00
xfs_ialloc.c xfs: Introduce XFS_DIFLAG2_NREXT64 and associated helpers 2022-04-11 04:11:19 +00:00
xfs_ialloc.h xfs: make the record pointer passed to query_range functions const 2021-08-18 18:46:01 -07:00
xfs_ialloc_btree.c xfs: remove kmem_zone typedef 2021-10-22 16:00:31 -07:00
xfs_ialloc_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_iext_tree.c xfs: prevent metadata files from being inactivated 2021-03-25 16:47:50 -07:00
xfs_inode_buf.c xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_inode_buf.h xfs: kill xfs_sb_version_has_v3inode() 2021-08-19 10:07:14 -07:00
xfs_inode_fork.c xfs: Introduce macros to represent new maximum extent counts for data/attr forks 2022-04-11 04:11:19 +00:00
xfs_inode_fork.h xfs: Directory's data fork extent counter can never overflow 2022-04-13 07:02:07 +00:00
xfs_log_format.h xfs: Introduce per-inode 64-bit extent counters 2022-04-11 04:11:20 +00:00
xfs_log_recover.h xfs: refactor xfs_iget calls from log intent recovery 2021-08-09 15:57:59 -07:00
xfs_log_rlimit.c xfs: replace xfs_sb_version checks with feature flag checks 2021-08-19 10:07:12 -07:00
xfs_quota_defs.h xfs: remove the active vs running quota differentiation 2021-08-06 11:05:37 -07:00
xfs_refcount.c xfs: remove unused parameter from refcount code 2021-10-22 16:04:36 -07:00
xfs_refcount.h xfs: create slab caches for frequently-used deferred items 2021-10-22 16:04:36 -07:00
xfs_refcount_btree.c xfs: remove kmem_zone typedef 2021-10-22 16:00:31 -07:00
xfs_refcount_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_rmap.c xfs: create slab caches for frequently-used deferred items 2021-10-22 16:04:36 -07:00
xfs_rmap.h xfs: create slab caches for frequently-used deferred items 2021-10-22 16:04:36 -07:00
xfs_rmap_btree.c xfs: remove kmem_zone typedef 2021-10-22 16:00:31 -07:00
xfs_rmap_btree.h xfs: use separate btree cursor cache for each btree type 2021-10-19 11:45:16 -07:00
xfs_rtbitmap.c xfs: make xfs_rtalloc_query_range input parameters const 2021-08-18 18:46:00 -07:00
xfs_sb.c xfs: Introduce XFS_FSOP_GEOM_FLAGS_NREXT64 2022-04-11 04:11:19 +00:00
xfs_sb.h xfs: open code sb verifier feature checks 2021-08-19 10:07:13 -07:00
xfs_shared.h xfs: sort variable alphabetically to avoid repeated declaration 2021-06-02 14:54:09 -07:00
xfs_symlink_remote.c xfs: convert bp->b_bn references to xfs_buf_daddr() 2021-08-19 10:07:15 -07:00
xfs_trans_inode.c xfs: convert xfs_sb_version_has checks to use mount features 2021-08-19 10:07:14 -07:00
xfs_trans_resv.c xfs: Define max extent length based on on-disk format definition 2022-04-11 04:11:17 +00:00
xfs_trans_resv.h xfs: remove support for disabling quota accounting on a mounted file system 2021-08-06 11:05:36 -07:00
xfs_trans_space.h xfs: compute the maximum height of the rmap btree when reflink enabled 2021-10-19 11:45:16 -07:00
xfs_types.c xfs: replace xfs_sb_version checks with feature flag checks 2021-08-19 10:07:12 -07:00
xfs_types.h xfs: Promote xfs_extnum_t and xfs_aextnum_t to 64 and 32-bits respectively 2022-04-11 04:11:18 +00:00