On Wed, Oct 24, 2018 at 05:20:08PM -0500, Eric Sandeen wrote: > "freecount" in the xfs_inobt_rec is unsigned, so xfs_db should > print it as such. > > Not doing so tickles a bug in getbitval() where we try to handle > sign extension for signed fields and fail badly on big endian > machines, causing us to incorrectly report negative numbers when > printing structures even when the number is nowhere near the > signed maximum value. > > So this fix works around that bug by properly marking this field > as unsigned, because I have yet to convince myself of the proper > fix for the underlying bug. > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201453 > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> Looks ok, Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > > diff --git a/db/btblock.c b/db/btblock.c > index cbd2990..5a5b061 100644 > --- a/db/btblock.c > +++ b/db/btblock.c > @@ -513,7 +513,7 @@ const field_t inobt_sprec_flds[] = { > { "holemask", FLDT_UINT16X, OI(ROFF(ir_u.sp.ir_holemask)), C1, 0, > TYP_NONE }, > { "count", FLDT_UINT8D, OI(ROFF(ir_u.sp.ir_count)), C1, 0, TYP_NONE }, > - { "freecount", FLDT_INT8D, OI(ROFF(ir_u.sp.ir_freecount)), C1, 0, > + { "freecount", FLDT_UINT8D, OI(ROFF(ir_u.sp.ir_freecount)), C1, 0, > TYP_NONE }, > { "free", FLDT_INOFREE, OI(ROFF(ir_free)), C1, 0, TYP_NONE }, > { NULL } >