Re: [PATCH 1/3] xfs/178: don't fail when SCRATCH_DEV contains random xfs superblocks

Darrick J. Wong
2023-10-11T19:10:29Z

On Tue, Oct 10, 2023 at 12:01:33AM -0700, Christoph Hellwig wrote:
> On Mon, Oct 09, 2023 at 11:18:33AM -0700, Darrick J. Wong wrote:
> > The storage advertises SCSI UNMAP support, but it is of the variety
> > where the UNMAP command returns immediately but takes its time to unmap
> > in the background. Subsequent rereads are allowed to return stale
> > contents, per DISCARD semantics.
> >
> > When the fstests cloud is not busy, the old contents disappear in a few
> > seconds. However, at peak utilization, there are ~75 VMs running, and
> > the storage backend can take several minutes to commit these background
> > requests.
>
> Umm, that is not valid behavior fo SCSI UNMAP or any other command
> that Linux discard maps to. All of them can do one of the two options
> on a per-block basis:
>
> - return the unmap pattern (usually but not always 0) for any read
> following the unmap/trim/discard
> - always return the previous pattern until it is overwritten or
> discarded again
>
> Changing the pattern some time after unmap is a grave bug, and we need
> to blacklist the device.

Ok, I'll go pester them about fixing that, if they haven't already.
Apparently discard support is somewhat new.

I'm pretty sure I've seen some NVME SSDs where you can issue devicewide
DISCARDs and slowly watch the namespace utilization go down over tens of
minutes; and reads will only eventually start returning zeroes.

(Note that *writes* during the slow-discard period are persisted
correctly.)

However, that's orthogonal to this patch -- if the device doesn't
support discard, _scratch_mkfs won't zero the entire disk to remove old
dead superblocks that might have been written by previous tests. After
we shatter the primary super, the xfs_repair scanning code can still
trip over those old supers and break the golden output.

--D