Message ID | 163192858276.416199.6204001049315596078.stgit@magnolia (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | xfs: support dynamic btree cursor height | expand |
On 18 Sep 2021 at 06:59, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@kernel.org> > > Warn if we ever bump nlevels higher than the allowed maximum cursor > height. Looks good. Reviewed-by: Chandan Babu R <chandan.babu@oracle.com> > > Signed-off-by: Darrick J. Wong <djwong@kernel.org> > --- > fs/xfs/libxfs/xfs_btree.c | 2 ++ > fs/xfs/libxfs/xfs_btree_staging.c | 2 ++ > 2 files changed, 4 insertions(+) > > > diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c > index b0cce0932f02..bc4e49f0456a 100644 > --- a/fs/xfs/libxfs/xfs_btree.c > +++ b/fs/xfs/libxfs/xfs_btree.c > @@ -2933,6 +2933,7 @@ xfs_btree_new_iroot( > be16_add_cpu(&block->bb_level, 1); > xfs_btree_set_numrecs(block, 1); > cur->bc_nlevels++; > + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); > cur->bc_ptrs[level + 1] = 1; > > kp = xfs_btree_key_addr(cur, 1, block); > @@ -3096,6 +3097,7 @@ xfs_btree_new_root( > xfs_btree_setbuf(cur, cur->bc_nlevels, nbp); > cur->bc_ptrs[cur->bc_nlevels] = nptr; > cur->bc_nlevels++; > + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); > *stat = 1; > return 0; > error0: > diff --git a/fs/xfs/libxfs/xfs_btree_staging.c b/fs/xfs/libxfs/xfs_btree_staging.c > index ac9e80152b5c..26143297bb7b 100644 > --- a/fs/xfs/libxfs/xfs_btree_staging.c > +++ b/fs/xfs/libxfs/xfs_btree_staging.c > @@ -703,6 +703,7 @@ xfs_btree_bload_compute_geometry( > * block-based btree level. > */ > cur->bc_nlevels++; > + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); > xfs_btree_bload_level_geometry(cur, bbl, level, > nr_this_level, &avg_per_block, > &level_blocks, &dontcare64); > @@ -718,6 +719,7 @@ xfs_btree_bload_compute_geometry( > > /* Otherwise, we need another level of btree. */ > cur->bc_nlevels++; > + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); > } > > nr_blocks += level_blocks;
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index b0cce0932f02..bc4e49f0456a 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c @@ -2933,6 +2933,7 @@ xfs_btree_new_iroot( be16_add_cpu(&block->bb_level, 1); xfs_btree_set_numrecs(block, 1); cur->bc_nlevels++; + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); cur->bc_ptrs[level + 1] = 1; kp = xfs_btree_key_addr(cur, 1, block); @@ -3096,6 +3097,7 @@ xfs_btree_new_root( xfs_btree_setbuf(cur, cur->bc_nlevels, nbp); cur->bc_ptrs[cur->bc_nlevels] = nptr; cur->bc_nlevels++; + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); *stat = 1; return 0; error0: diff --git a/fs/xfs/libxfs/xfs_btree_staging.c b/fs/xfs/libxfs/xfs_btree_staging.c index ac9e80152b5c..26143297bb7b 100644 --- a/fs/xfs/libxfs/xfs_btree_staging.c +++ b/fs/xfs/libxfs/xfs_btree_staging.c @@ -703,6 +703,7 @@ xfs_btree_bload_compute_geometry( * block-based btree level. */ cur->bc_nlevels++; + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); xfs_btree_bload_level_geometry(cur, bbl, level, nr_this_level, &avg_per_block, &level_blocks, &dontcare64); @@ -718,6 +719,7 @@ xfs_btree_bload_compute_geometry( /* Otherwise, we need another level of btree. */ cur->bc_nlevels++; + ASSERT(cur->bc_nlevels <= XFS_BTREE_MAXLEVELS); } nr_blocks += level_blocks;