[BUG] LIO iSCSI target deadlock on PR PREEMPT AND ABORT with concurrent I/O
David Teigland <[email protected]> Tue, 23 Jun 2026 13:14:42 -0500
| Newsgroups | org.kernel.vger.target-devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, I've been hitting the deadlocked threads copied below while running some new lvm tests that are doing preempt-abort between VMs sharing an iscsi target exported by a third VM. The problem occurs when sg_persist register triggers udev probing/reads, followed quickly by sg_persist preempt-abort (preempt without abort doesn't deadlock.) The combination of probing reads, and preempt-abort often hits the deadlock. (I'm leaving out the more extensive AI analysis and patch which I can't personally vouch for, but can provide if it's useful.) An effective work-around for now is calling udevadm settle after register. Seen on Fedora kernel 6.19.10-300.fc44.x86_64 and a recent 7.1.0-rc. Thanks, Dave task:iscsi_trx state:D stack:0 pid:1899 tgid:1899 ppid:2 task_flags:0x208140 flags:0x00080006 Call Trace: <TASK> __schedule+0x2b2/0x5d0 schedule+0x27/0x80 schedule_timeout+0xdc/0x120 wait_for_completion+0x9e/0x170 target_put_cmd_and_wait+0x6e/0xc0 [target_core_mod] core_tmr_drain_state_list+0x2eb/0x3f0 [target_core_mod] core_tmr_lun_reset+0xa0/0x280 [target_core_mod] core_scsi3_pro_preempt+0x7a8/0x8e0 [target_core_mod] target_scsi3_emulate_pr_out+0x298/0x3c0 [target_core_mod] __target_execute_cmd+0x36/0xd0 [target_core_mod] iscsit_execute_cmd+0x279/0x2b0 [iscsi_target_mod] iscsit_sequence_cmd+0xf3/0x170 [iscsi_target_mod] iscsit_get_immediate_data+0x71/0x190 [iscsi_target_mod] iscsit_get_rx_pdu+0xe1/0x300 [iscsi_target_mod] iscsi_target_rx_thread+0x8e/0x120 [iscsi_target_mod] kthread+0xfa/0x240 ret_from_fork+0x130/0x1a0 ret_from_fork_asm+0x1a/0x30 </TASK> task:iscsi_ttx state:D stack:0 pid:1898 tgid:1898 ppid:2 task_flags:0x208040 flags:0x00080002 Call Trace: <TASK> __schedule+0x2b2/0x5d0 schedule+0x27/0x80 schedule_timeout+0xdc/0x120 wait_for_completion+0x9e/0x170 kthread_stop+0x6e/0x190 iscsit_close_connection+0x49c/0x7a0 [iscsi_target_mod] iscsit_take_action_for_connection_exit+0x80/0x140 [iscsi_target_mod] iscsi_target_tx_thread+0x162/0x240 [iscsi_target_mod] kthread+0xfa/0x240 ret_from_fork+0x130/0x1a0 ret_from_fork_asm+0x1a/0x30 </TASK> task:iscsi_np state:D stack:0 pid:1885 tgid:1885 ppid:2 task_flags:0x208040 flags:0x00080002 Call Trace: <TASK> __schedule+0x2b2/0x5d0 schedule+0x27/0x80 schedule_timeout+0xdc/0x120 wait_for_completion+0x9e/0x170 iscsi_check_for_session_reinstatement+0x1f5/0x2d0 [iscsi_target_mod] iscsi_target_handle_csg_one+0x114/0x130 [iscsi_target_mod] iscsi_target_do_login+0x2d/0xd0 [iscsi_target_mod] iscsi_target_start_negotiation+0x67/0x170 [iscsi_target_mod] __iscsi_target_login_thread+0x37f/0x7d0 [iscsi_target_mod] iscsi_target_login_thread+0x24/0x60 [iscsi_target_mod] kthread+0xfa/0x240 ret_from_fork+0x130/0x1a0 ret_from_fork_asm+0x1a/0x30 </TASK>