Print this page
3862 stmf + kstat = kernel panic
3863 stmf_itl_task_start() must check for ilu->ilu_kstat_io is non-null
3864 memory leak in the iSCSI code
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Jeremy Jones <jeremy@delphix.com>
Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed by: Dan McDonald <danmcd@nexenta.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Richard Elling <richard.elling@gmail.com>
Approved by: Gordon Ross <gwr@nexenta.com>
3621 ZFS LU stuck in the offlining state
Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
Reviewed by: Jeff Biseda <jeff.biseda@delphix.com>
Reviewed by: Dan McDonald <danmcd@nexenta.com>
Approved by: Christopher Siden <christopher.siden@delphix.com>

@@ -18,10 +18,11 @@
  *
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 #ifndef _STMF_IMPL_H
 #define _STMF_IMPL_H
 
 #include <sys/stmf_defines.h>

@@ -95,10 +96,11 @@
         struct stmf_i_scsi_task *ilu_free_tasks;
         struct stmf_itl_data    *ilu_itl_list;
         kstat_t         *ilu_kstat_info;
         kstat_t         *ilu_kstat_io;
         kmutex_t        ilu_kstat_lock;
+        kcondvar_t      ilu_offline_pending_cv;
 
         /* point to the luid entry in stmf_state.stmf_luid_list */
         void            *ilu_luid;
 } stmf_i_lu_t;
 

@@ -162,23 +164,10 @@
         int                     irport_refcnt;
         id_t                    irport_instance;
         avl_node_t              irport_ln;
 } stmf_i_remote_port_t;
 
-typedef struct stmf_i_itl_kstat {
-        char                    iitl_kstat_nm[KSTAT_STRLEN];
-        char                    iitl_kstat_lport[STMF_TGT_NAME_LEN];
-        char                    iitl_kstat_guid[STMF_GUID_INPUT + 1];
-        char                    *iitl_kstat_strbuf;
-        int                     iitl_kstat_strbuflen;
-        kstat_t                 *iitl_kstat_info;
-        kstat_t                 *iitl_kstat_taskq;
-        kstat_t                 *iitl_kstat_lu_xfer;
-        kstat_t                 *iitl_kstat_lport_xfer;
-        avl_node_t              iitl_kstat_ln;
-} stmf_i_itl_kstat_t;
-
 /*
  * ilport flags
  */
 #define ILPORT_FORCED_OFFLINE           0x01
 #define ILPORT_SS_GOT_INITIAL_LUNS      0x02

@@ -323,16 +312,10 @@
 typedef struct stmf_itl_data {
         uint32_t                        itl_counter;
         uint8_t                         itl_flags;
         uint8_t                         itl_hdlrm_reason;
         uint16_t                        itl_lun;
-        char                            *itl_kstat_strbuf;
-        int                             itl_kstat_strbuflen;
-        kstat_t                         *itl_kstat_info;
-        kstat_t                         *itl_kstat_taskq;
-        kstat_t                         *itl_kstat_lu_xfer;
-        kstat_t                         *itl_kstat_lport_xfer;
         void                            *itl_handle;
         struct stmf_i_lu                *itl_ilu;
         struct stmf_i_scsi_session      *itl_session;
         struct stmf_itl_data            *itl_next;
 } stmf_itl_data_t;