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,29 **** --- 20,30 ---- */ /* * 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,805 **** * 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); } else { cv_broadcast(&t_icmdp->cmd_completion); } mutex_exit(&t_icmdp->cmd_mutex); icmdp->cmd_un.abort.icmdp = NULL; --- 795,806 ---- * calls us back. Set the status to use * when we complete the command. */ ISCSI_CMD_SET_REASON_STAT( t_icmdp, CMD_TIMEOUT, STAT_ABORTED); ! (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,950 **** * 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, t_icmdp->cmd_itp, AT_TASK_MGMT_ABORT); } else { cv_broadcast(&t_icmdp->cmd_completion); } --- 941,951 ---- * calls us back. Set the status to use * when we complete the command. */ ISCSI_CMD_SET_REASON_STAT(t_icmdp, CMD_TIMEOUT, STAT_TIMEOUT); ! (void) idm_task_abort(icp->conn_ic, t_icmdp->cmd_itp, AT_TASK_MGMT_ABORT); } else { cv_broadcast(&t_icmdp->cmd_completion); }
*** 1025,1035 **** 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, AT_TASK_MGMT_ABORT); break; case ISCSI_CMD_TYPE_NOP: icmdp->cmd_state = ISCSI_CMD_STATE_FREE; --- 1026,1036 ---- 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); ! (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,1216 **** } 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, AT_TASK_MGMT_ABORT); break; /* -E9: IDM is no longer processing this command */ case ISCSI_CMD_EVENT_E9: --- 1207,1217 ---- } ISCSI_CMD_SET_REASON_STAT(icmdp, CMD_TRAN_ERR, icmdp->cmd_un.scsi.pkt_stat); ! (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: