summaryrefslogtreecommitdiff
path: root/drivers/target
diff options
context:
space:
mode:
authorJohn Garry <john.g.garry@oracle.com>2023-03-13 12:31:13 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2023-03-17 06:25:37 +0300
commitf037b5cb07138cd519f35fd08ebef2faf075959f (patch)
treee8cae0b12d430cae573d0bdb5e6ae946b448f7e5 /drivers/target
parent151f0ec9ddb539c403a17c86da092e751736c121 (diff)
downloadlinux-f037b5cb07138cd519f35fd08ebef2faf075959f.tar.xz
scsi: scsi_debug: Get command abort feature working again
The command abort feature allows us to test aborting a command which has timed-out. The idea is that for specific commands we just don't call scsi_done() and allow the request to timeout, which ensures SCSI EH kicks-in we try to abort the command. Since commit 4a0c6f432d15 ("scsi: scsi_debug: Add new defer type for mq_poll") this does not seem to work. The issue is that we clear the sd_dp->aborted flag in schedule_resp() before the completion callback has run. When the completion callback actually runs, it calls scsi_done() as normal as sd_dp->aborted unset. This is all very racy. Fix by not clearing sd_dp->aborted in schedule_resp(). Also move the call to blk_abort_request() from schedule_resp() to sdebug_q_cmd_complete(), which makes the code have a more logical sequence. I also note that this feature only works for commands which are classed as "SDEG_RES_IMMED_MASK", but only practically triggered with prior RW commands. So for my experiment I need to run fio to trigger the error on the "nth" command (see inject_on_this_cmd()), and then run something like sg_sync to queue a command to actually trigger the abort. Signed-off-by: John Garry <john.g.garry@oracle.com> Acked-by: Douglas Gilbert <dgilbert@interlog.com> Link: https://lore.kernel.org/r/20230313093114.1498305-11-john.g.garry@oracle.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/target')
0 files changed, 0 insertions, 0 deletions