From ee6e6f79c49e845b787f4be6a1967c45e6297cd6 Mon Sep 17 00:00:00 2001 From: Roland Dreier Date: Tue, 22 Nov 2011 13:51:32 -0800 Subject: [PATCH] --- yaml --- r: 276474 b: refs/heads/master c: 410f670202f0f13cdac8459b9c3effeeead135d1 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/target/target_core_transport.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 8f3e3d59c7f1..aa2c55fda020 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1c3d5794fc4a2afd2258b3aa6406377934a36663 +refs/heads/master: 410f670202f0f13cdac8459b9c3effeeead135d1 diff --git a/trunk/drivers/target/target_core_transport.c b/trunk/drivers/target/target_core_transport.c index 0bdb6badbf99..1b760a0b1109 100644 --- a/trunk/drivers/target/target_core_transport.c +++ b/trunk/drivers/target/target_core_transport.c @@ -3770,8 +3770,15 @@ int transport_generic_new_cmd(struct se_cmd *cmd) task_cdbs = transport_allocate_control_task(cmd); } - if (task_cdbs <= 0) + if (task_cdbs < 0) goto out_fail; + else if (!task_cdbs && (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB)) { + cmd->t_state = TRANSPORT_COMPLETE; + atomic_set(&cmd->t_transport_active, 1); + INIT_WORK(&cmd->work, target_complete_ok_work); + queue_work(target_completion_wq, &cmd->work); + return 0; + } if (set_counts) { atomic_inc(&cmd->t_fe_count);