Move the task cleanup from the task fail callback to taskq_cleanup.
authorclaudio <claudio@openbsd.org>
Sat, 10 May 2014 11:28:02 +0000 (11:28 +0000)
committerclaudio <claudio@openbsd.org>
Sat, 10 May 2014 11:28:02 +0000 (11:28 +0000)
This makes the one failure callback a lot simpler.

usr.sbin/iscsid/task.c
usr.sbin/iscsid/vscsi.c

index 221cabd..4c12e21 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: task.c,v 1.9 2011/04/28 18:32:01 claudio Exp $ */
+/*     $OpenBSD: task.c,v 1.10 2014/05/10 11:28:02 claudio Exp $ */
 
 /*
  * Copyright (c) 2009 Claudio Jeker <claudio@openbsd.org>
@@ -65,10 +65,8 @@ taskq_cleanup(struct taskq *tq)
                TAILQ_REMOVE(tq, t, entry);
                if (t->failback)
                        t->failback(t->callarg);
-               else {
-                       conn_task_cleanup(NULL, t);
-                       free(t);
-               }
+               conn_task_cleanup(NULL, t);
+               free(t);
        }
 }
 
index 7878aa8..f429858 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vscsi.c,v 1.13 2014/04/21 18:59:05 claudio Exp $ */
+/*     $OpenBSD: vscsi.c,v 1.14 2014/05/10 11:28:02 claudio Exp $ */
 
 /*
  * Copyright (c) 2009 Claudio Jeker <claudio@openbsd.org>
@@ -288,12 +288,9 @@ void
 vscsi_fail(void *arg)
 {
        struct scsi_task *t = arg;
-       int tag;
 
-       conn_task_cleanup(NULL, &t->task);
-       tag = t->tag;
-       free(t);
-       vscsi_status(tag, VSCSI_STAT_RESET, NULL, 0);
+       log_debug("vscsi_fail: task failed, reseting it");
+       vscsi_status(t->tag, VSCSI_STAT_RESET, NULL, 0);
 }
 
 void