diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2023-01-08 12:11:45 -0600 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2023-01-08 12:11:45 -0600 | 
| commit | 1fe4fd6f5cad346e598593af36caeadc4f5d4fa9 (patch) | |
| tree | 9f43a0ab526558075199c649359a94748505c028 /fs/xfs/libxfs/xfs_btree.c | |
| parent | b7bfaa761d760e72a969d116517eaa12e404c262 (diff) | |
| parent | 601a27ea09a317d0fe2895df7d875381fb393041 (diff) | |
Merge tag 'xfs-6.2-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
Pull xfs fixes from Darrick Wong:
 - Remove some incorrect assertions
 - Fix compiler warnings about variables that could be static
 - Fix an off by one error when computing the maximum btree height that
   can cause repair failures
 - Fix the bulkstat-single ioctl not returning the root inode when asked
   to do that
 - Convey NOFS state to inodegc workers to avoid recursion in reclaim
 - Fix unnecessary variable initializations
 - Fix a bug that could result in corruption of the busy extent tree
* tag 'xfs-6.2-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
  xfs: fix extent busy updating
  xfs: xfs_qm: remove unnecessary ‘0’ values from error
  xfs: Fix deadlock on xfs_inodegc_worker
  xfs: get root inode correctly at bulkstat
  xfs: fix off-by-one error in xfs_btree_space_to_height
  xfs: make xfs_iomap_page_ops static
  xfs: don't assert if cmap covers imap after cycling lock
Diffstat (limited to 'fs/xfs/libxfs/xfs_btree.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_btree.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index 4c16c8c31fcb..35f574421670 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c @@ -4666,7 +4666,12 @@ xfs_btree_space_to_height(  	const unsigned int	*limits,  	unsigned long long	leaf_blocks)  { -	unsigned long long	node_blocks = limits[1]; +	/* +	 * The root btree block can have fewer than minrecs pointers in it +	 * because the tree might not be big enough to require that amount of +	 * fanout. Hence it has a minimum size of 2 pointers, not limits[1]. +	 */ +	unsigned long long	node_blocks = 2;  	unsigned long long	blocks_left = leaf_blocks - 1;  	unsigned int		height = 1;  | 
