target: add back error handling in transport_complete_task
authorChristoph Hellwig <hch@lst.de>
Wed, 2 Nov 2011 12:06:35 +0000 (05:06 -0700)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 2 Nov 2011 16:21:10 +0000 (16:21 +0000)
The commit

    target: use a workqueue for I/O completions

accidentally removed setting t_tasks_failed in transport_complete_task.
Add it back in a slightly cleaner way; now it is set for every failed task
instead of special casing the last one completing by using the success
argument directly for it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_transport.c

index 64ee334..81bc355 100644 (file)
@@ -733,6 +733,10 @@ void transport_complete_task(struct se_task *task, int success)
                complete(&task->task_stop_comp);
                return;
        }
+
+       if (!success)
+               cmd->t_tasks_failed = 1;
+
        /*
         * Decrement the outstanding t_task_cdbs_left count.  The last
         * struct se_task from struct se_cmd will complete itself into the
@@ -743,7 +747,7 @@ void transport_complete_task(struct se_task *task, int success)
                return;
        }
 
-       if (!success || cmd->t_tasks_failed) {
+       if (cmd->t_tasks_failed) {
                if (!task->task_error_status) {
                        task->task_error_status =
                                PYX_TRANSPORT_UNKNOWN_SAM_OPCODE;