linux/fs/xfs/libxfs
Darrick J. Wong da062d16a8 xfs: check for sparse inode clusters that cross new EOAG when shrinking
While running xfs/168, I noticed occasional write verifier shutdowns
involving inodes at the very end of the filesystem.  Existing inode
btree validation code checks that all inode clusters are fully contained
within the filesystem.

However, due to inadequate checking in the fs shrink code, it's possible
that there could be a sparse inode cluster at the end of the filesystem
where the upper inodes of the cluster are marked as holes and the
corresponding blocks are free.  In this case, the last blocks in the AG
are listed in the bnobt.  This enables the shrink to proceed but results
in a filesystem that trips the inode verifiers.  Fix this by disallowing
the shrink.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
2021-07-15 09:58:41 -07:00
..
xfs_ag.c xfs: check for sparse inode clusters that cross new EOAG when shrinking 2021-07-15 09:58:41 -07:00
xfs_ag.h xfs: clean up incore inode walk functions 2021-06-08 09:26:44 -07:00
xfs_ag_resv.c New code for 5.14: 2021-07-02 14:30:27 -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 New code for 5.14: 2021-07-02 14:30:27 -07:00
xfs_alloc.h xfs: pass perags through to the busy extent code 2021-06-02 10:48:24 +10:00
xfs_alloc_btree.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_alloc_btree.h xfs: convert allocbt cursors to use perags 2021-06-02 10:48:24 +10:00
xfs_attr.c xfs: Initialize error in xfs_attr_remove_iter 2021-06-25 11:19:58 -07:00
xfs_attr.h xfs: Add delay ready attr set routines 2021-06-01 10:49:48 -07:00
xfs_attr_leaf.c Merge tag 'xfs-delay-ready-attrs-v20.1' of https://github.com/allisonhenderson/xfs_work into xfs-5.14-merge4 2021-06-18 08:13:22 -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: Remove xfs_attr_rmtval_set 2021-06-01 10:49:49 -07:00
xfs_attr_remote.h xfs: Remove xfs_attr_rmtval_set 2021-06-01 10:49:49 -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: assorted fixes for 5.14, part 1 2021-06-08 09:22:34 -07:00
xfs_bmap.h xfs: mark xfs_bmap_set_attrforkoff static 2021-06-02 14:58:59 -07:00
xfs_bmap_btree.c xfs: move the di_flags field to struct xfs_inode 2021-04-07 14:37:05 -07:00
xfs_bmap_btree.h xfs: Use the correct style for SPDX License Identifier 2020-05-13 15:32:45 -07:00
xfs_btree.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_btree.h xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_btree_staging.c xfs: remove XFS_IFBROOT 2021-04-15 09:35:51 -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
xfs_da_btree.c xfs: Fix fall-through warnings for Clang 2021-05-26 14:51:26 -05:00
xfs_da_btree.h xfs: Refactor xfs_da_state_alloc() helper 2020-07-28 20:24:14 -07:00
xfs_da_format.h xfs: code cleanup in xfs_attr_leaf_entsize_{remote,local} 2020-09-25 11:34:08 -07:00
xfs_defer.c xfs: only relog deferred intent items if free space in the log gets low 2020-10-07 08:40:29 -07:00
xfs_defer.h xfs: fix an incore inode UAF in xfs_bui_recover 2020-10-07 08:40:28 -07:00
xfs_dir2.c xfs: move the di_size field to struct xfs_inode 2021-04-07 14:37:03 -07:00
xfs_dir2.h xfs: fix an ABBA deadlock in xfs_rename 2021-01-22 16:54:43 -08:00
xfs_dir2_block.c xfs: remove XFS_IFINLINE 2021-04-15 09:35:51 -07:00
xfs_dir2_data.c xfs: No need for inode number error injection in __xfs_dir3_data_check 2021-03-25 16:47:51 -07:00
xfs_dir2_leaf.c xfs: move the di_size field to struct xfs_inode 2021-04-07 14:37:03 -07:00
xfs_dir2_node.c xfs: move the di_size field to struct xfs_inode 2021-04-07 14:37:03 -07:00
xfs_dir2_priv.h xfs: reduce debug overhead of dir leaf/node checks 2021-03-25 16:47:51 -07:00
xfs_dir2_sf.c xfs: remove XFS_IFEXTENTS 2021-04-15 09:35:51 -07:00
xfs_dquot_buf.c xfs: widen ondisk quota expiration timestamps to handle y2038+ 2020-09-15 20:52:41 -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: move the di_crtime field to struct xfs_inode 2021-04-07 14:37:05 -07:00
xfs_fs.h xfs: restore old ioctl definitions 2021-05-20 08:31:22 -07: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: check for sparse inode clusters that cross new EOAG when shrinking 2021-07-15 09:58:41 -07:00
xfs_ialloc.h xfs: check for sparse inode clusters that cross new EOAG when shrinking 2021-07-15 09:58:41 -07:00
xfs_ialloc_btree.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_ialloc_btree.h xfs: use perag for ialloc btree cursors 2021-06-02 10:48:24 +10: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: clean up open-coded fs block unit conversions 2021-06-01 12:53:59 -07:00
xfs_inode_buf.h xfs: move the di_crtime field to struct xfs_inode 2021-04-07 14:37:05 -07:00
xfs_inode_fork.c xfs: remove XFS_IFEXTENTS 2021-04-15 09:35:51 -07:00
xfs_inode_fork.h xfs: remove XFS_IFEXTENTS 2021-04-15 09:35:51 -07:00
xfs_log_format.h xfs: log stripe roundoff is a property of the log 2021-06-18 08:21:48 -07:00
xfs_log_recover.h xfs: remove xlog_recover_iodone 2020-09-15 20:52:39 -07:00
xfs_log_rlimit.c xfs: remove unused header files 2019-06-28 19:30:43 -07:00
xfs_quota_defs.h xfs: widen ondisk quota expiration timestamps to handle y2038+ 2020-09-15 20:52:41 -07:00
xfs_refcount.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_refcount.h xfs: convert refcount btree cursor to use perags 2021-06-02 10:48:24 +10:00
xfs_refcount_btree.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_refcount_btree.h xfs: convert refcount btree cursor to use perags 2021-06-02 10:48:24 +10:00
xfs_rmap.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_rmap.h xfs: convert rmap btree cursor to using a perag 2021-06-02 10:48:24 +10:00
xfs_rmap_btree.c xfs: remove agno from btree cursor 2021-06-02 10:48:24 +10:00
xfs_rmap_btree.h xfs: convert rmap btree cursor to using a perag 2021-06-02 10:48:24 +10:00
xfs_rtbitmap.c xfs: move the di_flags field to struct xfs_inode 2021-04-07 14:37:05 -07:00
xfs_sb.c xfs: fix radix tree tag signs 2021-06-03 15:56:04 -07:00
xfs_sb.h xfs: fix radix tree tag signs 2021-06-03 15:56:04 -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: move the fork format fields into struct xfs_ifork 2020-05-19 09:40:58 -07:00
xfs_trans_inode.c xfs: validate extsz hints against rt extent size when rtinherit is set 2021-05-24 18:01:04 -07:00
xfs_trans_resv.c xfs: add a new xfs_sb_version_has_v3inode helper 2020-03-19 08:47:34 -07:00
xfs_trans_resv.h
xfs_trans_space.h xfs: fix off-by-one in inode alloc block reservation calculation 2020-08-26 14:13:21 -07:00
xfs_types.c xfs: convert raw ag walks to use for_each_perag 2021-06-02 10:48:24 +10:00
xfs_types.h xfs: xfs_log_force_lsn isn't passed a LSN 2021-06-21 10:12:33 -07:00