On Mon, Sep 07, 2020 at 10:52:28AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > Prior to commit a406779bc8d8, any blocks in a data fork extent that > collided with existing blocks would cause the entire data fork extent to > be rejected. Unfortunately, the patch to add data block sharing support > suppressed checking for any collision, including metadata. What we > really wanted to do here during a check_dups==1 scan is to is check for > specific collisions and without updating the block mapping data. > > So, move the check_dups test after the for-switch construction. This > re-enables detecting collisions between data fork blocks and a > previously scanned chunk of metadata, and improves the specificity of > the error message that results. > > This was found by fuzzing recs[2].free=zeroes in xfs/364, though this > patch alone does not solve all the problems that scenario presents. > > Fixes: a406779bc8d8 ("xfs_repair: handle multiple owners of data blocks") > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Looks good, Reviewed-by: Christoph Hellwig <hch@xxxxxx>