dm-integrity: BUG_ON(journal_entry_get_sector(je) != logical_sector);
Hello,
While making some tests with dm-integrity target, e.g. like this:
$ fallocate /root/i1 -l 10000000000
$ fallocate /root/i2 -l 10000000000
$ losetup /dev/loop1 /root/i1
$ losetup /dev/loop2 /root/i2
$ integritysetup format /dev/loop1 --no-wipe --sector-size=4096 --data-device /dev/loop2
$ integritysetup dump /dev/loop1
Info for integrity device /dev/loop1.
superblock_version 2
log2_interleave_sectors 0
integrity_tag_size 4
journal_sections 334
provided_data_sectors 19531248
sector_size 4096
log2_blocks_per_bitmap 0
flags
$ integritysetup --integrity-recalculate --data-device=/dev/loop2 open /dev/loop1 myi1
$ fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --blocksize_range=4k-256k --iodepth=64 --size=100M --readwrite=randrw --rwmixread=75 --numjobs=40 --filename=/dev/mapper/myi1 --name=test
Soon gave this:
Jul 25 20:11:45 kernel: ---[ end trace 7ad4e0d3c1a20375 ]---
Jul 25 20:11:45 kernel: Modules linked in: xfs dm_integrity async_xor async_tx xor iptable_mangle xt_CHECKSUM ipt_MASQUERADE ipt_REJECT nf_reject_ipv4 tun bridge stp llc ebtable_filter ebtables iptable_f>
Jul 25 20:11:45 kernel: ret_from_fork+0x35/0x40
Jul 25 20:11:45 kernel: ? kthread_create_on_node+0x60/0x60
Jul 25 20:11:45 kernel: kthread+0x112/0x130
Jul 25 20:11:45 kernel: ? process_one_work+0x3a0/0x3a0
Jul 25 20:11:45 kernel: worker_thread+0x30/0x380
Jul 25 20:11:45 kernel: process_one_work+0x1a1/0x3a0
Jul 25 20:11:45 kernel: dm_integrity_map_continue+0x251/0x800 [dm_integrity]
Jul 25 20:11:45 kernel: ? io_schedule+0x12/0x40
Jul 25 20:11:45 kernel: ? schedule+0x28/0x70
Jul 25 20:11:45 kernel: ? __schedule+0x25b/0x840
Jul 25 20:11:45 kernel: Call Trace:
Jul 25 20:11:45 kernel: CR2: 00007ffc119493e2 CR3: 0000000205c9a000 CR4: 00000000000406e0
Jul 25 20:11:45 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Jul 25 20:11:45 kernel: FS: 0000000000000000(0000) GS:ffff8ea9f7d00000(0000) knlGS:0000000000000000
Jul 25 20:11:45 kernel: R13: 0000000000000000 R14: 000000000001d978 R15: ffff8ea831728400
Jul 25 20:11:45 kernel: R10: ffff8ea9c8397b20 R11: 0000000000001000 R12: 000000000000000e
Jul 25 20:11:45 kernel: RBP: 000000000001d978 R08: ffffffffc0c2cb40 R09: 0000000000000188
Jul 25 20:11:45 kernel: RDX: 0000000000000050 RSI: ffff8ea81c443000 RDI: ffff8ea831728400
Jul 25 20:11:45 kernel: RAX: 0000000000000000 RBX: ffff8ea81c443c50 RCX: 0000000000000000
Jul 25 20:11:45 kernel: RSP: 0018:ffffac3a83797d18 EFLAGS: 00010286
Jul 25 20:11:45 kernel: Code: ba 02 00 00 00 48 8d 74 24 50 48 89 ef e8 82 10 50 d9 83 7b 04 fe 74 e3 48 8d 74 24 50 48 89 ef e8 9f 0f 50 d9 e9 03 fa ff ff <0f> 0b 49 8b 00 48 8d 7e 08 48 83 e7 f8 48 89 >
Jul 25 20:11:45 kernel: RIP: 0010:__journal_read_write+0x726/0x8e0 [dm_integrity]
Jul 25 20:11:45 kernel: Workqueue: dm-integrity-metadata integrity_bio_wait [dm_integrity]
Jul 25 20:11:45 kernel: Hardware name: Apple Inc. Macmini3,1/Mac-F22C86C8, BIOS MM31.88Z.00AD.B00.0907171535 07/17/09
Jul 25 20:11:45 kernel: CPU: 1 PID: 15402 Comm: kworker/1:18 Not tainted 5.1.18-200.fc29.x86_64 #1
Jul 25 20:11:45 kernel: invalid opcode: 0000 [#1] SMP PTI
Jul 25 20:11:45 kernel: kernel BUG at drivers/md/dm-integrity.c:1546!
Jul 25 20:11:45 kernel: ------------[ cut here ]------------
this was with 5.1.18-200.fc29.x86_64 (fedora 29 distribution); the image files (/root/i1, /root/i2) were on an SSD. The cryptsetup package was built from recent master (4a243111).
I think this is reproducible.