• Darrick J. Wong's avatar
    xfs: fix buffer state management in xrep_findroot_block · 38b6238e
    Darrick J. Wong authored
    We don't handle buffer state properly in online repair's findroot
    routine.  If a buffer already has b_ops set, we don't ever want to touch
    that, and we don't want to call the read verifiers on a buffer that
    could be dirty (CRCs are only recomputed during log checkpoints).
    
    Therefore, be more careful about what we do with a buffer -- if someone
    else already attached ops that are not the ones for this btree type,
    just ignore the buffer.  We only attach our btree type's buf ops if it
    matches the magic/uuid and structure checks.
    
    We also modify xfs_buf_read_map to allow callers to set buffer ops on a
    DONE buffer with NULL ops so that repair doesn't leave behind buffers
    which won't have buffers attached to them.
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    38b6238e
xfs_trans_buf.c 21.6 KB