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>
NEX-3746 Panic seen if iSCSI Initiator sends a SCSI Response packet to target
NEX-3777 COMSTAR iscsi/io test can panic the target running 5.0
NEX-3785 This is on 5.0 release and iSCSI target can panic while running iSCSI mpxio disable test
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
NEX-3287 functional/cli_root/zfs_set/readonly_001_pos fails
Reviewed by: Steve Peng <steve.peng@nexenta.com>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
NEX-3313 Extraneous ASSERT in idm code needs to be removed.
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Steve Peng <steve.peng@nexenta.com>
SUP-930 Freed and reused idm_conn_t buffer leads to system panic.
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Steve Ping <steve.ping@nexenta.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/idm/idm_conn_sm.c
          +++ new/usr/src/uts/common/io/idm/idm_conn_sm.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  24   24   * Copyright (c) 2013 by Delphix. All rights reserved.
  25      - * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
       25 + * Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
  26   26   */
  27   27  
  28   28  #include <sys/cpuvar.h>
  29   29  #include <sys/ddi.h>
  30   30  #include <sys/sunddi.h>
  31   31  #include <sys/modctl.h>
  32   32  #include <sys/socket.h>
  33   33  #include <sys/strsubr.h>
  34   34  #include <sys/note.h>
  35   35  #include <sys/sdt.h>
↓ open down ↓ 1200 lines elided ↑ open up ↑
1236 1236                  break;
1237 1237          case CS_S8_CLEANUP:
1238 1238                  /* Close connection (if it's not already closed) */
1239 1239                  if (IDM_CONN_ISTGT(ic)) {
1240 1240                          ic->ic_transport_ops->it_tgt_conn_disconnect(ic);
1241 1241                  } else {
1242 1242                          ic->ic_transport_ops->it_ini_conn_disconnect(ic);
1243 1243                  }
1244 1244  
1245 1245                  /* Stop executing active tasks */
1246      -                idm_task_abort(ic, NULL, AT_INTERNAL_SUSPEND);
     1246 +                (void) idm_task_abort(ic, NULL, AT_INTERNAL_SUSPEND);
1247 1247  
1248 1248                  /* Start logout timer */
1249 1249                  IDM_SM_TIMER_CHECK(ic);
1250 1250                  ic->ic_state_timeout = timeout(idm_cleanup_timeout, ic,
1251 1251                      drv_usectohz(IDM_CLEANUP_SECONDS*1000000));
1252 1252                  break;
1253 1253          case CS_S10_IN_CLEANUP:
1254 1254                  break;
1255 1255          case CS_S9A_REJECTED:
1256 1256                  /*
↓ open down ↓ 35 lines elided ↑ open up ↑
1292 1292                   * data field.
1293 1293                   */
1294 1294                  if (IDM_CONN_ISTGT(ic) ||
1295 1295                      ((ic->ic_last_state != CS_S1_FREE) &&
1296 1296                      (ic->ic_last_state != CS_S2_XPT_WAIT))) {
1297 1297                          (void) idm_notify_client(ic, CN_CONNECT_LOST,
1298 1298                              (uintptr_t)(ic->ic_last_state == CS_S4_IN_LOGIN));
1299 1299                  }
1300 1300  
1301 1301                  /* Abort all tasks */
1302      -                idm_task_abort(ic, NULL, AT_INTERNAL_ABORT);
     1302 +                (void) idm_task_abort(ic, NULL, AT_INTERNAL_ABORT);
1303 1303  
1304 1304                  /*
1305 1305                   * Handle terminal state actions on the global taskq so
1306 1306                   * we can clean up all the connection resources from
1307 1307                   * a separate thread context.
1308 1308                   */
1309 1309                  idm_refcnt_async_wait_ref(&ic->ic_refcnt, &idm_conn_unref);
1310 1310                  break;
1311 1311          case CS_S12_ENABLE_DM:
1312 1312  
↓ open down ↓ 354 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX