diff options
-rw-r--r-- | share/examples/scsi_target/scsi_cmds.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/share/examples/scsi_target/scsi_cmds.c b/share/examples/scsi_target/scsi_cmds.c index 33d1cec..dd0b069 100644 --- a/share/examples/scsi_target/scsi_cmds.c +++ b/share/examples/scsi_target/scsi_cmds.c @@ -155,6 +155,16 @@ tcmd_handle(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio, io_ops event) } last_cmd = h; } + + /* call completion and exit */ + if (event != ATIO_WORK) { + if (last_cmd->done != NULL) + last_cmd->done(atio, ctio, event); + else + free_ccb((union ccb *)ctio); + return (1); + } + if (last_cmd->cmd == ILLEGAL_CDB) { if (event != ATIO_WORK) { warnx("no done func for %#x???", a_descr->cdb[0]); @@ -167,15 +177,6 @@ tcmd_handle(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio, io_ops event) return (0); } - /* call completion and exit */ - if (event != ATIO_WORK) { - if (last_cmd->done != NULL) - last_cmd->done(atio, ctio, event); - else - free_ccb((union ccb *)ctio); - return (1); - } - istate = tcmd_get_istate(ctio->init_id); if (istate == NULL) { tcmd_illegal_req(atio, ctio); |