Print this page
NEX-9981 Deadman timer panic from idm_refcnt_wait_ref thread while offlining iSCSI targets
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>

@@ -20,10 +20,11 @@
  */
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  *
+ * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
  * iSCSI command interfaces
  */
 
 #include "iscsi.h"
 

@@ -794,12 +795,12 @@
                                  * calls us back.  Set the status to use
                                  * when we complete the command.
                                  */
                                 ISCSI_CMD_SET_REASON_STAT(
                                     t_icmdp, CMD_TIMEOUT, STAT_ABORTED);
-                                idm_task_abort(icp->conn_ic, t_icmdp->cmd_itp,
-                                    AT_TASK_MGMT_ABORT);
+                                (void) idm_task_abort(icp->conn_ic,
+                                    t_icmdp->cmd_itp, AT_TASK_MGMT_ABORT);
                         } else {
                                 cv_broadcast(&t_icmdp->cmd_completion);
                         }
                         mutex_exit(&t_icmdp->cmd_mutex);
                         icmdp->cmd_un.abort.icmdp = NULL;

@@ -940,11 +941,11 @@
                                          * calls us back.  Set the status to use
                                          * when we complete the command.
                                          */
                                         ISCSI_CMD_SET_REASON_STAT(t_icmdp,
                                             CMD_TIMEOUT, STAT_TIMEOUT);
-                                        idm_task_abort(icp->conn_ic,
+                                        (void) idm_task_abort(icp->conn_ic,
                                             t_icmdp->cmd_itp,
                                             AT_TASK_MGMT_ABORT);
                                 } else {
                                         cv_broadcast(&t_icmdp->cmd_completion);
                                 }

@@ -1025,11 +1026,11 @@
                         mutex_enter(&icp->conn_queue_idm_aborting.mutex);
                         iscsi_enqueue_idm_aborting_cmd(icmdp->cmd_conn, icmdp);
                         mutex_exit(&icp->conn_queue_idm_aborting.mutex);
                         ISCSI_CMD_SET_REASON_STAT(icmdp,
                             CMD_TRAN_ERR, icmdp->cmd_un.scsi.pkt_stat);
-                        idm_task_abort(icp->conn_ic, icmdp->cmd_itp,
+                        (void) idm_task_abort(icp->conn_ic, icmdp->cmd_itp,
                             AT_TASK_MGMT_ABORT);
                         break;
 
                 case ISCSI_CMD_TYPE_NOP:
                         icmdp->cmd_state = ISCSI_CMD_STATE_FREE;

@@ -1206,11 +1207,11 @@
                 }
 
                 ISCSI_CMD_SET_REASON_STAT(icmdp,
                     CMD_TRAN_ERR, icmdp->cmd_un.scsi.pkt_stat);
 
-                idm_task_abort(icmdp->cmd_conn->conn_ic, icmdp->cmd_itp,
+                (void) idm_task_abort(icmdp->cmd_conn->conn_ic, icmdp->cmd_itp,
                     AT_TASK_MGMT_ABORT);
                 break;
 
         /* -E9: IDM is no longer processing this command */
         case ISCSI_CMD_EVENT_E9: