zfs: assertion failed in arc_cksum_is_equal()
While running 'zfstest -T compression', the kernel got panic:
> ::status debugging crash dump vmcore.0 (64-bit) from test operating system: 5.11 master-0-g4634152cb6c (i86pc) build version: heads/master-0-g4634152cb6c image uuid: d1a5adc5-3dc9-42b0-9f49-cd814352cda3 panic message: assertion failed: ((enum zio_compress)((((hdr)->b_flags) >> ((highbit64(ARC_FLAG_COMPRESS_0) - 1))) & ((1U << (7)) - 1))) == ZIO_COMPRESS_OFF (0xf == 0x2), file: ../../common/fs/zfs/arc.c, line: 1354 dump content: kernel pages only > ::stack vpanic() 0xfffffffffbdcca91() arc_cksum_is_equal+0x200(fffffe09040f08e0, fffffe06567ae9c0) l2arc_read_done+0x296(fffffe06567ae9c0) zio_done+0x53c(fffffe06567ae9c0) zio_execute+0x105(fffffe06567ae9c0) taskq_thread+0x2ee(fffffe0698916c50) thread_start+0xb()
It appears, the related code was removed in OpenZFS by 'Native Encryption for ZFS on Linux' update, however, for some reason, it is still there in our tree. But of course, this is just question resulting from quick code compare and more investigation is needed.
With arc_cksum_is_equal() changed to match OpenZFS, the compression tests do not end up with panic:
tsoome@test:~$ /opt/zfs-tests/bin/zfstest -T compression Test: /opt/zfs-tests/tests/functional/compression/setup (run as root) [08:18] [PASS] Test: /opt/zfs-tests/tests/functional/compression/compress_001_pos (run as root) [01:05] [PASS] Test: /opt/zfs-tests/tests/functional/compression/compress_002_pos (run as root) [01:05] [PASS] Test: /opt/zfs-tests/tests/functional/compression/compress_003_pos (run as root) [00:13] [PASS] Test: /opt/zfs-tests/tests/functional/compression/compress_004_pos (run as root) [01:01] [PASS] Test: /opt/zfs-tests/tests/functional/compression/l2arc_compressed_arc (run as root) [10:40] [PASS] Test: /opt/zfs-tests/tests/functional/compression/l2arc_compressed_arc_disabled (run as root) [00:38] [PASS] Test: /opt/zfs-tests/tests/functional/compression/cleanup (run as root) [00:00] [PASS] Results Summary PASS 8 Running Time: 00:23:05 Percent passed: 100.0% Log directory: /var/tmp/test_results/20231118T205952 tsoome@test:~$ /opt/zfs-tests/bin/zfstest
The OpenZFS issue is https://github.com/openzfs/zfs/commit/b52563034230b35f0562b6f40ad1a00f02bd9a05 and arc_cksum_is_equal() is in arc.c