• B
    xfs: use actual inode count for sparse records in bulkstat/inumbers · 12d0714d
    Brian Foster 提交于
    The bulkstat and inumbers mechanisms make the assumption that inode
    records consist of a full 64 inode chunk in several places. For example,
    this is used to track how many inodes have been processed overall as
    well as to determine whether a record has allocated inodes that must be
    handled.
    
    This assumption is invalid for sparse inode records. While sparse inodes
    will be marked as free in the ir_free mask, they are not accounted as
    free in ir_freecount because they cannot be allocated. Therefore,
    ir_freecount may be less than 64 inodes in an inode record for which all
    physically allocated inodes are free (and in turn ir_freecount < 64 does
    not signify that the record has allocated inodes).
    
    The new in-core inobt record format includes the ir_count field. This
    holds the number of true, physical inodes tracked by the record. The
    in-core ir_count field is always valid as it is hardcoded to
    XFS_INODES_PER_CHUNK when sparse inodes is not enabled. Use ir_count to
    handle inode records correctly in bulkstat in a generic manner.
    Signed-off-by: NBrian Foster <bfoster@redhat.com>
    Reviewed-by: NDave Chinner <dchinner@redhat.com>
    Signed-off-by: NDave Chinner <david@fromorbit.com>
    12d0714d
xfs_itable.c 17.1 KB