5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  23  */
  24 /*
  25  * Copyright 2011, Nexenta Systems, Inc. All rights reserved.
  26  * Copyright (c) 2013 by Delphix. All rights reserved.
  27  */
  28 #ifndef _STMF_STATE_H
  29 #define _STMF_STATE_H
  30 
  31 #ifdef  __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 typedef struct stmf_state {
  36         kmutex_t                stmf_lock;
  37         kcondvar_t              stmf_cv;
  38         dev_info_t              *stmf_dip;
  39         stmf_i_lu_provider_t    *stmf_ilplist;
  40         stmf_i_port_provider_t  *stmf_ipplist;
  41         stmf_i_lu_t             *stmf_ilulist;
  42         stmf_i_local_port_t     *stmf_ilportlist;
  43         id_space_t              *stmf_ilport_inst_space;
  44         avl_tree_t              stmf_irportlist;
  45         id_space_t              *stmf_irport_inst_space;
  46         int                     stmf_nlps;
  47         int                     stmf_npps;
  48         int                     stmf_nlus;
  49         int                     stmf_nlports;
  50         uint8_t                 stmf_service_running:1,
  51                                 stmf_inventory_locked:1,
  52                                 stmf_exclusive_open:1,
  53                                 stmf_opened:1,
  54                                 stmf_process_initial_luns:1,
  55                                 rsvd:3;
  56         uint8_t                 stmf_config_state; /* See stmf_ioctl.h */
  57         uint8_t                 stmf_alua_state;
  58         uint16_t                stmf_alua_node;
  59         uint8_t                 stmf_default_lu_state;
  60         uint8_t                 stmf_default_lport_state;
  61         ddi_taskq_t             *stmf_svc_taskq;
  62         uint32_t                stmf_svc_flags;
  63         stmf_i_lu_t             *stmf_svc_ilu_draining;
  64         stmf_i_lu_t             *stmf_svc_ilu_timing;
  65         struct stmf_svc_req     *stmf_svc_active;
  66         struct stmf_svc_req     **stmf_svc_tailp;
  67 
  68         stmf_id_list_t          stmf_hg_list;
  69         stmf_id_list_t          stmf_tg_list;
  70         stmf_id_list_t          stmf_luid_list;
  71 
  72         stmf_ver_tg_t           *stmf_ver_tg_head;
  73 
  74         stmf_pp_data_t          *stmf_ppdlist;
  75 } stmf_state_t;
  76 
  77 /*
  78  * svc flags
  79  */
  80 #define STMF_SVC_STARTED                1
  81 #define STMF_SVC_ACTIVE                 2
  82 #define STMF_SVC_TERMINATE              4
  83 
  84 /*
  85  * svc request. We probably have to modify it once more services (and probably
  86  * different types of services) are added to the stmf_svc_thread.
  87  */
  88 typedef struct stmf_svc_req {
  89         struct stmf_svc_req             *svc_next;
  90         int                             svc_req_alloc_size;
  91         int                             svc_cmd;
  92         void                            *svc_obj;
  93         struct stmf_state_change_info   svc_info;
  94 } stmf_svc_req_t;
  95 
  96 extern stmf_state_t stmf_state;
  97 
  98 #ifdef  __cplusplus
  99 }
 100 #endif
 101 
 102 #endif /* _STMF_STATE_H */
 | 
 
 
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  23  */
  24 /*
  25  * Copyright 2016, Nexenta Systems, Inc. All rights reserved.
  26  * Copyright (c) 2013 by Delphix. All rights reserved.
  27  */
  28 #ifndef _STMF_STATE_H
  29 #define _STMF_STATE_H
  30 
  31 #ifdef  __cplusplus
  32 extern "C" {
  33 #endif
  34 
  35 typedef struct stmf_state {
  36         kmutex_t                stmf_lock;
  37         kcondvar_t              stmf_cv;
  38         dev_info_t              *stmf_dip;
  39         stmf_i_lu_provider_t    *stmf_ilplist;
  40         stmf_i_port_provider_t  *stmf_ipplist;
  41         stmf_i_lu_t             *stmf_ilulist;
  42         stmf_i_local_port_t     *stmf_ilportlist;
  43         id_space_t              *stmf_ilport_inst_space;
  44         avl_tree_t              stmf_irportlist;
  45         id_space_t              *stmf_irport_inst_space;
  46         int                     stmf_nlps;
  47         int                     stmf_npps;
  48         int                     stmf_nlus;
  49         int                     stmf_nlports;
  50         uint8_t                 stmf_service_running:1,
  51                                 stmf_inventory_locked:1,
  52                                 stmf_exclusive_open:1,
  53                                 stmf_opened:1,
  54                                 stmf_process_initial_luns:1,
  55                                 rsvd:3;
  56         uint8_t                 stmf_config_state; /* See stmf_ioctl.h */
  57         uint8_t                 stmf_alua_state;
  58         uint16_t                stmf_alua_node;
  59         uint8_t                 stmf_default_lu_state;
  60         uint8_t                 stmf_default_lport_state;
  61         ddi_taskq_t             *stmf_svc_taskq;
  62         uint32_t                stmf_svc_flags;
  63         stmf_i_lu_t             *stmf_svc_ilu_draining;
  64         stmf_i_lu_t             *stmf_svc_ilu_timing;
  65         list_t                  stmf_svc_list;
  66 
  67         stmf_id_list_t          stmf_hg_list;
  68         stmf_id_list_t          stmf_tg_list;
  69         stmf_id_list_t          stmf_luid_list;
  70 
  71         stmf_ver_tg_t           *stmf_ver_tg_head;
  72 
  73         stmf_pp_data_t          *stmf_ppdlist;
  74 } stmf_state_t;
  75 
  76 /*
  77  * svc flags
  78  */
  79 #define STMF_SVC_STARTED                1
  80 #define STMF_SVC_ACTIVE                 2
  81 #define STMF_SVC_TERMINATE              4
  82 
  83 /*
  84  * svc request. We probably have to modify it once more services (and probably
  85  * different types of services) are added to the stmf_svc_thread.
  86  */
  87 typedef struct stmf_svc_req {
  88         list_node_t                     svc_list_entry;
  89         int                             svc_req_alloc_size;
  90         int                             svc_cmd;
  91         void                            *svc_obj;
  92         struct stmf_state_change_info   svc_info;
  93 } stmf_svc_req_t;
  94 
  95 extern stmf_state_t stmf_state;
  96 
  97 #ifdef  __cplusplus
  98 }
  99 #endif
 100 
 101 #endif /* _STMF_STATE_H */
 |