mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 10:41:26 +00:00
vdisk_fileio, async_mode: Fix scheduling while atomic
This patch should fix the following bug: BUG: scheduling while atomic: ... ... Call Trace: <IRQ> dump_stack+0x6d/0x8b __schedule_bug.cold.94+0x4c/0x5a __schedule+0x51d/0x606 schedule+0x33/0x9a __lock_sock+0x7d/0xbc ? finish_wait+0x80/0x78 lock_sock_nested+0x64/0x66 do_tcp_setsockopt.isra.47+0x7d/0xbc4 ? scst_free_cmd+0x171/0x220 [scst] tcp_setsockopt+0x34/0x36 sock_common_setsockopt+0x1a/0x1c cmnd_tx_start+0x94/0x210 [iscsi_scst] iscsi_send+0x2cd/0x800 [iscsi_scst] iscsi_tcp_send_locally+0xe9/0x1f0 [iscsi_scst] ? iscsi_tcp_send_data_rsp+0x5a/0x90 [iscsi_scst] iscsi_xmit_response+0xfe/0x230 [iscsi_scst] scst_process_active_cmd+0x742/0x1740 [scst] ? try_to_wake_up+0x1dd/0x5ac scst_process_redirect_cmd+0x128/0x300 [scst] ? insert_work+0xa8/0xc2 scst_cmd_done_local+0x7f/0x100 [scst] ? rvmio_transfer_data+0xb0/0xb0 [scst_vdisk] fileio_async_complete+0x46/0x100 [scst_vdisk] iomap_dio_complete_work+0x29/0x2e iomap_dio_bio_end_io+0xed/0xff bio_endio+0xda/0x12e blk_update_request+0xea/0x3a1 scsi_end_request+0x30/0x111 scsi_io_completion+0x7c/0x4e1 ? virtscsi_remove+0xc0/0xc0 [virtio_scsi] scsi_finish_command+0xe7/0x11a scsi_softirq_done+0x75/0xde blk_done_softirq+0xa5/0xcd __do_softirq+0xe1/0x2e7 ? sched_clock+0x9/0xd irq_exit+0xf3/0xf8 do_IRQ+0x59/0xe0 common_interrupt+0xf/0x1d2 </IRQ> RIP: 0010:native_safe_halt+0x12/0x14 ...
This commit is contained in:
committed by
Gleb Chesnokov
parent
33b872d055
commit
414805bb4d
@@ -3224,7 +3224,7 @@ static void fileio_async_complete(struct kiocb *iocb, long ret
|
||||
}
|
||||
}
|
||||
cmd->completed = 1;
|
||||
cmd->scst_cmd_done(cmd, SCST_CMD_STATE_DEFAULT, SCST_CONTEXT_SAME);
|
||||
cmd->scst_cmd_done(cmd, SCST_CMD_STATE_DEFAULT, scst_estimate_context());
|
||||
}
|
||||
|
||||
static enum compl_status_e fileio_exec_async(struct vdisk_cmd_params *p)
|
||||
|
||||
Reference in New Issue
Block a user