A future commit will introduce a 64-bit on-disk data extent counter and a 32-bit on-disk attr extent counter. This commit promotes xfs_extnum_t and xfs_aextnum_t to 64 and 32-bits in order to correctly handle in-core versions of these quantities. Signed-off-by: Chandan Babu R <chandan.babu@xxxxxxxxxx> --- libxfs/xfs_bmap.c | 4 ++-- libxfs/xfs_inode_fork.c | 2 +- libxfs/xfs_inode_fork.h | 2 +- libxfs/xfs_types.h | 4 ++-- repair/dinode.c | 20 ++++++++++---------- repair/dinode.h | 4 ++-- repair/scan.c | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 19db26e6..3c23ea30 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -47,9 +47,9 @@ xfs_bmap_compute_maxlevels( xfs_mount_t *mp, /* file system mount structure */ int whichfork) /* data or attr fork */ { + xfs_extnum_t maxleafents; /* max leaf entries possible */ int level; /* btree level */ uint maxblocks; /* max blocks at this level */ - xfs_extnum_t maxleafents; /* max leaf entries possible */ int maxrootrecs; /* max records in root block */ int minleafrecs; /* min records in leaf block */ int minnoderecs; /* min records in node block */ @@ -466,7 +466,7 @@ error0: if (bp_release) xfs_trans_brelse(NULL, bp); error_norelse: - xfs_warn(mp, "%s: BAD after btree leaves for %d extents", + xfs_warn(mp, "%s: BAD after btree leaves for %llu extents", __func__, i); xfs_err(mp, "%s: CORRUPTED BTREE OR SOMETHING", __func__); xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); diff --git a/libxfs/xfs_inode_fork.c b/libxfs/xfs_inode_fork.c index 6b69d34e..9b25f3be 100644 --- a/libxfs/xfs_inode_fork.c +++ b/libxfs/xfs_inode_fork.c @@ -124,7 +124,7 @@ xfs_iformat_extents( * we just bail out rather than crash in kmem_alloc() or memcpy() below. */ if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, mp, whichfork))) { - xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %d).", + xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %llu).", (unsigned long long) ip->i_ino, nex); xfs_inode_verifier_error(ip, -EFSCORRUPTED, "xfs_iformat_extents(1)", dip, sizeof(*dip), diff --git a/libxfs/xfs_inode_fork.h b/libxfs/xfs_inode_fork.h index e8fe5b47..4b9df10e 100644 --- a/libxfs/xfs_inode_fork.h +++ b/libxfs/xfs_inode_fork.h @@ -21,9 +21,9 @@ struct xfs_ifork { void *if_root; /* extent tree root */ char *if_data; /* inline file data */ } if_u1; + xfs_extnum_t if_nextents; /* # of extents in this fork */ short if_broot_bytes; /* bytes allocated for root */ int8_t if_format; /* format of this fork */ - xfs_extnum_t if_nextents; /* # of extents in this fork */ }; /* diff --git a/libxfs/xfs_types.h b/libxfs/xfs_types.h index dbe5bb56..a3af29b7 100644 --- a/libxfs/xfs_types.h +++ b/libxfs/xfs_types.h @@ -12,8 +12,8 @@ typedef uint32_t xfs_agblock_t; /* blockno in alloc. group */ typedef uint32_t xfs_agino_t; /* inode # within allocation grp */ typedef uint32_t xfs_extlen_t; /* extent length in blocks */ typedef uint32_t xfs_agnumber_t; /* allocation group number */ -typedef int32_t xfs_extnum_t; /* # of extents in a file */ -typedef int16_t xfs_aextnum_t; /* # extents in an attribute fork */ +typedef uint64_t xfs_extnum_t; /* # of extents in a file */ +typedef uint32_t xfs_aextnum_t; /* # extents in an attribute fork */ typedef int64_t xfs_fsize_t; /* bytes in a file */ typedef uint64_t xfs_ufsize_t; /* unsigned bytes in a file */ diff --git a/repair/dinode.c b/repair/dinode.c index 4e95766e..c995a524 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -357,7 +357,7 @@ static int process_bmbt_reclist_int( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int *numrecs, + xfs_extnum_t *numrecs, int type, xfs_ino_t ino, xfs_rfsblock_t *tot, @@ -680,7 +680,7 @@ int process_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int *numrecs, + xfs_extnum_t *numrecs, int type, xfs_ino_t ino, xfs_rfsblock_t *tot, @@ -703,7 +703,7 @@ int scan_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int *numrecs, + xfs_extnum_t *numrecs, int type, xfs_ino_t ino, xfs_rfsblock_t *tot, @@ -1091,7 +1091,7 @@ _("mismatch between format (%d) and size (%" PRId64 ") in symlink inode %" PRIu6 */ if (numrecs > max_symlink_blocks) { do_warn( -_("bad number of extents (%d) in symlink %" PRIu64 " data fork\n"), +_("bad number of extents (%lu) in symlink %" PRIu64 " data fork\n"), numrecs, lino); return(1); } @@ -1652,7 +1652,7 @@ _("realtime summary inode %" PRIu64 " has bad type 0x%x, "), if (mp->m_sb.sb_rblocks == 0 && nextents != 0) { do_warn( -_("bad # of extents (%d) for realtime summary inode %" PRIu64 "\n"), +_("bad # of extents (%lu) for realtime summary inode %" PRIu64 "\n"), nextents, lino); return 1; } @@ -1677,7 +1677,7 @@ _("realtime bitmap inode %" PRIu64 " has bad type 0x%x, "), if (mp->m_sb.sb_rblocks == 0 && nextents != 0) { do_warn( -_("bad # of extents (%d) for realtime bitmap inode %" PRIu64 "\n"), +_("bad # of extents (%lu) for realtime bitmap inode %" PRIu64 "\n"), nextents, lino); return 1; } @@ -1870,13 +1870,13 @@ _("too many data fork extents (%" PRIu64 ") in inode %" PRIu64 "\n"), if (nextents != dnextents) { if (!no_modify) { do_warn( -_("correcting nextents for inode %" PRIu64 ", was %d - counted %" PRIu64 "\n"), +_("correcting nextents for inode %" PRIu64 ", was %lu - counted %" PRIu64 "\n"), lino, dnextents, nextents); dino->di_nextents32 = cpu_to_be32(nextents); *dirty = 1; } else { do_warn( -_("bad nextents %d for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), +_("bad nextents %lu for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), dnextents, lino, nextents); } } @@ -1894,13 +1894,13 @@ _("too many attr fork extents (%" PRIu64 ") in inode %" PRIu64 "\n"), if (anextents != dnextents) { if (!no_modify) { do_warn( -_("correcting anextents for inode %" PRIu64 ", was %d - counted %" PRIu64 "\n"), +_("correcting anextents for inode %" PRIu64 ", was %lu - counted %" PRIu64 "\n"), lino, dnextents, anextents); dino->di_nextents16 = cpu_to_be16(anextents); *dirty = 1; } else { do_warn( -_("bad anextents %d for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), +_("bad anextents %lu for inode %" PRIu64 ", would reset to %" PRIu64 "\n"), dnextents, lino, anextents); } } diff --git a/repair/dinode.h b/repair/dinode.h index e190b743..09129e7b 100644 --- a/repair/dinode.h +++ b/repair/dinode.h @@ -20,7 +20,7 @@ convert_extent( int process_bmbt_reclist(xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int *numrecs, + xfs_extnum_t *numrecs, int type, xfs_ino_t ino, xfs_rfsblock_t *tot, @@ -34,7 +34,7 @@ int scan_bmbt_reclist( xfs_mount_t *mp, xfs_bmbt_rec_t *rp, - int *numrecs, + xfs_extnum_t *numrecs, int type, xfs_ino_t ino, xfs_rfsblock_t *tot, diff --git a/repair/scan.c b/repair/scan.c index 698befd3..bcf523da 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -223,7 +223,7 @@ scan_bmapbt( xfs_fileoff_t first_key; xfs_fileoff_t last_key; char *forkname = get_forkname(whichfork); - int numrecs; + xfs_extnum_t numrecs; xfs_agnumber_t agno; xfs_agblock_t agbno; int state; @@ -443,7 +443,7 @@ _("couldn't add inode %"PRIu64" bmbt block %"PRIu64" reverse-mapping data."), if (numrecs > mp->m_bmap_dmxr[0] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[0])) { do_warn( -_("inode %" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode %" PRIu64 " bad # of bmap records (%lu, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[0], mp->m_bmap_dmxr[0]); return(1); @@ -495,7 +495,7 @@ _("out-of-order bmap key (file offset) in inode %" PRIu64 ", %s fork, fsbno %" P if (numrecs > mp->m_bmap_dmxr[1] || (isroot == 0 && numrecs < mp->m_bmap_dmnr[1])) { do_warn( -_("inode %" PRIu64 " bad # of bmap records (%u, min - %u, max - %u)\n"), +_("inode %" PRIu64 " bad # of bmap records (%lu, min - %u, max - %u)\n"), ino, numrecs, mp->m_bmap_dmnr[1], mp->m_bmap_dmxr[1]); return(1); } -- 2.30.2