From f9cd7f89801246cefb0d4d194b1346898bead59b Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Tue, 20 Dec 2016 22:35:47 -0600 Subject: [PATCH] xfs_repair: change null check to assertion It /should/ be the case that we never run out of records before we run out of btree blocks, so change the null check (that was only to appease Coverity) to an assert. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Signed-off-by: Eric Sandeen --- repair/phase5.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/repair/phase5.c b/repair/phase5.c index cbda55642..ebe1f7d67 100644 --- a/repair/phase5.c +++ b/repair/phase5.c @@ -1579,6 +1579,7 @@ build_rmap_tree( struct xfs_rmap_irec highest_key = {0}; struct xfs_rmap_irec hi_key = {0}; struct bt_stat_level *lptr; + int numrecs; int level = btree_curs->num_levels; int error; @@ -1622,7 +1623,10 @@ _("Insufficient memory to construct reverse-map cursor.")); rm_rec = pop_slab_cursor(rmap_cur); lptr = &btree_curs->level[0]; - for (i = 0; i < lptr->num_blocks && rm_rec != NULL; i++) { + for (i = 0; i < lptr->num_blocks; i++) { + numrecs = lptr->num_recs_pb + (lptr->modulo > 0); + ASSERT(rm_rec != NULL || numrecs == 0); + /* * block initialization, lay in block header */ @@ -1634,8 +1638,7 @@ _("Insufficient memory to construct reverse-map cursor.")); XFS_BTREE_CRC_BLOCKS); bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno); - bt_hdr->bb_numrecs = cpu_to_be16(lptr->num_recs_pb + - (lptr->modulo > 0)); + bt_hdr->bb_numrecs = cpu_to_be16(numrecs); if (lptr->modulo > 0) lptr->modulo--; @@ -1883,6 +1886,7 @@ build_refcount_tree( struct xfs_slab_cursor *refc_cur; struct xfs_refcount_rec *bt_rec; struct bt_stat_level *lptr; + int numrecs; int level = btree_curs->num_levels; int error; @@ -1925,7 +1929,10 @@ _("Insufficient memory to construct refcount cursor.")); refc_rec = pop_slab_cursor(refc_cur); lptr = &btree_curs->level[0]; - for (i = 0; i < lptr->num_blocks && refc_rec != NULL; i++) { + for (i = 0; i < lptr->num_blocks; i++) { + numrecs = lptr->num_recs_pb + (lptr->modulo > 0); + ASSERT(refc_rec != NULL || numrecs == 0); + /* * block initialization, lay in block header */ @@ -1937,8 +1944,7 @@ _("Insufficient memory to construct refcount cursor.")); XFS_BTREE_CRC_BLOCKS); bt_hdr->bb_u.s.bb_leftsib = cpu_to_be32(lptr->prev_agbno); - bt_hdr->bb_numrecs = cpu_to_be16(lptr->num_recs_pb + - (lptr->modulo > 0)); + bt_hdr->bb_numrecs = cpu_to_be16(numrecs); if (lptr->modulo > 0) lptr->modulo--; -- 2.47.2