On Mon, Jan 09, 2017 at 01:15:40PM -0800, Darrick J. Wong wrote: > On Mon, Jan 09, 2017 at 02:40:56PM +0200, Amir Goldstein wrote: > > On Sat, Jan 7, 2017 at 2:35 AM, Darrick J. Wong <darrick.wong@xxxxxxxxxx> wrote: > > > Hi all, > > > > > ... > > > If you're going to start using this mess, you probably ought to just > > > pull from my github trees. The kernel patches[1] should apply against > > > 4.10-rc2. xfsprogs[2] and xfstests[3] can be found in their usual > > > places. > > > > > > The patches have survived all auto group xfstests both with scrub-only > > > mode and also a special debugging mode to xfs_scrub that forces it to > > > rebuild the metadata structures even if they're not damaged. Since the > > > last patch release, I have now had time to run the new tests in [3] that > > > try to fuzz every field in every data structure on disk. > > > > > > > Darrick, > > > > I started running the dangerous_scrub group yersterday and it's killing my > > test machine. The test machine is x86_64 (i5-3470) 16GB RAM > > and test partitions are 100GB volume on spinning disk. > > > > xfs_db swaps my system to death and most of the tests it eventually > > gets shot down by oom killer. > > > > Is that surprising to you? > > Yes. I hit OOM too in xfs/1301. (I ran xfs/13??, xfs/1300 passed and 1301 oom'ed the host, I haven't run other tests yet.) > > > How much RAM does you test systems have? > > 2GB in a VM so the host system won't go down. Usually the test disks > are 8GB disks to keep the fuzzer runtimes down, but I've also run them > against 100GB volumes without OOMing... > > > Can you figure out a minimal RAM requirement to run these fuzzers > > and maybe check required RAM before running the test? > > I wouldn't have thought xfs_check would OOM... it would help to know > exactly what the xfs_db invocation thought it was doing. My test host has 64G memory, it's running on a 15G SCRATCH_DEV. > > > Alternatively, can you figure out how to reduce the amount of RAM > > used by the fuzzer? > > > > I was using mkfs options "-m rmapbt=1,reflink=1" > > and I tried running with and then without TEST_XFS_SCRUB=1. > > I don't see a reason to send the logs at this point, they are just a complete > > mass of destruction. > > All the tests? The full dmesg output would be useful to narrow it down to > a specific xfstest number, field name, and fuzz verb. I'm running them In my case, the xfs_db command is doing /usr/sbin/xfs_db -x -c sb 0 -c fuzz /dev/mapper/systemvg-testlv2 I attached console log and xfs-1301.full I have so far. Thanks, Eryu
Attachment:
xfs-1301.dmesg.gz
Description: application/gzip
Fields we propose to fuzz under: sb 0 xfs_db> blocksize dblocks rblocks rextents uuid logstart rootino rbmino rsumino rextsize agblocks agcount rbmblocks logblocks versionnum sectsize inodesize inopblock fname blocklog sectlog inodelog inopblog agblklog rextslog inprogress imax_pct icount ifree fdblocks frextents uquotino gquotino qflags flags shared_vn inoalignmt unit width dirblklog logsectlog logsectsize logsunit features2 bad_features2 features_compat features_ro_compat features_incompat features_log_incompat crc spino_align pquotino lsn meta_uuid + Fuzz xfs_db> = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz xfs_db> = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC bad character in field > unable to parse 'xfs_db>'. xfs_db> Field xfs_db> already set to xfs_db> xfs_db> bad character in field > xfs_db> , skipping test. + Fuzz blocksize = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 0 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 4294967295 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 2147487744 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 36864 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 4097 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 6113 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 2079 xfs_db> Field blocksize already set to , skipping test. + Fuzz blocksize = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC blocksize = 1858079377 xfs_db> Field blocksize already set to , skipping test. + Fuzz dblocks = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 0 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = null xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 9223372036858706944 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 2151414784 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 3931137 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 3933153 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 3929119 xfs_db> Field dblocks already set to , skipping test. + Fuzz dblocks = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC dblocks = 7980390161092602286 xfs_db> Field dblocks already set to , skipping test. + Fuzz rblocks = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 0 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = null xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 9223372036854775808 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 2147483648 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 1 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 2017 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 18446744073709549599 xfs_db> Field rblocks already set to , skipping test. + Fuzz rblocks = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rblocks = 7980390161092602286 xfs_db> Field rblocks already set to , skipping test. + Fuzz rextents = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 0 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = null xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 9223372036854775808 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 2147483648 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 1 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 2017 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 18446744073709549599 xfs_db> Field rextents already set to , skipping test. + Fuzz rextents = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextents = 7980390161092602286 xfs_db> Field rextents already set to , skipping test. + Fuzz uuid = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = 00000000-0000-0000-0000-000000000000 xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = ffffffff-ffff-ffff-ffff-ffffffffffff xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = 57d4ecda-f10b-458c-b2d0-9fe3727e1445 xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = d7d4ecda-f10b-458c-32d0-9fe3727e1445 xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = d7d4ecda-f10b-458c-b2d0-9fe3727e1444 xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC unable to fuzz field 'uuid' xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC unable to fuzz field 'uuid' xfs_db> Field uuid already set to , skipping test. + Fuzz uuid = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC uuid = 6ec00a91-d0f2-69ae-bab4-483b0b5cea66 xfs_db> Field uuid already set to , skipping test. + Fuzz logstart = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 0 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = null xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 9223372036856873024 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 2149580864 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 2097217 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 2099233 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 2095199 xfs_db> Field logstart already set to , skipping test. + Fuzz logstart = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC logstart = 7980390161092602286 xfs_db> Field logstart already set to , skipping test. + Fuzz rootino = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 0 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = null xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 9223372036854776320 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 2147484160 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 513 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 2529 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 18446744073709550111 xfs_db> Field rootino already set to , skipping test. + Fuzz rootino = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rootino = 7980390161092602286 xfs_db> Field rootino already set to , skipping test. + Fuzz rbmino = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 0 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = null xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 9223372036854776321 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 2147484161 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 513 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 2530 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 18446744073709550112 xfs_db> Field rbmino already set to , skipping test. + Fuzz rbmino = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rbmino = 7980390161092602286 xfs_db> Field rbmino already set to , skipping test. + Fuzz rsumino = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 0 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = null xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 9223372036854776322 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 2147484162 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 515 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 2531 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 18446744073709550113 xfs_db> Field rsumino already set to , skipping test. + Fuzz rsumino = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rsumino = 7980390161092602286 xfs_db> Field rsumino already set to , skipping test. + Fuzz rextsize = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 0 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = null xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 2147483649 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 32769 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 1 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 2018 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 4294965280 xfs_db> Field rextsize already set to , skipping test. + Fuzz rextsize = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC rextsize = 1858079377 xfs_db> Field rextsize already set to , skipping test. + Fuzz agblocks = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 0 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = null xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 2147729344 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 245696 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 245697 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 247713 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 243679 xfs_db> Field agblocks already set to , skipping test. + Fuzz agblocks = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agblocks = 1858079377 xfs_db> Field agblocks already set to , skipping test. + Fuzz agcount = zeroes ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 0 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = ones ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = null xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = firstbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 2147483664 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = middlebit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 32784 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = lastbit ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 17 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = add ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 2033 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = sub ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 4294965295 xfs_db> Field agcount already set to , skipping test. + Fuzz agcount = random ======================== xfs_db> xfs_db> Allowing fuzz of corrupted data with good CRC agcount = 1858079377 xfs_db> Field agcount already set to , skipping test.