From: "Gustavo A. R. Silva" <gustavoars@kernel.org>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
linux-hardening@vger.kernel.org
Subject: [PATCH v4][next] xfs: Replace one-element arrays with flexible-array members
Date: Mon, 12 Apr 2021 08:56:11 -0500 [thread overview]
Message-ID: <20210412135611.GA183224@embeddedor> (raw)
There is a regular need in the kernel to provide a way to declare having
a dynamically sized set of trailing elements in a structure. Kernel code
should always use “flexible array members”[1] for these cases. The older
style of one-element or zero-length arrays should no longer be used[2].
Refactor the code according to the use of flexible-array members in
multiple structures, instead of one-element arrays. Also, make use of
the new struct_size() helper to properly calculate the size of multiple
structures that contain flexible-array members. Additionally, wrap
some calls to the struct_size() helper in multiple inline functions.
Below are the results of running xfstests for "all" with the following
configuration in local.config:
export TEST_DEV=/dev/sdb1
export TEST_DIR=/mnt/test
export SCRATCH_DEV=/dev/sdb2
export SCRATCH_MNT=/mnt/scratch
The size for both partitions /dev/sdb1 and /dev/sdb2 is 25GB.
These are the results of running ./check -g all on 5.12.0-rc6 kernel:
FSTYP -- xfs (debug)
PLATFORM -- Linux/x86_64 machine 5.12.0-rc6-xfs-fixed+ #16 SMP Fri Apr 9 22:42:49 CDT 2021
MKFS_OPTIONS -- -f -bsize=4096 /dev/sdb2
MOUNT_OPTIONS -- /dev/sdb2 /mnt/scratch
generic/001 3s ... 4s
generic/002 0s ... 2s
generic/003 10s ... 10s
generic/004 1s ... 2s
generic/005 1s ... 1s
generic/006 1s ... 2s
generic/007 2s ... 2s
generic/008 1s ... 1s
generic/009 2s ... 1s
generic/010 [not run] /home/test/git/xfstests/src/dbtest not built
generic/011 2s ... 1s
generic/012 2s ... 1s
generic/013 8s ... 7s
generic/014 1s ... 1s
generic/015 1s ... 1s
generic/016 1s ... 1s
generic/017 56s ... 54s
generic/018 2s ... 2s
generic/019 [not run] /sys/kernel/debug/fail_make_request not found. Seems that CONFIG_FAULT_INJECTION_DEBUG_FS kernel config option not enabled
generic/020 3s ... 4s
generic/021 1s ... 1s
generic/022 1s ... 1s
generic/023 1s ... 1s
generic/024 1s ... 1s
generic/025 1s ... 1s
generic/026 3s ... 4s
generic/027 30s ... 29s
generic/028 6s ... 6s
generic/029 0s ... 1s
generic/030 1s ... 1s
generic/031 1s ... 0s
generic/032 9s ... 8s
generic/033 0s ... 1s
generic/034 1s ... 1s
generic/035 1s ... 1s
generic/036 11s ... 11s
generic/037 6s ... 5s
generic/038 [not run] FITRIM not supported on /mnt/scratch
generic/039 1s ... 1s
generic/040 5s ... 6s
generic/041 9s ... 8s
generic/042 2s ... 2s
generic/043 14s ... 14s
generic/044 17s ... 17s
generic/045 23s ... 23s
generic/046 16s ... 17s
generic/047 22s ... 21s
generic/048 22s ... 22s
generic/049 14s ... 14s
generic/050 1s ... 0s
generic/051 75s ... 75s
generic/052 1s ... 1s
generic/053 1s ... 1s
generic/054 19s ... 18s
generic/055 9s ... 10s
generic/056 1s ... 1s
generic/057 1s ... 1s
generic/058 1s ... 1s
generic/059 2s ... 2s
generic/060 1s ... 1s
generic/061 1s ... 1s
generic/062 2s ... 1s
generic/063 1s ... 1s
generic/064 1s ... 2s
generic/065 1s ... 1s
generic/066 1s ... 1s
generic/067 1s ... 1s
generic/068 43s ... 43s
generic/069 4s ... 3s
generic/070 2s ... 3s
generic/071 1s ... 0s
generic/072 13s ... 14s
generic/073 1s ... 0s
generic/074 11s ... 11s
generic/075 15s ... 15s
generic/076 2s ... 2s
generic/077 6s ... 5s
generic/078 1s ... 2s
generic/079 1s ... 0s
generic/080 3s ... 3s
generic/081 [not run] lvm utility required, skipped this test
generic/082 1s ... 1s
generic/083 7s ... 6s
generic/084 5s ... 6s
generic/085 5s ... 5s
generic/086 1s ... 1s
generic/087 1s ... 1s
generic/088 1s ... 1s
generic/089 7s ... 8s
generic/090 2s ... 1s
generic/091 6s ... 7s
generic/092 0s ... 0s
generic/093 1s ... 1s
generic/094 8s ... 9s
generic/095 4s ... 3s
generic/096 1s ... 0s
generic/097 1s ... 1s
generic/098 1s ... 1s
generic/099 1s ... 1s
generic/100 18s ... 17s
generic/101 0s ... 1s
generic/102 3s ... 3s
generic/103 2s ... 1s
generic/104 1s ... 1s
generic/105 1s ... 1s
generic/106 1s ... 1s
generic/107 1s ... 1s
generic/108 [not run] lvm utility required, skipped this test
generic/109 2s ... 1s
generic/110 2s ... 1s
generic/111 1s ... 1s
generic/112 16s ... 16s
generic/113 13s ... 13s
generic/114 3s ... 2s
generic/115 1s ... 1s
generic/116 1s ... 1s
generic/117 2s ... 2s
generic/118 1s ... 1s
generic/119 1s ... 1s
generic/120 16s ... 16s
generic/121 1s ... 1s
generic/122 1s ... 1s
generic/123 1s ... 1s
generic/124 3s ... 3s
generic/125 62s ... 62s
generic/126 0s ... 1s
generic/127 210s ... 216s
generic/128 1s ... 1s
generic/129 2s ... 2s
generic/130 3s ... 3s
generic/131 2s ... 2s
generic/132 12s ... 12s
generic/133 11s ... 12s
generic/134 1s ... 1s
generic/135 1s ... 1s
generic/136 1s ... 1s
generic/137 23s ... 22s
generic/138 1s ... 1s
generic/139 1s ... 1s
generic/140 1s ... 1s
generic/141 1s ... 1s
generic/142 2s ... 1s
generic/143 5s ... 5s
generic/144 3s ... 2s
generic/145 2s ... 2s
generic/146 3s ... 2s
generic/147 2s ... 1s
generic/148 1s ... 1s
generic/149 2s ... 1s
generic/150 2s ... 1s
generic/151 3s ... 1s
generic/152 2s ... 1s
generic/153 3s ... 1s
generic/154 3s ... 1s
generic/155 3s ... 2s
generic/156 3s ... 2s
generic/157 1s ... 2s
generic/158 2s ... 1s
generic/159 1s ... 1s
generic/160 1s ... 1s
generic/161 1s ... 1s
generic/162 8s ... 8s
generic/163 10s ... 9s
generic/164 10s ... 11s
generic/165 10s ... 10s
generic/166 9s ... 10s
generic/167 7s ... 7s
generic/168 41s ... 41s
generic/169 1s ... 1s
generic/170 47s ... 48s
generic/171 1s ... 1s
generic/172 2s ... 2s
generic/173 2s ... 2s
generic/174 1s ... 1s
generic/175 21s ... 20s
generic/176 45s ... 44s
generic/177 1s ... 1s
generic/178 1s ... 1s
generic/179 1s ... 1s
generic/180 1s ... 1s
generic/181 1s ... 1s
generic/182 2s ... 1s
generic/183 1s ... 2s
generic/184 1s ... 1s
generic/185 1s ... 1s
generic/186 21s ... 20s
generic/187 21s ... 20s
generic/188 1s ... 2s
generic/189 1s ... 1s
generic/190 2s ... 1s
generic/191 1s ... 1s
generic/192 6s ... 5s
generic/193 1s ... 2s
generic/194 2s ... 1s
generic/195 1s ... 2s
generic/196 2s ... 1s
generic/197 1s ... 1s
generic/198 1s ... 1s
generic/199 1s ... 2s
generic/200 2s ... 1s
generic/201 1s ... 2s
generic/202 1s ... 1s
generic/203 1s ... [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//generic/203.out.bad)
--- tests/generic/203.out 2021-02-28 21:47:48.606582461 -0600
+++ /home/test/git/xfstests/results//generic/203.out.bad 2021-04-11 22:48:59.977013978 -0500
__ -1,12 +1,7 __
QA output created by 203
Format and mount
Create the original files
-Compare files
-75f550706b7d54e6ae59a8220b532285 SCRATCH_MNT/test-203/file1
-75f550706b7d54e6ae59a8220b532285 SCRATCH_MNT/test-203/file2
-75f550706b7d54e6ae59a8220b532285 SCRATCH_MNT/test-203/file2.chk
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/203.out /home/test/git/xfstests/results//generic/203.out.bad' to see the entire diff)
generic/204 23s ... 22s
generic/205 [not run] Failed to format with small blocksize.
generic/206 [not run] Failed to format with small blocksize.
generic/207 1s ... 2s
generic/208 201s ... 200s
generic/209 32s ... 31s
generic/210 1s ... 1s
generic/211 1s ... 1s
generic/212 1s ... 0s
generic/213 0s ... 1s
generic/214 1s ... 1s
generic/215 3s ... 3s
generic/216 [not run] Failed to format with small blocksize.
generic/217 [not run] Failed to format with small blocksize.
generic/218 [not run] Failed to format with small blocksize.
generic/219 1s ... 1s
generic/220 [not run] Failed to format with small blocksize.
generic/221 1s ... 2s
generic/222 [not run] Failed to format with small blocksize.
generic/223 3s ... 3s
generic/224 8s ... 7s
generic/225 9s ... 8s
generic/226 2s ... 2s
generic/227 [not run] Failed to format with small blocksize.
generic/228 1s ... 1s
generic/229 [not run] Failed to format with small blocksize.
generic/230 13s ... 13s
generic/231 73s ... 74s
generic/232 4s ... 5s
generic/233 4s ... 4s
generic/234 8s ... 8s
generic/235 1s ... 1s
generic/236 2s ... 2s
generic/237 0s ... 0s
generic/238 [not run] Failed to format with small blocksize.
generic/239 25s ... 20s
generic/240 1s ... 1s
generic/241 74s ... 73s
generic/242 7s ... 8s
generic/243 7s ... 7s
generic/244 4s ... 3s
generic/245 0s ... 1s
generic/246 1s ... 1s
generic/247 5s ... 5s
generic/248 1s ... 1s
generic/249 1s ... 1s
generic/250 2s ... 2s
generic/251 [not run] FITRIM not supported on /mnt/scratch
generic/252 2s ... 2s
generic/253 1s ... [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//generic/253.out.bad)
--- tests/generic/253.out 2021-02-28 21:47:48.606582461 -0600
+++ /home/test/git/xfstests/results//generic/253.out.bad 2021-04-11 22:57:45.916411410 -0500
__ -6,7 +6,7 __
c946b71bb69c07daf25470742c967e7c SCRATCH_MNT/test-253/file2
c946b71bb69c07daf25470742c967e7c SCRATCH_MNT/test-253/file2.chk
CoW and unmount
-Compare files
-c946b71bb69c07daf25470742c967e7c SCRATCH_MNT/test-253/file1
-b5fc98f04b19fa7b2085ec1358c78760 SCRATCH_MNT/test-253/file2
-b5fc98f04b19fa7b2085ec1358c78760 SCRATCH_MNT/test-253/file2.chk
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/253.out /home/test/git/xfstests/results//generic/253.out.bad' to see the entire diff)
generic/254 1s ... 1s
generic/255 1s ... 2s
generic/256 51s ... 53s
generic/257 1s ... 1s
generic/258 1s ... 1s
generic/259 1s ... 1s
generic/260 [not run] FITRIM not supported on /mnt/scratch
generic/261 1s ... 1s
generic/262 1s ... 1s
generic/263 12s ... 12s
generic/264 1s ... 1s
generic/265 2s ... 2s
generic/266 2s ... 2s
generic/267 1s ... 2s
generic/268 2s ... 2s
generic/269 22s ... 24s
generic/270 39s ... 38s
generic/271 2s ... 3s
generic/272 1s ... 2s
generic/273 8s ... 9s
generic/274 7s ... 7s
generic/275 2s ... 3s
generic/276 2s ... 2s
generic/277 2s ... 2s
generic/278 2s ... 2s
generic/279 1s ... 2s
generic/280 2s ... 2s
generic/281 2s ... 2s
generic/282 2s ... 1s
generic/283 3s ... 4s
generic/284 1s ... 1s
generic/285 1s ... 3s
generic/286 2s ... 2s
generic/287 1s ... 2s
generic/288 [not run] FITRIM not supported on /mnt/scratch
generic/289 1s ... 2s
generic/290 2s ... 1s
generic/291 1s ... 2s
generic/292 1s ... 2s
generic/293 1s ... 2s
generic/294 1s ... 1s
generic/295 1s ... 2s
generic/296 2s ... 1s
generic/297 41s ... 42s
generic/298 42s ... 42s
generic/299 108s ... 112s
generic/300 5s ... 4s
generic/301 2s ... 1s
generic/302 3s ... 4s
generic/303 1s ... 2s
generic/304 1s ... 2s
generic/305 1s ... 1s
generic/306 1s ... 2s
generic/307 2s ... 2s
generic/308 1s ... 1s
generic/309 2s ... 2s
generic/310 64s ... 65s
generic/311 46s ... 45s
generic/312 1s ... 1s
generic/313 5s ... 5s
generic/314 1s ... 2s
generic/315 1s ... 2s
generic/316 1s ... 2s
generic/317 3s ... 1s
generic/318 0s ... 1s
generic/319 0s ... 0s
generic/320 16s ... 14s
generic/321 2s ... 2s
generic/322 1s ... 1s
generic/323 122s ... 122s
generic/324 13s ... 13s
generic/325 1s ... 1s
generic/326 1s ... 1s
generic/327 1s ... 1s
generic/328 2s ... 2s
generic/329 2s ... 1s
generic/330 1s ... 1s
generic/331 2s ... 2s
generic/332 2s ... 2s
generic/333 75s ... 73s
generic/334 69s ... 67s
generic/335 1s ... 1s
generic/336 1s ... 1s
generic/337 1s ... 0s
generic/338 1s ... 1s
generic/339 2s ... 3s
generic/340 2s ... 1s
generic/341 1s ... 1s
generic/342 1s ... 1s
generic/343 1s ... 1s
generic/344 2s ... 2s
generic/345 2s ... 3s
generic/346 2s ... 1s
generic/347 70s ... 71s
generic/348 1s ... 1s
generic/349 2s ... 2s
generic/350 2s ... 2s
generic/351 4s ... 3s
generic/352 26s ... 24s
generic/353 1s ... 1s
generic/354 2s ... 2s
generic/355 1s ... 1s
generic/356 1s ... 1s
generic/357 2s ... 1s
generic/358 7s ... 7s
generic/359 1s ... 1s
generic/360 1s ... 1s
generic/361 1s ... 1s
generic/362 [not run] mkfs.xfs doesn't have richacl feature
generic/363 [not run] mkfs.xfs doesn't have richacl feature
generic/364 [not run] mkfs.xfs doesn't have richacl feature
generic/365 [not run] mkfs.xfs doesn't have richacl feature
generic/366 [not run] mkfs.xfs doesn't have richacl feature
generic/367 [not run] mkfs.xfs doesn't have richacl feature
generic/368 [not run] mkfs.xfs doesn't have richacl feature
generic/369 [not run] mkfs.xfs doesn't have richacl feature
generic/370 [not run] mkfs.xfs doesn't have richacl feature
generic/371 5s ... 5s
generic/372 1s ... 1s
generic/373 1s ... 1s
generic/374 1s ... 1s
generic/375 1s ... 1s
generic/376 1s ... 1s
generic/377 1s ... 1s
generic/378 1s ... 1s
generic/379 1s ... 1s
generic/380 3s ... 3s
generic/381 1s ... 1s
generic/382 6s ... 3s
generic/383 0s ... 0s
generic/384 1s ... 1s
generic/385 2s ... 2s
generic/386 1s ... 0s
generic/387 50s ... 49s
generic/388 78s ... [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//generic/388.out.bad)
--- tests/generic/388.out 2021-02-28 21:47:48.614581906 -0600
+++ /home/test/git/xfstests/results//generic/388.out.bad 2021-04-11 23:16:57.210310505 -0500
__ -1,2 +1,6 __
QA output created by 388
Silence is golden.
+umount: /mnt/scratch: target is busy.
+mount: /mnt/scratch: /dev/sdb2 already mounted on /mnt/scratch.
+cycle mount failed
+(see /home/test/git/xfstests/results//generic/388.full for details)
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/388.out /home/test/git/xfstests/results//generic/388.out.bad' to see the entire diff)
generic/389 1s ... 1s
generic/390 15s ... 15s
generic/391 3s ... 4s
generic/392 4s ... 3s
generic/393 1s ... 1s
generic/394 1s ... 1s
generic/395 [not run] No encryption support for xfs
generic/396 [not run] No encryption support for xfs
generic/397 [not run] No encryption support for xfs
generic/398 [not run] No encryption support for xfs
generic/399 [not run] No encryption support for xfs
generic/400 0s ... 0s
generic/401 1s ... 0s
generic/402 1s ... 1s
generic/403 1s ... 1s
generic/404 11s ... 10s
generic/405 62s ... 63s
generic/406 1s ... 1s
generic/407 2s ... 2s
generic/408 2s ... 2s
generic/409 7s ... 6s
generic/410 13s ... umount: /mnt/test: target is busy.
_check_xfs_filesystem: filesystem on /dev/sdb1 has dirty log
(see /home/test/git/xfstests/results//generic/410.full for details)
xfs_check: /dev/sdb1 contains a mounted and writable filesystem
fatal error -- couldn't initialize XFS library
_check_xfs_filesystem: filesystem on /dev/sdb1 is inconsistent (r)
(see /home/test/git/xfstests/results//generic/410.full for details)
- output mismatch (see /home/test/git/xfstests/results//generic/410.out.bad)
--- tests/generic/410.out 2021-02-28 21:47:48.618581629 -0600
+++ /home/test/git/xfstests/results//generic/410.out.bad 2021-04-11 23:19:03.934425780 -0500
__ -207,6 +207,8 __
mpC SCRATCH_DEV
mpC/dir SCRATCH_DEV
======
+umount: /mnt/test/410: target is busy.
+mount: /mnt/test/410: /dev/sdb2 already mounted on /mnt/test/410.
make-shared a unbindable mount
before make-shared run on unbindable
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/410.out /home/test/git/xfstests/results//generic/410.out.bad' to see the entire diff)
generic/411 1s ... 2s
generic/412 1s ... 0s
generic/413 [not run] mount /dev/sdb2 with dax failed
generic/414 1s ... 1s
generic/415 48s ... 49s
generic/416 107s ... 104s
generic/417 11s ... 12s
generic/418 20s ... 19s
generic/419 [not run] No encryption support for xfs
generic/420 1s ... 1s
generic/421 [not run] No encryption support for xfs
generic/422 1s ... 1s
generic/423 1s ... 1s
generic/424 1s ... 1s
generic/425 2s ... 2s
generic/426 2s ... 1s
generic/427 3s ... 3s
generic/428 2s ... 1s
generic/429 [not run] No encryption support for xfs
generic/430 1s ... 1s
generic/431 1s ... 0s
generic/432 2s ... 1s
generic/433 1s ... 1s
generic/434 1s ... 1s
generic/435 [not run] No encryption support for xfs
generic/436 0s ... 1s
generic/437 29s ... 6s
generic/438 91s ... 92s
generic/439 2s ... 2s
generic/440 [not run] No encryption support for xfs
generic/441 2s ... 2s
generic/442 1s ... 1s
generic/443 2s ... 1s
generic/444 1s ... 0s
generic/445 1s ... 1s
generic/446 8s ... 9s
generic/447 29s ... 29s
generic/448 2s ... 1s
generic/449 20s ... 21s
generic/450 1s ... 1s
generic/451 31s ... 31s
generic/452 1s ... 1s
generic/453 1s ... 0s
generic/454 1s ... 1s
generic/455 [not run] This test requires a valid $LOGWRITES_DEV
generic/456 1s ... 1s
generic/457 [not run] This test requires a valid $LOGWRITES_DEV
generic/458 1s ... 0s
generic/459 [not run] lvm utility required, skipped this test
generic/460 2s ... 1s
generic/461 21s ... 21s
generic/462 [not run] mount /dev/sdb2 with dax failed
generic/463 2s ... 1s
generic/464 55s ... 54s
generic/465 6s ... 5s
generic/466 2s ... [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//generic/466.out.bad)
--- tests/generic/466.out 2021-02-28 21:47:48.618581629 -0600
+++ /home/test/git/xfstests/results//generic/466.out.bad 2021-04-11 23:27:16.513071107 -0500
__ -1,2 +1,6 __
QA output created by 466
Silence is golden
+umount: /mnt/scratch: target is busy.
+mount: /mnt/scratch: /dev/sdb2 already mounted on /mnt/scratch.
+cycle mount failed
+(see /home/test/git/xfstests/results//generic/466.full for details)
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/466.out /home/test/git/xfstests/results//generic/466.out.bad' to see the entire diff)
generic/467 2s ... 1s
generic/468 1s ... 2s
generic/469 2s ... 1s
generic/470 [not run] This test requires a valid $LOGWRITES_DEV
generic/471 2s ... 1s
generic/472 1s ... 1s
generic/473 - output mismatch (see /home/test/git/xfstests/results//generic/473.out.bad)
--- tests/generic/473.out 2021-02-28 21:47:48.618581629 -0600
+++ /home/test/git/xfstests/results//generic/473.out.bad 2021-04-11 23:27:24.941312327 -0500
__ -6,7 +6,7 __
1: [256..287]: hole
Hole + Data
0: [0..127]: hole
-1: [128..255]: data
+1: [128..135]: data
Hole + Data + Hole
0: [0..127]: hole
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/473.out /home/test/git/xfstests/results//generic/473.out.bad' to see the entire diff)
generic/474 0s ... 1s
generic/475 98s ... 81s
generic/476 179s ... 174s
generic/477 4s ... 2s
generic/478 8s ... 8s
generic/479 2s ... 2s
generic/480 2s ... 1s
generic/481 1s ... 1s
generic/482 [not run] This test requires a valid $LOGWRITES_DEV
generic/483 5s ... 5s
generic/484 2s ... 1s
generic/485 2s ... 1s
generic/486 1s ... 1s
generic/487 [not run] This test requires a valid $SCRATCH_LOGDEV
generic/488 2s ... 1s
generic/489 1s ... 0s
generic/490 2s ... 0s
generic/491 1s ... 1s
generic/492 1s ... 1s
generic/493 2s ... 1s
generic/494 2s ... 1s
generic/495 1s ... 1s
generic/496 3s ... 2s
generic/497 1s ... 1s
generic/498 1s ... 1s
generic/499 1s ... 1s
generic/500 [not run] FITRIM not supported on /mnt/scratch
generic/501 33s ... 33s
generic/502 1s ... 1s
generic/503 7s ... 6s
generic/504 1s ... 0s
generic/505 1s ... 1s
generic/506 2s ... 1s
generic/507 [not run] file system doesn't support chattr +AsSu
generic/508 1s ... 1s
generic/509 1s ... 1s
generic/510 1s ... 0s
generic/511 2s ... 1s
generic/512 1s ... 0s
generic/513 2s ... 2s
generic/514 2s ... 2s
generic/515 1s ... 1s
generic/516 1s ... 1s
generic/517 1s ... 1s
generic/518 1s ... 1s
generic/519 1s ... 1s
generic/520 12s ... 12s
generic/521 549s ... 560s
generic/522 606s ... 616s
generic/523 0s ... 1s
generic/524 2s ... 3s
generic/525 1s ... 0s
generic/526 1s ... 0s
generic/527 1s ... 1s
generic/528 1s ... 1s
generic/529 1s ... 1s
generic/530 3s ... 4s
generic/531 284s ... 269s
generic/532 1s ... 1s
generic/533 0s ... 1s
generic/534 0s ... 1s
generic/535 1s ... 1s
generic/536 1s ... 1s
generic/537 [not run] FSTRIM not supported
generic/538 2s ... 1s
generic/539 1s ... 1s
generic/540 1s ... 2s
generic/541 2s ... 1s
generic/542 1s ... 1s
generic/543 2s ... 2s
generic/544 2s ... 2s
generic/545 1s ... 1s
generic/546 2s ... 1s
generic/547 1s ... 2s
generic/548 [not run] No encryption support for xfs
generic/549 [not run] No encryption support for xfs
generic/550 [not run] No encryption support for xfs
generic/551 57s ... 58s
generic/552 1s ... 1s
generic/553 1s ... 1s
generic/554 1s ... 1s
generic/555 1s ... 1s
generic/556 [not run] xfs does not support casefold feature
generic/557 1s ... 2s
generic/558 69s ... 69s
generic/559 [not run] duperemove utility required, skipped this test
generic/560 [not run] duperemove utility required, skipped this test
generic/561 [not run] duperemove utility required, skipped this test
generic/562 94s ... 92s
generic/563 [not run] cgroup2 not mounted on /sys/fs/cgroup
generic/564 1s ... 1s
generic/565 1s ... 1s
generic/566 9s ... 7s
generic/567 0s ... 1s
generic/568 1s ... 1s
generic/569 1s ... 1s
generic/570 [not run] userspace hibernation to swap is enabled
generic/571 7s ... 7s
generic/572 [not run] fsverity utility required, skipped this test
generic/573 [not run] fsverity utility required, skipped this test
generic/574 [not run] fsverity utility required, skipped this test
generic/575 [not run] fsverity utility required, skipped this test
generic/576 [not run] fsverity utility required, skipped this test
generic/577 [not run] fsverity utility required, skipped this test
generic/578 1s ... 1s
generic/579 [not run] fsverity utility required, skipped this test
generic/580 [not run] No encryption support for xfs
generic/581 [not run] No encryption support for xfs
generic/582 [not run] No encryption support for xfs
generic/583 [not run] No encryption support for xfs
generic/584 [not run] No encryption support for xfs
generic/585 2s ... 1s
generic/586 7s ... 5s
generic/587 2s ... 1s
generic/588 2s ... 2s
generic/589 8s ... 7s
generic/590 19s ... 23s
generic/591 1s ... 1s
generic/592 [not run] No encryption support for xfs
generic/593 [not run] No encryption support for xfs
generic/594 - output mismatch (see /home/test/git/xfstests/results//generic/594.out.bad)
--- tests/generic/594.out 2021-02-28 21:47:48.622581352 -0600
+++ /home/test/git/xfstests/results//generic/594.out.bad 2021-04-12 00:02:58.035667398 -0500
__ -5,31 +5,31 __
*** Report for group quotas on device SCRATCH_DEV
Block grace time: DEF_TIME; Inode grace time: DEF_TIME
*** Report for project quotas on device SCRATCH_DEV
-Block grace time: 00:10; Inode grace time: 00:20
+Block grace time: DEF_TIME; Inode grace time: DEF_TIME
2. set group quota timer
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/594.out /home/test/git/xfstests/results//generic/594.out.bad' to see the entire diff)
generic/595 [not run] No encryption support for xfs
generic/596 [not run] accton utility required, skipped this test
generic/597 23s ... 2s
generic/598 1s ... 1s
generic/599 1s ... 1s
generic/600 - output mismatch (see /home/test/git/xfstests/results//generic/600.out.bad)
--- tests/generic/600.out 2021-02-28 21:47:48.622581352 -0600
+++ /home/test/git/xfstests/results//generic/600.out.bad 2021-04-12 00:03:10.805194828 -0500
__ -1,2 +1,3 __
QA output created by 600
Silence is golden
+set grace to 1618203890 but got grace 1618203788
...
(Run 'diff -u /home/test/git/xfstests/tests/generic/600.out /home/test/git/xfstests/results//generic/600.out.bad' to see the entire diff)
generic/601 [not run] xfs_quota does not support individual grace extension
generic/602 [not run] No encryption support for xfs
generic/603 61s ... 56s
generic/604 2s ... 2s
generic/605 [not run] mount /dev/sdb2 with dax=always failed
generic/606 [not run] mount /dev/sdb2 with dax=always failed
generic/607 1s ... 1s
generic/608 [not run] mount /dev/sdb2 with dax=always failed
generic/609 0s ... 1s
generic/610 4s ... 5s
generic/611 1s ... 1s
generic/612 1s ... 1s
generic/613 [not run] No encryption support for xfs
generic/614 1s ... 1s
generic/615 26s ... 24s
generic/616 62s ... 63s
generic/617 12s ... 12s
generic/618 [not run] test requires XFS bug_on_assert to be off, turn it off to run the test
generic/619 14s ... 14s
generic/620 2s ... 2s
generic/621 [not run] No encryption support for xfs
generic/622 23s ... 23s
shared/002 13s ... 12s
shared/032 54s ... 57s
shared/298 12s ... 12s
xfs/001 2s ... 2s
xfs/002 1s ... 1s
xfs/003 4s ... 5s
xfs/004 1s ... 0s
xfs/005 1s ... 1s
xfs/006 2s ... 3s
xfs/007 1s ... 1s
xfs/008 1s ... 1s
xfs/009 1s ... 1s
xfs/010 2s ... 2s
xfs/011 18s ... 17s
xfs/012 1s ... 1s
xfs/013 129s ... 125s
xfs/014 3s ... 2s
xfs/015 3s ... 3s
xfs/016 32s ... 32s
xfs/017 3s ... 3s
xfs/018 - output mismatch (see /home/test/git/xfstests/results//xfs/018.out.bad)
--- tests/xfs/018.out 2021-02-28 21:47:48.634580518 -0600
+++ /home/test/git/xfstests/results//xfs/018.out.bad 2021-04-12 00:11:44.651612557 -0500
__ -1,17 +1,9 __
QA output created by 018
*** init FS
-*** compare logprint: 018.op with 018.fulldir/op.mnt-onoalign,logbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=1.filtered
-*** compare logprint: 018.trans_inode with 018.fulldir/trans_inode.mnt-onoalign,logbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=1.filtered
-*** compare logprint: 018.trans_buf with 018.fulldir/trans_buf.mnt-onoalign,logbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=1.filtered
-*** compare logprint: 018.op with 018.fulldir/op.mnt-onoalign,logbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=2.filtered
-*** compare logprint: 018.trans_inode with 018.fulldir/trans_inode.mnt-onoalign,logbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=2.filtered
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/018.out /home/test/git/xfstests/results//xfs/018.out.bad' to see the entire diff)
xfs/019 1s ... 1s
xfs/020 1s ... 1s
xfs/021 0s ... 1s
xfs/022 [not run] xfsdump not found
xfs/023 [not run] xfsdump not found
xfs/024 [not run] xfsdump not found
xfs/025 [not run] xfsdump not found
xfs/026 [not run] xfsdump not found
xfs/027 [not run] xfsdump not found
xfs/028 [not run] xfsdump not found
xfs/029 0s ... 1s
xfs/030 - output mismatch (see /home/test/git/xfstests/results//xfs/030.out.bad)
--- tests/xfs/030.out 2021-02-28 21:47:48.634580518 -0600
+++ /home/test/git/xfstests/results//xfs/030.out.bad 2021-04-12 00:11:53.808251452 -0500
__ -105,7 +105,6 __
Phase 2 - using <TYPEOF> log
- zero log...
- scan filesystem freespace and inode maps...
-bad agbno AGBNO in agfl, agno 0
- found root inode chunk
Phase 3 - for each AG...
- scan and clear agi unlinked lists...
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/030.out /home/test/git/xfstests/results//xfs/030.out.bad' to see the entire diff)
xfs/031 3s ... 4s
xfs/032 4s ... 5s
xfs/033 3s ... 2s
xfs/034 1s ... 0s
xfs/035 [not run] xfsdump not found
xfs/036 [not run] xfsdump not found
xfs/037 [not run] xfsdump not found
xfs/038 [not run] xfsdump not found
xfs/039 [not run] xfsdump not found
xfs/040 [not run] Can't run libxfs-diff without KWORKAREA set
xfs/041 12s ... 12s
xfs/042 13s ... 14s
xfs/043 [not run] xfsdump not found
xfs/044 [not run] This test requires a valid $SCRATCH_LOGDEV
xfs/045 1s ... 1s
xfs/046 [not run] xfsdump not found
xfs/047 [not run] xfsdump not found
xfs/048 0s ... 1s
xfs/049 2s ... 2s
xfs/050 4s ... 4s
xfs/051 17s ... 18s
xfs/052 1s ... 1s
xfs/053 0s ... 0s
xfs/054 1s ... 1s
xfs/055 [not run] xfsdump not found
xfs/056 [not run] xfsdump not found
xfs/057 17s ... 17s
xfs/058 1s ... 1s
xfs/059 [not run] xfsdump not found
xfs/060 [not run] xfsdump not found
xfs/061 [not run] xfsdump not found
xfs/062 4s ... 4s
xfs/063 [not run] xfsdump not found
xfs/064 [not run] xfsdump not found
xfs/065 [not run] xfsdump not found
xfs/066 [not run] xfsdump not found
xfs/067 0s ... 1s
xfs/068 [not run] xfsdump not found
xfs/069 1s ... 2s
xfs/070 1s ... 1s
xfs/071 1s ... 1s
xfs/072 1s ... 1s
xfs/073 - output mismatch (see /home/test/git/xfstests/results//xfs/073.out.bad)
--- tests/xfs/073.out 2021-02-28 21:47:48.638580241 -0600
+++ /home/test/git/xfstests/results//xfs/073.out.bad 2021-04-12 00:13:43.063547248 -0500
__ -14,6 +14,14 __
comparing new image files to old
comparing new image directories to old
comparing new image geometry to old
+--- /tmp/2751531.geometry1 2021-04-12 00:13:38.127229711 -0500
++++ /tmp/2751531.geometry2 2021-04-12 00:13:38.135230226 -0500
+__ -1,4 +1,4 __
+-meta-data=<DEVIMAGE> isize=512 agcount=2, agsize=5248 blks
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/073.out /home/test/git/xfstests/results//xfs/073.out.bad' to see the entire diff)
xfs/074 3s ... 2s
xfs/075 0s ... 1s
xfs/076 34s ... 34s
xfs/077 3s ... 3s
xfs/078 5s ... 4s
xfs/079 12s ... 12s
xfs/080 2s ... 2s
xfs/081 [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//xfs/081.out.bad)
--- tests/xfs/081.out 2021-02-28 21:47:48.638580241 -0600
+++ /home/test/git/xfstests/results//xfs/081.out.bad 2021-04-12 00:14:42.615297160 -0500
__ -1,4 +1,10 __
QA output created by 081
*** init FS
-*** compare logprint: 081.ugquota.trans_inode with 081.fulldir/trans_inode.mnt-oquota,gquota.mkfs-lsize=2000b-llazy-count=1-lversion=1.filtered
+
+*** Cannot mkfs for this test using option specified: -l size=2000b -l lazy-count=1 -l version=1 ***
+
+*** compare logprint: 081.ugquota.trans_inode with /home/test/git/xfstests/results//xfs/081.fulldir/trans_inode.mnt-oquota,gquota.mkfs-lsize=2000b-llazy-count=1-lversion=1.filtered
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/081.out /home/test/git/xfstests/results//xfs/081.out.bad' to see the entire diff)
xfs/082 - output mismatch (see /home/test/git/xfstests/results//xfs/082.out.bad)
--- tests/xfs/082.out 2021-02-28 21:47:48.638580241 -0600
+++ /home/test/git/xfstests/results//xfs/082.out.bad 2021-04-12 00:14:44.655423093 -0500
__ -1,39 +1,11 __
QA output created by 082
*** init FS
--- mkfs=version=2, mnt=logbsize=32k, sync=sync ---
-*** compare logprint: 082.trans_inode with 082.fulldir/trans_inode.mnt-ologbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=2.sync.filtered
-*** compare logprint: 082.trans_buf with 082.fulldir/trans_buf.mnt-ologbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=2.sync.filtered
---- mkfs=version=2,su=4096, mnt=logbsize=32k, sync=sync ---
-*** compare logprint: 082.trans_inode with 082.fulldir/trans_inode.mnt-ologbsize=32k.mkfs-lsize=2000b-llazy-count=1-lversion=2,su=4096.sync.filtered
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/082.out /home/test/git/xfstests/results//xfs/082.out.bad' to see the entire diff)
xfs/083 394s ... 382s
xfs/084 60s ... 62s
xfs/085 3s ... 3s
xfs/086 4s ... 3s
xfs/087 3s ... 3s
xfs/088 3s ... 4s
xfs/089 4s ... 4s
xfs/090 [not run] External volumes not in use, skipped this test
xfs/091 3s ... 3s
xfs/092 1s ... 1s
xfs/093 3s ... 4s
xfs/094 [not run] External volumes not in use, skipped this test
xfs/095 1s ... 1s
xfs/096 [not run] Requires older mkfs without strict input checks: the last supported version of xfsprogs is 4.5.
xfs/097 3s ... 3s
xfs/098 [not run] test requires XFS bug_on_assert to be off, turn it off to run the test
xfs/099 1s ... 1s
xfs/100 3s ... 2s
xfs/101 2s ... 3s
xfs/102 8s ... 7s
xfs/103 1s ... 0s
xfs/104 13s ... 12s
xfs/105 7s ... 7s
xfs/106 17s ... 16s
xfs/107 - output mismatch (see /home/test/git/xfstests/results//xfs/107.out.bad)
--- tests/xfs/107.out 2021-02-28 21:47:48.638580241 -0600
+++ /home/test/git/xfstests/results//xfs/107.out.bad 2021-04-12 00:23:49.084870953 -0500
__ -9,6 +9,32 __
### populate filesystem
### initial report
[SCR_DEV] ([SCR_MNT]) Project:
+ 96532 #0
+ 5004 #3
+ 4356 #1
+ 3876 #2
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/107.out /home/test/git/xfstests/results//xfs/107.out.bad' to see the entire diff)
xfs/108 1s ... 1s
xfs/109 21s ... 24s
xfs/110 3s ... 3s
xfs/111 4s ... 4s
xfs/112 7s ... 6s
xfs/113 44s ... 47s
xfs/114 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/115 [not run] test requires XFS bug_on_assert to be off, turn it off to run the test
xfs/116 1s ... 1s
xfs/117 4s ... 3s
xfs/118 10s ... 9s
xfs/119 3s ... 3s
xfs/120 3s ... 3s
xfs/121 6s ... 6s
xfs/122 [not run] indent utility required, skipped this test
xfs/123 2s ... [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//xfs/123.out.bad)
--- tests/xfs/123.out 2021-02-28 21:47:48.642579963 -0600
+++ /home/test/git/xfstests/results//xfs/123.out.bad 2021-04-12 00:25:41.274261417 -0500
__ -3,9 +3,7 __
+ mount fs image
+ make some files
file contents: moo
+umount: /mnt/scratch: target is busy.
+ check fs
-+ corrupt image
-+ mount image
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/123.out /home/test/git/xfstests/results//xfs/123.out.bad' to see the entire diff)
xfs/124 2s ... 1s
xfs/125 4s ... 4s
xfs/126 4s ... 3s
xfs/127 2s ... 2s
xfs/128 8s ... 9s
xfs/129 4s ... 3s
xfs/130 2s ... 1s
xfs/131 [not run] External volumes not in use, skipped this test
xfs/132 0s ... 1s
xfs/133 1s ... 1s
xfs/134 1s ... 0s
xfs/135 2s ... 2s
xfs/136 - output mismatch (see /home/test/git/xfstests/results//xfs/136.out.bad)
--- tests/xfs/136.out 2021-02-28 21:47:48.642579963 -0600
+++ /home/test/git/xfstests/results//xfs/136.out.bad 2021-04-12 00:48:25.823406767 -0500
__ -1,5 +1,5 __
QA output created by 136
-inum=67
+inum=131
core.format = 2 (extents)
core.size = 0
core.extsize = 0
__ -7,6 +7,7 __
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/136.out /home/test/git/xfstests/results//xfs/136.out.bad' to see the entire diff)
xfs/137 4s ... 4s
xfs/138 3s ... 3s
xfs/139 6s ... 5s
xfs/140 47s ... 45s
xfs/141 9s ... 12s
xfs/142 [not run] Assuming DMAPI modules are not loaded
xfs/143 [not run] Assuming DMAPI modules are not loaded
xfs/144 [not run] Assuming DMAPI modules are not loaded
xfs/145 [not run] Assuming DMAPI modules are not loaded
xfs/146 [not run] Assuming DMAPI modules are not loaded
xfs/147 [not run] Assuming DMAPI modules are not loaded
xfs/148 3s ... 1s
xfs/149 2s ... 1s
xfs/150 [not run] Assuming DMAPI modules are not loaded
xfs/151 [not run] Assuming DMAPI modules are not loaded
xfs/152 [not run] Assuming DMAPI modules are not loaded
xfs/153 [not run] Assuming DMAPI modules are not loaded
xfs/154 [not run] Assuming DMAPI modules are not loaded
xfs/155 [not run] Assuming DMAPI modules are not loaded
xfs/156 [not run] Assuming DMAPI modules are not loaded
xfs/157 [not run] Assuming DMAPI modules are not loaded
xfs/158 [not run] Assuming DMAPI modules are not loaded
xfs/159 [not run] Assuming DMAPI modules are not loaded
xfs/160 [not run] Assuming DMAPI modules are not loaded
xfs/161 [not run] Assuming DMAPI modules are not loaded
xfs/162 [not run] Assuming DMAPI modules are not loaded
xfs/163 [not run] Assuming DMAPI modules are not loaded
xfs/164 1s ... 1s
xfs/165 1s ... 1s
xfs/166 1s ... 0s
xfs/167 62s ... 61s
xfs/168 [not run] Assuming DMAPI modules are not loaded
xfs/169 15s ... 16s
xfs/170 3s ... 2s
xfs/171 17s ... 18s
xfs/172 [failed, exit status 1]- output mismatch (see /home/test/git/xfstests/results//xfs/172.out.bad)
--- tests/xfs/172.out 2021-02-28 21:47:48.642579963 -0600
+++ /home/test/git/xfstests/results//xfs/172.out.bad 2021-04-12 00:51:27.328872669 -0500
__ -3,9 +3,5 __
# streaming
# sync AGs...
# checking stream AGs...
-+ expected failure, matching AGs
-# testing 64 16 20 10 1 0 1 ....
-# streaming
-# sync AGs...
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/172.out /home/test/git/xfstests/results//xfs/172.out.bad' to see the entire diff)
xfs/173 8s ... 8s
xfs/174 4s ... 3s
xfs/175 [not run] Assuming DMAPI modules are not loaded
xfs/176 [not run] Assuming DMAPI modules are not loaded
xfs/177 [not run] Assuming DMAPI modules are not loaded
xfs/178 1s ... 1s
xfs/179 1s ... 1s
xfs/180 1s ... 1s
xfs/181 11s ... 11s
xfs/182 2s ... 2s
xfs/183 3s ... 3s
xfs/184 2s ... 2s
xfs/185 [not run] Assuming DMAPI modules are not loaded
xfs/186 [not run] attr v1 not supported on /dev/sdb2
xfs/187 [not run] attr v1 not supported on /dev/sdb2
xfs/188 10s ... 9s
xfs/189 [not run] noattr2 mount option not supported on /dev/sdb2
xfs/190 1s ... 1s
xfs/191-input-validation 6s ... 4s
xfs/192 2s ... 2s
xfs/193 2s ... 1s
xfs/194 1s ... 1s
xfs/195 [not run] xfsdump utility required, skipped this test
xfs/196 1s ... 1s
xfs/197 [not run] This test is only valid on 32 bit machines
xfs/198 2s ... 1s
xfs/199 1s ... 1s
xfs/200 2s ... 2s
xfs/201 1s ... 1s
xfs/202 1s ... 1s
xfs/203 2s ... 1s
xfs/204 2s ... 2s
xfs/205 2s ... 2s
xfs/206 2s ... 1s
xfs/207 2s ... 1s
xfs/208 2s ... 2s
xfs/209 1s ... 1s
xfs/210 2s ... 1s
xfs/211 217s ... 228s
xfs/212 2s ... 1s
xfs/213 3s ... 4s
xfs/214 6s ... 3s
xfs/215 1s ... 2s
xfs/216 2s ... 2s
xfs/217 1s ... 1s
xfs/218 2s ... 2s
xfs/219 2s ... 1s
xfs/220 1s ... 1s
xfs/221 2s ... 2s
xfs/222 3s ... 1s
xfs/223 2s ... 2s
xfs/224 2s ... 1s
xfs/225 2s ... 2s
xfs/226 1s ... 1s
xfs/227 299s ... 294s
xfs/228 2s ... 1s
xfs/229 9s ... 8s
xfs/230 2s ... 2s
xfs/231 4s ... 5s
xfs/232 4s ... 4s
xfs/233 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/234 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/235 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/236 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/237 2s ... 2s
xfs/238 2s ... 1s
xfs/239 1s ... 2s
xfs/240 3s ... 2s
xfs/241 1s ... 2s
xfs/242 2s ... 1s
xfs/243 1s ... 1s
xfs/244 [not run] 16 bit project IDs not supported on /dev/sdb2
xfs/245 1s ... 1s
xfs/246 0s ... 1s
xfs/247 1s ... 0s
xfs/248 2s ... 2s
xfs/249 1s ... 1s
xfs/250 8s ... 7s
xfs/251 2s ... 2s
xfs/252 2s ... 2s
xfs/253 2s ... 2s
xfs/254 1s ... 1s
xfs/255 2s ... 2s
xfs/256 1s ... 1s
xfs/257 2s ... 2s
xfs/258 2s ... 2s
xfs/259 3s ... 3s
xfs/260 1s ... 1s
xfs/261 1s ... 0s
xfs/262 - output mismatch (see /home/test/git/xfstests/results//xfs/262.out.bad)
--- tests/xfs/262.out 2021-02-28 21:47:48.650579408 -0600
+++ /home/test/git/xfstests/results//xfs/262.out.bad 2021-04-12 01:03:02.923150108 -0500
__ -1,3 +1,5 __
QA output created by 262
Format and populate
Force online repairs
+Error: /mnt/scratch: Kernel metadata scrubbing facility is not available. (phase1.c line 147)
+/mnt/scratch: operational errors found: 1
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/262.out /home/test/git/xfstests/results//xfs/262.out.bad' to see the entire diff)
xfs/263 1s ... 2s
xfs/264 6s ... 5s
xfs/265 8s ... 7s
xfs/266 [not run] xfsdump not found
xfs/267 [not run] xfsdump not found
xfs/268 [not run] xfsdump not found
xfs/269 1s ... 1s
xfs/270 1s ... 1s
xfs/271 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/272 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/273 4s ... 116s
xfs/274 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/275 [not run] This test requires a valid $SCRATCH_LOGDEV
xfs/276 [not run] External volumes not in use, skipped this test
xfs/277 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/278 1s ... 1s
xfs/279 10s ... 9s
xfs/280 1s ... 2s
xfs/281 [not run] xfsdump not found
xfs/282 [not run] xfsdump not found
xfs/283 [not run] xfsdump not found
xfs/284 1s ... 1s
xfs/285 - output mismatch (see /home/test/git/xfstests/results//xfs/285.out.bad)
--- tests/xfs/285.out 2021-02-28 21:47:48.650579408 -0600
+++ /home/test/git/xfstests/results//xfs/285.out.bad 2021-04-12 01:06:37.689415191 -0500
__ -1,4 +1,6 __
QA output created by 285
Format and populate
+Error: /mnt/scratch: Kernel metadata scrubbing facility is not available. (phase1.c line 147)
+/mnt/scratch: operational errors found: 1
Concurrent scrub
Test done
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/285.out /home/test/git/xfstests/results//xfs/285.out.bad' to see the entire diff)
xfs/286 - output mismatch (see /home/test/git/xfstests/results//xfs/286.out.bad)
--- tests/xfs/286.out 2021-02-28 21:47:48.650579408 -0600
+++ /home/test/git/xfstests/results//xfs/286.out.bad 2021-04-12 01:07:41.784464380 -0500
__ -1,4 +1,132 __
QA output created by 286
Format and populate
+Error: /mnt/scratch: Kernel metadata scrubbing facility is not available. (phase1.c line 147)
+/mnt/scratch: operational errors found: 1
Concurrent repair
+Error: /mnt/scratch: Kernel metadata scrubbing facility is not available. (phase1.c line 147)
+/mnt/scratch: operational errors found: 1
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/286.out /home/test/git/xfstests/results//xfs/286.out.bad' to see the entire diff)
xfs/287 [not run] xfsdump not found
xfs/288 0s ... 1s
xfs/289 1s ... 1s
xfs/290 0s ... 1s
xfs/291 45s ... 49s
xfs/292 1s ... 1s
xfs/293 0s ... 0s
xfs/294 17s ... 16s
xfs/295 8s ... 10s
xfs/296 [not run] xfsdump not found
xfs/297 38s ... 43s
xfs/298 3s ... 3s
xfs/299 4s ... 4s
xfs/300 [not run] SELinux not enabled
xfs/301 [not run] xfsdump not found
xfs/302 [not run] xfsdump not found
xfs/303 1s ... 0s
xfs/304 1s ... - output mismatch (see /home/test/git/xfstests/results//xfs/304.out.bad)
--- tests/xfs/304.out 2021-02-28 21:47:48.650579408 -0600
+++ /home/test/git/xfstests/results//xfs/304.out.bad 2021-04-12 01:09:55.442806556 -0500
__ -3,5 +3,6 __
*** umount
*** turn off project quotas
*** umount
+umount: /mnt/scratch: target is busy.
*** turn off group/project quotas
*** umount
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/304.out /home/test/git/xfstests/results//xfs/304.out.bad' to see the entire diff)
xfs/305 65s ... 65s
xfs/306 12s ... 12s
xfs/307 2s ... 2s
xfs/308 1s ... 1s
xfs/309 8s ... 8s
xfs/310 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/311 21s ... 22s
xfs/312 2s ... 1s
xfs/313 1s ... 1s
xfs/314 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/315 1s ... 1s
xfs/316 1s ... 1s
xfs/317 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/318 0s ... 1s
xfs/319 2s ... 1s
xfs/320 1s ... 1s
xfs/321 1s ... 1s
xfs/322 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/323 1s ... 1s
xfs/324 1s ... 1s
xfs/325 1s ... 1s
xfs/326 2s ... 1s
xfs/327 1s ... 2s
xfs/328 30s ... 28s
xfs/329 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/330 1s ... 1s
xfs/331 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/332 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/333 [not run] rmapbt not supported by scratch filesystem type: xfs
xfs/334 [not run] External volumes not in use, skipped this test
xfs/335 [not run] External volumes not in use, skipped this test
xfs/336 [not run] External volumes not in use, skipped this test
xfs/337 [not run] External volumes not in use, skipped this test
xfs/338 [not run] External volumes not in use, skipped this test
xfs/339 [not run] External volumes not in use, skipped this test
xfs/340 [not run] External volumes not in use, skipped this test
xfs/341 [not run] External volumes not in use, skipped this test
xfs/342 [not run] External volumes not in use, skipped this test
xfs/343 [not run] External volumes not in use, skipped this test
xfs/344 1s ... 1s
xfs/345 2s ... 2s
xfs/346 5s ... 6s
xfs/347 - output mismatch (see /home/test/git/xfstests/results//xfs/347.out.bad)
--- tests/xfs/347.out 2021-02-28 21:47:48.654579130 -0600
+++ /home/test/git/xfstests/results//xfs/347.out.bad 2021-04-12 01:12:50.420814520 -0500
__ -5,6 +5,10 __
2909feb63a37b0e95fe5cfb7f274f7b1 SCRATCH_MNT/test-347/file1
2909feb63a37b0e95fe5cfb7f274f7b1 SCRATCH_MNT/test-347/file2
CoW and unmount
+umount: /mnt/scratch: target is busy.
+mount: /mnt/scratch: /dev/sdb2 already mounted on /mnt/scratch.
+cycle mount failed
+(see /home/test/git/xfstests/results//xfs/347.full for details)
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/347.out /home/test/git/xfstests/results//xfs/347.out.bad' to see the entire diff)
xfs/348 7s ... 7s
xfs/349 - output mismatch (see /home/test/git/xfstests/results//xfs/349.out.bad)
--- tests/xfs/349.out 2021-02-28 21:47:48.654579130 -0600
+++ /home/test/git/xfstests/results//xfs/349.out.bad 2021-04-12 01:13:00.413385104 -0500
__ -1,3 +1,5 __
QA output created by 349
Format and populate
Scrub
+Error: /mnt/scratch: Kernel metadata scrubbing facility is not available. (phase1.c line 147)
+/mnt/scratch: operational errors found: 1
...
(Run 'diff -u /home/test/git/xfstests/tests/xfs/349.out /home/test/git/xfstests/results//xfs/349.out.bad' to see the entire diff)
xfs/350
Other tests might need to be run in order to verify everything is working
as expected. For such tests, the intervention of the maintainers might be
needed.
[1] https://en.wikipedia.org/wiki/Flexible_array_member
[2] https://www.kernel.org/doc/html/v5.9/process/deprecated.html#zero-length-and-one-element-arrays
Link: https://github.com/KSPP/linux/issues/79
Build-tested-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/lkml/6070a809.7QaU2ofU9h9VwFeh%25lkp@intel.com/
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
Changes in v4:
- Fix size for kmem_cache_create() in fs/xfs/xfs_super.c:xfs_init_zones().
- Update changelog text with test results on Linux 5.12-rc6.
Changes in v3:
- Add multiple inline functions as wrappers for struct_size(), as
per Darrick's request.
- Use type size_t instead of uint for a couple of objects.
Changes in v2:
- Use struct_size() helper in more places.
- Update changelog text with testing results on Linux 5.12.0-rc2.
- Fix issue with use of struct_size() with the right struct object.
- Use flex_array_size() helper.
fs/xfs/libxfs/xfs_log_format.h | 12 ++--
fs/xfs/xfs_extfree_item.c | 102 +++++++++++++++++++++++----------
fs/xfs/xfs_ondisk.h | 8 +--
fs/xfs/xfs_super.c | 14 ++---
4 files changed, 90 insertions(+), 46 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_log_format.h b/fs/xfs/libxfs/xfs_log_format.h
index 8bd00da6d2a4..9934a465b441 100644
--- a/fs/xfs/libxfs/xfs_log_format.h
+++ b/fs/xfs/libxfs/xfs_log_format.h
@@ -574,7 +574,7 @@ typedef struct xfs_efi_log_format {
uint16_t efi_size; /* size of this item */
uint32_t efi_nextents; /* # extents to free */
uint64_t efi_id; /* efi identifier */
- xfs_extent_t efi_extents[1]; /* array of extents to free */
+ xfs_extent_t efi_extents[]; /* array of extents to free */
} xfs_efi_log_format_t;
typedef struct xfs_efi_log_format_32 {
@@ -582,7 +582,7 @@ typedef struct xfs_efi_log_format_32 {
uint16_t efi_size; /* size of this item */
uint32_t efi_nextents; /* # extents to free */
uint64_t efi_id; /* efi identifier */
- xfs_extent_32_t efi_extents[1]; /* array of extents to free */
+ xfs_extent_32_t efi_extents[]; /* array of extents to free */
} __attribute__((packed)) xfs_efi_log_format_32_t;
typedef struct xfs_efi_log_format_64 {
@@ -590,7 +590,7 @@ typedef struct xfs_efi_log_format_64 {
uint16_t efi_size; /* size of this item */
uint32_t efi_nextents; /* # extents to free */
uint64_t efi_id; /* efi identifier */
- xfs_extent_64_t efi_extents[1]; /* array of extents to free */
+ xfs_extent_64_t efi_extents[]; /* array of extents to free */
} xfs_efi_log_format_64_t;
/*
@@ -603,7 +603,7 @@ typedef struct xfs_efd_log_format {
uint16_t efd_size; /* size of this item */
uint32_t efd_nextents; /* # of extents freed */
uint64_t efd_efi_id; /* id of corresponding efi */
- xfs_extent_t efd_extents[1]; /* array of extents freed */
+ xfs_extent_t efd_extents[]; /* array of extents freed */
} xfs_efd_log_format_t;
typedef struct xfs_efd_log_format_32 {
@@ -611,7 +611,7 @@ typedef struct xfs_efd_log_format_32 {
uint16_t efd_size; /* size of this item */
uint32_t efd_nextents; /* # of extents freed */
uint64_t efd_efi_id; /* id of corresponding efi */
- xfs_extent_32_t efd_extents[1]; /* array of extents freed */
+ xfs_extent_32_t efd_extents[]; /* array of extents freed */
} __attribute__((packed)) xfs_efd_log_format_32_t;
typedef struct xfs_efd_log_format_64 {
@@ -619,7 +619,7 @@ typedef struct xfs_efd_log_format_64 {
uint16_t efd_size; /* size of this item */
uint32_t efd_nextents; /* # of extents freed */
uint64_t efd_efi_id; /* id of corresponding efi */
- xfs_extent_64_t efd_extents[1]; /* array of extents freed */
+ xfs_extent_64_t efd_extents[]; /* array of extents freed */
} xfs_efd_log_format_64_t;
/*
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c
index 93223ebb3372..17b3ff8ce05f 100644
--- a/fs/xfs/xfs_extfree_item.c
+++ b/fs/xfs/xfs_extfree_item.c
@@ -73,8 +73,8 @@ static inline int
xfs_efi_item_sizeof(
struct xfs_efi_log_item *efip)
{
- return sizeof(struct xfs_efi_log_format) +
- (efip->efi_format.efi_nextents - 1) * sizeof(xfs_extent_t);
+ return struct_size(&efip->efi_format, efi_extents,
+ efip->efi_format.efi_nextents);
}
STATIC void
@@ -153,17 +153,14 @@ xfs_efi_init(
{
struct xfs_efi_log_item *efip;
- uint size;
ASSERT(nextents > 0);
- if (nextents > XFS_EFI_MAX_FAST_EXTENTS) {
- size = (uint)(sizeof(struct xfs_efi_log_item) +
- ((nextents - 1) * sizeof(xfs_extent_t)));
- efip = kmem_zalloc(size, 0);
- } else {
+ if (nextents > XFS_EFI_MAX_FAST_EXTENTS)
+ efip = kmem_zalloc(struct_size(efip, efi_format.efi_extents,
+ nextents), 0);
+ else
efip = kmem_cache_zalloc(xfs_efi_zone,
GFP_KERNEL | __GFP_NOFAIL);
- }
xfs_log_item_init(mp, &efip->efi_item, XFS_LI_EFI, &xfs_efi_item_ops);
efip->efi_format.efi_nextents = nextents;
@@ -174,6 +171,36 @@ xfs_efi_init(
return efip;
}
+/*
+ * Calculates the size of structure xfs_efi_log_format followed by an
+ * array of n number of efi_extents elements.
+ */
+static inline size_t
+sizeof_efi_log_format(size_t n)
+{
+ return struct_size((struct xfs_efi_log_format *)0, efi_extents, n);
+}
+
+/*
+ * Calculates the size of structure xfs_efi_log_format_32 followed by an
+ * array of n number of efi_extents elements.
+ */
+static inline size_t
+sizeof_efi_log_format_32(size_t n)
+{
+ return struct_size((struct xfs_efi_log_format_32 *)0, efi_extents, n);
+}
+
+/*
+ * Calculates the size of structure xfs_efi_log_format_64 followed by an
+ * array of n number of efi_extents elements.
+ */
+static inline size_t
+sizeof_efi_log_format_64(size_t n)
+{
+ return struct_size((struct xfs_efi_log_format_64 *)0, efi_extents, n);
+}
+
/*
* Copy an EFI format buffer from the given buf, and into the destination
* EFI format structure.
@@ -186,12 +213,9 @@ xfs_efi_copy_format(xfs_log_iovec_t *buf, xfs_efi_log_format_t *dst_efi_fmt)
{
xfs_efi_log_format_t *src_efi_fmt = buf->i_addr;
uint i;
- uint len = sizeof(xfs_efi_log_format_t) +
- (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_t);
- uint len32 = sizeof(xfs_efi_log_format_32_t) +
- (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_32_t);
- uint len64 = sizeof(xfs_efi_log_format_64_t) +
- (src_efi_fmt->efi_nextents - 1) * sizeof(xfs_extent_64_t);
+ size_t len = sizeof_efi_log_format(src_efi_fmt->efi_nextents);
+ size_t len32 = sizeof_efi_log_format_32(src_efi_fmt->efi_nextents);
+ size_t len64 = sizeof_efi_log_format_64(src_efi_fmt->efi_nextents);
if (buf->i_len == len) {
memcpy((char *)dst_efi_fmt, (char*)src_efi_fmt, len);
@@ -253,8 +277,8 @@ static inline int
xfs_efd_item_sizeof(
struct xfs_efd_log_item *efdp)
{
- return sizeof(xfs_efd_log_format_t) +
- (efdp->efd_format.efd_nextents - 1) * sizeof(xfs_extent_t);
+ return struct_size(&efdp->efd_format, efd_extents,
+ efdp->efd_format.efd_nextents);
}
STATIC void
@@ -328,14 +352,12 @@ xfs_trans_get_efd(
ASSERT(nextents > 0);
- if (nextents > XFS_EFD_MAX_FAST_EXTENTS) {
- efdp = kmem_zalloc(sizeof(struct xfs_efd_log_item) +
- (nextents - 1) * sizeof(struct xfs_extent),
- 0);
- } else {
+ if (nextents > XFS_EFD_MAX_FAST_EXTENTS)
+ efdp = kmem_zalloc(struct_size(efdp, efd_format.efd_extents,
+ nextents), 0);
+ else
efdp = kmem_cache_zalloc(xfs_efd_zone,
GFP_KERNEL | __GFP_NOFAIL);
- }
xfs_log_item_init(tp->t_mountp, &efdp->efd_item, XFS_LI_EFD,
&xfs_efd_item_ops);
@@ -666,11 +688,13 @@ xfs_efi_item_relog(
tp->t_flags |= XFS_TRANS_DIRTY;
efdp = xfs_trans_get_efd(tp, EFI_ITEM(intent), count);
efdp->efd_next_extent = count;
- memcpy(efdp->efd_format.efd_extents, extp, count * sizeof(*extp));
+ memcpy(efdp->efd_format.efd_extents, extp,
+ flex_array_size(&efdp->efd_format, efd_extents, count));
set_bit(XFS_LI_DIRTY, &efdp->efd_item.li_flags);
efip = xfs_efi_init(tp->t_mountp, count);
- memcpy(efip->efi_format.efi_extents, extp, count * sizeof(*extp));
+ memcpy(efip->efi_format.efi_extents, extp,
+ flex_array_size(&efip->efi_format, efi_extents, count));
atomic_set(&efip->efi_next_extent, count);
xfs_trans_add_item(tp, &efip->efi_item);
set_bit(XFS_LI_DIRTY, &efip->efi_item.li_flags);
@@ -729,6 +753,26 @@ const struct xlog_recover_item_ops xlog_efi_item_ops = {
.commit_pass2 = xlog_recover_efi_commit_pass2,
};
+/*
+ * Calculates the size of structure xfs_efd_log_format_32 followed by an
+ * array of n number of efd_extents elements.
+ */
+static inline size_t
+sizeof_efd_log_format_32(size_t n)
+{
+ return struct_size((struct xfs_efd_log_format_32 *)0, efd_extents, n);
+}
+
+/*
+ * Calculates the size of structure xfs_efd_log_format_64 followed by an
+ * array of n number of efd_extents elements.
+ */
+static inline size_t
+sizeof_efd_log_format_64(size_t n)
+{
+ return struct_size((struct xfs_efd_log_format_64 *)0, efd_extents, n);
+}
+
/*
* This routine is called when an EFD format structure is found in a committed
* transaction in the log. Its purpose is to cancel the corresponding EFI if it
@@ -746,10 +790,10 @@ xlog_recover_efd_commit_pass2(
struct xfs_efd_log_format *efd_formatp;
efd_formatp = item->ri_buf[0].i_addr;
- ASSERT((item->ri_buf[0].i_len == (sizeof(xfs_efd_log_format_32_t) +
- ((efd_formatp->efd_nextents - 1) * sizeof(xfs_extent_32_t)))) ||
- (item->ri_buf[0].i_len == (sizeof(xfs_efd_log_format_64_t) +
- ((efd_formatp->efd_nextents - 1) * sizeof(xfs_extent_64_t)))));
+ ASSERT(item->ri_buf[0].i_len ==
+ sizeof_efd_log_format_32(efd_formatp->efd_nextents) ||
+ item->ri_buf[0].i_len ==
+ sizeof_efd_log_format_64(efd_formatp->efd_nextents));
xlog_recover_release_intent(log, XFS_LI_EFI, efd_formatp->efd_efi_id);
return 0;
diff --git a/fs/xfs/xfs_ondisk.h b/fs/xfs/xfs_ondisk.h
index 0aa87c210104..f58e0510385a 100644
--- a/fs/xfs/xfs_ondisk.h
+++ b/fs/xfs/xfs_ondisk.h
@@ -118,10 +118,10 @@ xfs_check_ondisk_structs(void)
/* log structures */
XFS_CHECK_STRUCT_SIZE(struct xfs_buf_log_format, 88);
XFS_CHECK_STRUCT_SIZE(struct xfs_dq_logformat, 24);
- XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_32, 28);
- XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_64, 32);
- XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_32, 28);
- XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_64, 32);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_32, 16);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_64, 16);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_32, 16);
+ XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_64, 16);
XFS_CHECK_STRUCT_SIZE(struct xfs_extent_32, 12);
XFS_CHECK_STRUCT_SIZE(struct xfs_extent_64, 16);
XFS_CHECK_STRUCT_SIZE(struct xfs_log_dinode, 176);
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index e5e0713bebcd..923145737110 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1937,17 +1937,17 @@ xfs_init_zones(void)
goto out_destroy_trans_zone;
xfs_efd_zone = kmem_cache_create("xfs_efd_item",
- (sizeof(struct xfs_efd_log_item) +
- (XFS_EFD_MAX_FAST_EXTENTS - 1) *
- sizeof(struct xfs_extent)),
- 0, 0, NULL);
+ struct_size((struct xfs_efd_log_item *)0,
+ efd_format.efd_extents,
+ XFS_EFD_MAX_FAST_EXTENTS),
+ 0, 0, NULL);
if (!xfs_efd_zone)
goto out_destroy_buf_item_zone;
xfs_efi_zone = kmem_cache_create("xfs_efi_item",
- (sizeof(struct xfs_efi_log_item) +
- (XFS_EFI_MAX_FAST_EXTENTS - 1) *
- sizeof(struct xfs_extent)),
+ struct_size((struct xfs_efi_log_item *)0,
+ efi_format.efi_extents,
+ XFS_EFI_MAX_FAST_EXTENTS),
0, 0, NULL);
if (!xfs_efi_zone)
goto out_destroy_efd_zone;
--
2.27.0
next reply other threads:[~2021-04-12 13:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-12 13:56 Gustavo A. R. Silva [this message]
2021-04-12 15:29 ` [PATCH v4][next] xfs: Replace one-element arrays with flexible-array members Christoph Hellwig
2021-04-12 15:36 ` Gustavo A. R. Silva
2021-04-12 15:48 ` Darrick J. Wong
2021-04-12 15:57 ` Gustavo A. R. Silva
2021-04-13 16:53 ` Christoph Hellwig
2021-07-14 9:27 ` Chen, Rong A
2021-07-15 5:33 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210412135611.GA183224@embeddedor \
--to=gustavoars@kernel.org \
--cc=djwong@kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.