On Wed, Feb 06, 2019 at 09:06:55AM +1100, Dave Chinner wrote:
On Mon, Feb 04, 2019 at 08:54:17AM -0800, Luis Chamberlain wrote:
Kernel stable team,
here is a v2 respin of my XFS stable patches for v4.19.y. The only change in this series is adding the upstream commit to the commit log, and I've now also Cc'd stable@vger.kernel.org as well. No other issues were spotted or raised with this series.
Reviews, questions, or rants are greatly appreciated.
Test results?
The set of changes look fine themselves, but as always, the proof is in the testing...
I've first established a baseline for v4.19.18 with fstests using a series of different sections to test against. I annotated the failures on an expunge list and then use that expunge list to confirm no regressions -- no failures if we skip the failures already known for v4.19.18.
Each different configuration I test against I use a section for. I only test x86_64 for now but am starting to create a baseline for ppc64le.
The sections I use:
* xfs * xfs_nocrc * xfs_nocrc_512 * xfs_reflink * xfs_reflink_1024 * xfs_logdev * xfs_realtimedev
The sections definitions for these are below:
[xfs] MKFS_OPTIONS='-f -m crc=1,reflink=0,rmapbt=0, -i sparse=0' USE_EXTERNAL=no LOGWRITES_DEV=/dev/loop15 FSTYP=xfs
[xfs_nocrc] MKFS_OPTIONS='-f -m crc=0,reflink=0,rmapbt=0, -i sparse=0,' USE_EXTERNAL=no LOGWRITES_DEV=/dev/loop15 FSTYP=xfs
[xfs_nocrc_512] MKFS_OPTIONS='-f -m crc=0,reflink=0,rmapbt=0, -i sparse=0, -b size=512,' USE_EXTERNAL=no LOGWRITES_DEV=/dev/loop15 FSTYP=xfs
[xfs_reflink] MKFS_OPTIONS='-f -m reflink=1,rmapbt=1, -i sparse=1,' USE_EXTERNAL=no LOGWRITES_DEV=/dev/loop15 FSTYP=xfs
[xfs_reflink_1024] MKFS_OPTIONS='-f -m reflink=1,rmapbt=1, -i sparse=1, -b size=1024,' USE_EXTERNAL=no LOGWRITES_DEV=/dev/loop15 FSTYP=xfs
[xfs_logdev] MKFS_OPTIONS="-f -m crc=1,reflink=0,rmapbt=0, -i sparse=0 -lsize=1g" SCRATCH_LOGDEV=/dev/loop15 USE_EXTERNAL=yes FSTYP=xfs
[xfs_realtimedev] MKFS_OPTIONS="-f -lsize=1g" SCRATCH_LOGDEV=/dev/loop15 SCRATCH_RTDEV=/dev/loop14 USE_EXTERNAL=yes FSTYP=xfs
These are listed in my example.config which oscheck copies over to /var/lib/xfstests/config/$(hostname).config upon install if you don't have one.
I didn't find any regressions against my tests.
The baseline is reflected on oscheck's expunge list per kernel release, so in this case expunges/4.19.18. A file exists for each section which tests are known to fail.
I'll put them below here for completeness, but all of these files are present on my oscheck repository [0], it is what I use to track baselines for upstream kernels for fstests failures:
$ cat expunges/4.19.18/xfs/unassigned/xfs.txt generic/091 generic/263 generic/464 # after ~6 runs generic/475 # after ~15 runs generic/484 xfs/191-input-validation xfs/278 xfs/451 xfs/495 xfs/499
$ cat expunges/4.19.18/xfs/unassigned/xfs_nocrc.txt generic/091 generic/263 generic/464 # after ~39 runs generic/475 # after ~5-10 runs generic/484 xfs/191-input-validation xfs/273 xfs/278 xfs/451 xfs/495 xfs/499
$ cat expunges/4.19.18/xfs/unassigned/xfs_nocrc_512.txt generic/091 generic/263 generic/475 # after ~33 runs generic/482 # after ~16 runs generic/484 xfs/071 xfs/191-input-validation xfs/273 xfs/278 xfs/451 xfs/495 xfs/499
$ cat expunges/4.19.18/xfs/unassigned/xfs_reflink.txt generic/091 generic/263 generic/464 # after ~1 run generic/475 # after ~5 runs generic/484 xfs/191-input-validation xfs/278 xfs/451 xfs/495 xfs/499
$ cat expunges/4.19.18/xfs/unassigned/xfs_reflink_1024.txt generic/091 generic/263 generic/475 # after ~2 runs generic/484 xfs/191-input-validation xfs/278 xfs/451 xfs/495 xfs/499
The xfs_logdev and xfs_realtimedev sections use an external log, and as I have noted before it seems works is needed to rule out an actual failure.
But for completely the test which fstests says fail for these sections are below:
$ cat expunges/4.19.18/xfs/unassigned/xfs_logdev.txt generic/034 generic/039 generic/040 generic/041 generic/054 generic/055 generic/056 generic/057 generic/059 generic/065 generic/066 generic/073 generic/081 generic/090 generic/091 generic/101 generic/104 generic/106 generic/107 generic/177 generic/204 generic/207 generic/223 generic/260 generic/263 generic/311 generic/321 generic/322 generic/325 generic/335 generic/336 generic/341 generic/342 generic/343 generic/347 generic/348 generic/361 generic/376 generic/455 generic/459 generic/464 # fails after ~2 runs generic/475 # fails after ~5 runs, crashes sometimes generic/482 generic/483 generic/484 generic/489 generic/498 generic/500 generic/502 generic/510 generic/512 generic/520 shared/002 shared/298 xfs/030 xfs/033 xfs/045 xfs/070 xfs/137 xfs/138 xfs/191-input-validation xfs/194 xfs/195 xfs/199 xfs/278 xfs/284 xfs/291 xfs/294 xfs/424 xfs/451 xfs/495 xfs/499
$ cat expunges/4.19.18/xfs/unassigned/xfs_realtimedev.txt generic/034 generic/039 generic/040 generic/041 generic/054 generic/056 generic/057 generic/059 generic/065 generic/066 generic/073 generic/081 generic/090 generic/091 generic/101 generic/104 generic/106 generic/107 generic/177 generic/204 generic/207 generic/223 generic/260 generic/263 generic/311 generic/321 generic/322 generic/325 generic/335 generic/336 generic/341 generic/342 generic/343 generic/347 generic/348 generic/361 generic/376 generic/455 generic/459 generic/464 # fails after ~40 runs generic/475 # fails, and sometimes crashes generic/482 generic/483 generic/484 generic/489 generic/498 generic/500 generic/502 generic/510 generic/512 generic/520 shared/002 shared/298 xfs/002 xfs/030 xfs/033 xfs/068 xfs/070 xfs/137 xfs/138 xfs/191-input-validation xfs/194 xfs/195 xfs/199 xfs/278 xfs/291 xfs/294 xfs/419 xfs/424 xfs/451 xfs/495 xfs/499
Perhaps worth noting which was curious is that I could not get to trigger generic/464 on sections xfs_nocrc_512 and xfs_reflink_1024.
Athough I don't have a full baseline for ppc64le I did confirm that backporting upstream commit 837514f7a4ca fixes the kernel.org bug [1] report triggerable via generic/070 on ppc64le.
If you have any questions please let me know.
[0] https://gitlab.com/mcgrof/oscheck [1] https://bugzilla.kernel.org/show_bug.cgi?id=201577
Luis