Print this page
NEX-15582 libipmi doesn't support Get Chassis Status IPMI command
Reviewed by: Dan Fields <dan.fields@nexenta.com>
8963 default chunk size used by ipmi_fru_read() is too large for some SP's
Author: Rob Johnston <rob.johnston@joyent.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
8967 libipmi: add support for GET_CHASSIS_STATUS command
8974 fac_prov_ipmi should support binding by entity id and instance
8975 ipmi topo plugin should automatically enumerate sensors on nodes it enumerates
8976 ipmi enumerator should include FRU identity information in FMRI authority
8977 ipmi enumerator doesn't always enumerate nested entities
8978 Add topo facility method for controlling chassis ident indicator
Author: Rob Johnston <rob.johnston@joyent.com>
Reviewed by: Yuri Pankov <yuripv@icloud.com>
Reviewed by: Ben Sims <bensims@gmail.com>
Approved by: Dan McDonald <danmcd@joyent.com>
NEX-15955 Support for more than 255 iSCSI Targets
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
NEX-15955 Support for more than 255 iSCSI Targets
Reviewed by: Rick McNeal <rick.mcneal@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-3177 enums and string arrays required to be in sync.
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Steve Peng <steve.peng@nexenta.com>
NEX-2359 iSCSI target connection handling is missing refcount audit information
SUP-776 iSCSI target portals not isolating IQNs on different subnets

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/comstar/port/iscsit/iscsit.h
          +++ new/usr/src/uts/common/io/comstar/port/iscsit/iscsit.h
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  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      - * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
       24 + * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  25   25   * Copyright (c) 2017, Joyent, Inc.  All rights reserved.
  26   26   */
  27   27  
  28   28  #ifndef _ISCSIT_H_
  29   29  #define _ISCSIT_H_
  30   30  
  31   31  #include <sys/iscsit/iscsi_if.h>
  32   32  #include <sys/iscsit/iscsit_common.h>
  33   33  
  34   34  #include "iscsit_authclient.h"
↓ open down ↓ 14 lines elided ↑ open up ↑
  49   49  #define ISCSIT_MAX_OUTSTANDING_R2T              ISCSI_DEFAULT_MAX_OUT_R2T
  50   50  #define ISCSIT_MAX_ERROR_RECOVERY_LEVEL         0
  51   51  #define ISCSIT_MAX_OUTSTANDING_UNEXPECTED_PDUS  0
  52   52  
  53   53  #define ISCSIT_DEFAULT_TPG      "iscsit-default-tpg"
  54   54  #define ISCSIT_DEFAULT_TPGT     1
  55   55  
  56   56  #define ISCSI_MAX_TSIH          0xffff
  57   57  #define ISCSI_UNSPEC_TSIH       0
  58   58  
  59      -/* Max targets per system */
  60      -#define ISCSIT_MAX_TARGETS      1024
  61      -
  62   59  #define ISCSIT_MAX_WINDOW       1024
  63   60  #define ISCSIT_RXPDU_QUEUE_LEN  2048
  64   61  
  65   62  /*
  66   63   * MC/S: A timeout is maintained to recover from lost CmdSN (holes in the
  67   64   * CmdSN ordering). When the timeout is reached, the ExpCmdSN is advanced
  68   65   * past the hole to continue processing the queued commands. This value is
  69   66   * system-tunable (volatile rxpdu_queue_threshold) and should be in the
  70   67   * range from 5 to 30 seconds.
  71   68   */
↓ open down ↓ 45 lines elided ↑ open up ↑
 117  114          int                     portal_online;
 118  115          idm_refcnt_t            portal_refcnt;
 119  116          avl_node_t              portal_tpg_ln;
 120  117          iscsit_tpg_t            *portal_tpg;
 121  118          idm_svc_t               *portal_svc;
 122  119          boolean_t               portal_default;
 123  120          void                    *portal_isns;
 124  121  } iscsit_portal_t;
 125  122  
 126  123  
      124 +#define TGT_STATE_LIST() \
      125 +        item(TS_UNDEFINED) \
      126 +        item(TS_CREATED) \
      127 +        item(TS_ONLINING) \
      128 +        item(TS_ONLINE) \
      129 +        item(TS_STMF_ONLINE) \
      130 +        item(TS_DELETING_NEED_OFFLINE) \
      131 +        item(TS_OFFLINING) \
      132 +        item(TS_OFFLINE) \
      133 +        item(TS_STMF_OFFLINE) \
      134 +        item(TS_DELETING_STMF_DEREG) \
      135 +        item(TS_DELETING_STMF_DEREG_FAIL) \
      136 +        item(TS_DELETING) \
      137 +        item(TS_MAX_STATE)
      138 +
 127  139  /* Target states and events, update iscsit_ts_name table whenever modified */
 128  140  typedef enum {
 129      -        TS_UNDEFINED = 0,
 130      -        TS_CREATED,
 131      -        TS_ONLINING,
 132      -        TS_ONLINE,
 133      -        TS_STMF_ONLINE,
 134      -        TS_DELETING_NEED_OFFLINE,
 135      -        TS_OFFLINING,
 136      -        TS_OFFLINE,
 137      -        TS_STMF_OFFLINE,
 138      -        TS_DELETING_STMF_DEREG,
 139      -        TS_DELETING_STMF_DEREG_FAIL,
 140      -        TS_DELETING,
 141      -        TS_MAX_STATE
      141 +#define item(a) a,
      142 +        TGT_STATE_LIST()
      143 +#undef  item
 142  144  } iscsit_tgt_state_t;
 143  145  
 144  146  #ifdef ISCSIT_TGT_SM_STRINGS
 145      -static const char *iscsit_ts_name[TS_MAX_STATE+1] = {
 146      -        "TS_UNDEFINED",
 147      -        "TS_CREATED",
 148      -        "TS_ONLINING",
 149      -        "TS_ONLINE",
 150      -        "TS_STMF_ONLINE",
 151      -        "TS_DELETING_NEED_OFFLINE",
 152      -        "TS_OFFLINING",
 153      -        "TS_OFFLINE",
 154      -        "TS_STMF_OFFLINE",
 155      -        "TS_DELETING_STMF_DEREG",
 156      -        "TS_DELETING_STMF_DEREG_FAIL",
 157      -        "TS_DELETING",
 158      -        "TS_MAX_STATE"
      147 +static const char *iscsit_ts_name[TS_MAX_STATE + 1] = {
      148 +#define item(a) #a,
      149 +        TGT_STATE_LIST()
      150 +#undef  item
 159  151  };
 160  152  #endif
 161  153  
      154 +#define TGT_EVENT_LIST() \
      155 +        item(TE_UNDEFINED) \
      156 +        item(TE_STMF_ONLINE_REQ) \
      157 +        item(TE_ONLINE_SUCCESS) \
      158 +        item(TE_ONLINE_FAIL) \
      159 +        item(TE_STMF_ONLINE_COMPLETE_ACK) \
      160 +        item(TE_STMF_OFFLINE_REQ) \
      161 +        item(TE_OFFLINE_COMPLETE) \
      162 +        item(TE_STMF_OFFLINE_COMPLETE_ACK) \
      163 +        item(TE_DELETE) \
      164 +        item(TE_STMF_DEREG_SUCCESS) \
      165 +        item(TE_STMF_DEREG_FAIL) \
      166 +        item(TE_STMF_DEREG_RETRY) \
      167 +        item(TE_WAIT_REF_COMPLETE) \
      168 +        item(TE_MAX_EVENT)
      169 +
 162  170  typedef enum {
 163      -        TE_UNDEFINED = 0,
 164      -        TE_STMF_ONLINE_REQ,
 165      -        TE_ONLINE_SUCCESS,
 166      -        TE_ONLINE_FAIL,
 167      -        TE_STMF_ONLINE_COMPLETE_ACK,
 168      -        TE_STMF_OFFLINE_REQ,
 169      -        TE_OFFLINE_COMPLETE,
 170      -        TE_STMF_OFFLINE_COMPLETE_ACK,
 171      -        TE_DELETE,
 172      -        TE_STMF_DEREG_SUCCESS,
 173      -        TE_STMF_DEREG_FAIL,
 174      -        TE_STMF_DEREG_RETRY,
 175      -        TE_WAIT_REF_COMPLETE,
 176      -        TE_MAX_EVENT
      171 +#define item(a) a,
      172 +        TGT_EVENT_LIST()
      173 +#undef  item
 177  174  } iscsit_tgt_event_t;
 178  175  
 179  176  #ifdef ISCSIT_TGT_SM_STRINGS
 180      -static const char *iscsit_te_name[TE_MAX_EVENT+1] = {
 181      -        "TE_UNDEFINED",
 182      -        "TE_STMF_ONLINE_REQ",
 183      -        "TE_ONLINE_SUCCESS",
 184      -        "TE_ONLINE_FAIL",
 185      -        "TE_STMF_ONLINE_COMPLETE_ACK",
 186      -        "TE_STMF_OFFLINE_REQ",
 187      -        "TE_OFFLINE_COMPLETE",
 188      -        "TE_STMF_OFFLINE_COMPLETE_ACK",
 189      -        "TE_DELETE",
 190      -        "TE_STMF_DEREG_SUCCESS",
 191      -        "TE_STMF_DEREG_FAIL",
 192      -        "TE_STMF_DEREG_RETRY",
 193      -        "TE_WAIT_REF_COMPLETE",
 194      -        "TE_MAX_EVENT"
      177 +static const char *iscsit_te_name[TE_MAX_EVENT + 1] = {
      178 +#define item(a) #a,
      179 +        TGT_EVENT_LIST()
      180 +#undef  item
 195  181  };
 196  182  #endif
 197  183  
 198  184  typedef struct {
 199  185          char                    *target_name;
 200  186          nvlist_t                *target_props;
 201  187          kmutex_t                target_mutex;
 202  188          idm_refcnt_t            target_refcnt;
 203  189          idm_refcnt_t            target_sess_refcnt;
 204  190          avl_tree_t              target_tpgt_list;
↓ open down ↓ 72 lines elided ↑ open up ↑
 277  263   * even though ACTIVE is not strictly an FFP state according to the RFC.
 278  264   *
 279  265   * Login state machine -- drive the login process, collect negotiated
 280  266   * parameters.  Another side effect of this approach is that we may get
 281  267   * the "notify ffp" callback from the IDM connection state machine before
 282  268   * the login state machine has actually transitioned to FFP state.
 283  269   */
 284  270  
 285  271  struct iscsit_conn_s;
 286  272  
      273 +/* Add new session states above SS_MAX_STATE */
      274 +#define SESSION_STATE_LIST() \
      275 +        item(SS_UNDEFINED) \
      276 +        item(SS_Q1_FREE) \
      277 +        item(SS_Q2_ACTIVE) \
      278 +        item(SS_Q3_LOGGED_IN) \
      279 +        item(SS_Q4_FAILED) \
      280 +        item(SS_Q5_CONTINUE) \
      281 +        item(SS_Q6_DONE) \
      282 +        item(SS_Q7_ERROR) \
      283 +        item(SS_MAX_STATE)
      284 +
 287  285  /* Update iscsit_ss_name table whenever session states are modified */
 288  286  typedef enum {
 289      -        SS_UNDEFINED = 0,
 290      -        SS_Q1_FREE,
 291      -        SS_Q2_ACTIVE,
 292      -        SS_Q3_LOGGED_IN,
 293      -        SS_Q4_FAILED,
 294      -        SS_Q5_CONTINUE,
 295      -        SS_Q6_DONE,
 296      -        SS_Q7_ERROR,
 297      -        /* Add new session states above SS_MAX_STATE */
 298      -        SS_MAX_STATE
      287 +#define item(a) a,
      288 +        SESSION_STATE_LIST()
      289 +#undef  item
 299  290  } iscsit_session_state_t;
 300  291  
 301  292  #ifdef ISCSIT_SESS_SM_STRINGS
 302  293  /* An array of state text values, for use in logging state transitions */
 303      -static const char *iscsit_ss_name[SS_MAX_STATE+1] = {
 304      -        "SS_UNDEFINED",
 305      -        "SS_Q1_FREE",
 306      -        "SS_Q2_ACTIVE",
 307      -        "SS_Q3_LOGGED_IN",
 308      -        "SS_Q4_FAILED",
 309      -        "SS_Q5_CONTINUE",
 310      -        "SS_Q6_DONE",
 311      -        "SS_Q7_ERROR",
 312      -        "SS_MAX_STATE"
      294 +static const char *iscsit_ss_name[SS_MAX_STATE + 1] = {
      295 +#define item(a) #a,
      296 +        SESSION_STATE_LIST()
      297 +#undef  item
 313  298  };
 314  299  #endif
 315  300  
      301 +/* Add new events above SE_MAX_EVENT */
      302 +#define SESSION_EVENT_LIST() \
      303 +        item(SE_UNDEFINED) \
      304 +        item(SE_CONN_IN_LOGIN)  /* From login state machine */ \
      305 +        item(SE_CONN_LOGGED_IN) /* FFP enabled client notification */ \
      306 +        item(SE_CONN_FFP_FAIL)  /* FFP disabled client notification */ \
      307 +        item(SE_CONN_FFP_DISABLE) /* FFP disabled client notification */ \
      308 +        item(SE_CONN_FAIL) /* Conn destroy client notification */ \
      309 +        item(SE_SESSION_CLOSE)  /* FFP disabled client notification */ \
      310 +        item(SE_SESSION_REINSTATE) /* From login state machine */ \
      311 +        item(SE_SESSION_TIMEOUT) /* Internal */ \
      312 +        item(SE_SESSION_CONTINUE) /* From login state machine */ \
      313 +        item(SE_SESSION_CONTINUE_FAIL) /* From login state machine? */ \
      314 +        item(SE_MAX_EVENT)
      315 +
 316  316  /* Update iscsit_se_name table whenever session events are modified */
 317  317  typedef enum {
 318      -        SE_UNDEFINED = 0,
 319      -        SE_CONN_IN_LOGIN,       /* From login state machine */
 320      -        SE_CONN_LOGGED_IN,      /* FFP enabled client notification */
 321      -        SE_CONN_FFP_FAIL,       /* FFP disabled client notification */
 322      -        SE_CONN_FFP_DISABLE,    /* FFP disabled client notification */
 323      -        SE_CONN_FAIL,           /* Conn destroy client notification */
 324      -        SE_SESSION_CLOSE,       /* FFP disabled client notification */
 325      -        SE_SESSION_REINSTATE,   /* From login state machine */
 326      -        SE_SESSION_TIMEOUT,     /* Internal */
 327      -        SE_SESSION_CONTINUE,    /* From login state machine */
 328      -        SE_SESSION_CONTINUE_FAIL, /* From login state machine? */
 329      -        /* Add new events above SE_MAX_EVENT */
 330      -        SE_MAX_EVENT
      318 +#define item(a) a,
      319 +        SESSION_EVENT_LIST()
      320 +#undef  item
 331  321  } iscsit_session_event_t;
 332  322  
 333  323  #ifdef ISCSIT_SESS_SM_STRINGS
 334  324  /* An array of event text values, for use in logging events */
 335      -static const char *iscsit_se_name[SE_MAX_EVENT+1] = {
 336      -        "SE_UNDEFINED",
 337      -        "SE_CONN_IN_LOGIN",
 338      -        "SE_CONN_LOGGED_IN",
 339      -        "SE_CONN_FFP_FAIL",
 340      -        "SE_CONN_FFP_DISABLE",
 341      -        "SE_CONN_FAIL",
 342      -        "SE_SESSION_CLOSE",
 343      -        "SE_SESSION_REINSTATE",
 344      -        "SE_SESSION_TIMEOUT",
 345      -        "SE_SESSION_CONTINUE",
 346      -        "SE_SESSION_CONTINUE_FAIL",
 347      -        "SE_MAX_EVENT"
      325 +static const char *iscsit_se_name[SE_MAX_EVENT + 1] = {
      326 +#define item(a) #a,
      327 +        SESSION_EVENT_LIST()
      328 +#undef  item
 348  329  };
 349  330  #endif
 350  331  
 351  332  /*
 352  333   * Set in ist_tgt after iscsit_tgt_unbind_sess to differentiate an unbound
 353  334   * session from a discovery session.
 354  335   */
 355  336  #define SESS_UNBOUND_FROM_TGT   -1
 356  337  
 357  338  typedef struct {
↓ open down ↓ 24 lines elided ↑ open up ↑
 382  363          char                    *ist_target_alias;
 383  364          uint8_t                 ist_isid[ISCSI_ISID_LEN];
 384  365          uint16_t                ist_tsih;
 385  366          uint16_t                ist_tpgt_tag;
 386  367          uint32_t                ist_expcmdsn;
 387  368          uint32_t                ist_maxcmdsn;
 388  369          avl_tree_t              ist_task_list;
 389  370          iscsit_cbuf_t           *ist_rxpdu_queue;
 390  371  } iscsit_sess_t;
 391  372  
      373 +/* Add new login states above ILS_MAX_STATE */
      374 +#define LOGIN_STATE_LIST() \
      375 +        item(ILS_UNDEFINED) \
      376 +        item(ILS_LOGIN_INIT) \
      377 +        item(ILS_LOGIN_WAITING) /* Waiting for more login PDU's */ \
      378 +        item(ILS_LOGIN_PROCESSING) /* Processing login request */ \
      379 +        item(ILS_LOGIN_RESPONDING) /* Sending login response */ \
      380 +        item(ILS_LOGIN_RESPONDED) /* Sent login response (no trans. to FFP) */ \
      381 +        item(ILS_LOGIN_FFP) /* Sending last login PDU for final response */ \
      382 +        item(ILS_LOGIN_DONE) /* Last login PDU sent (so we can free it) */ \
      383 +        item(ILS_LOGIN_ERROR) /* Login error, login failed */ \
      384 +        item(ILS_MAX_STATE)
      385 +
 392  386  /* Update iscsit_ils_name table whenever login states are modified */
 393  387  typedef enum {
 394      -        ILS_UNDEFINED = 0,
 395      -        ILS_LOGIN_INIT,
 396      -        ILS_LOGIN_WAITING,      /* Waiting for more login PDU's */
 397      -        ILS_LOGIN_PROCESSING,   /* Processing login request */
 398      -        ILS_LOGIN_RESPONDING,   /* Sending login response */
 399      -        ILS_LOGIN_RESPONDED,    /* Sent login response (no trans. to FFP) */
 400      -        ILS_LOGIN_FFP,          /* Sending last login PDU for final response */
 401      -        ILS_LOGIN_DONE,         /* Last login PDU sent (so we can free it) */
 402      -        ILS_LOGIN_ERROR,        /* Login error, login failed */
 403      -        /* Add new login states above ILS_MAX_STATE */
 404      -        ILS_MAX_STATE
      388 +#define item(a) a,
      389 +        LOGIN_STATE_LIST()
      390 +#undef  item
 405  391  } iscsit_login_state_t;
 406  392  
 407  393  #ifdef ISCSIT_LOGIN_SM_STRINGS
 408      -/* An array of login state text values, for use in logging login progress */
 409      -static const char *iscsit_ils_name[ILS_MAX_STATE+1] = {
 410      -        "ILS_UNDEFINED",
 411      -        "ILS_LOGIN_INIT",
 412      -        "ILS_LOGIN_WAITING",
 413      -        "ILS_LOGIN_PROCESSING",
 414      -        "ILS_LOGIN_RESPONDING",
 415      -        "ILS_LOGIN_RESPONDED",
 416      -        "ILS_LOGIN_FFP",
 417      -        "ILS_LOGIN_DONE",
 418      -        "ILS_LOGIN_ERROR",
 419      -        "ILS_MAX_STATE"
      394 +/* An array of login state text values, for use in logging login progess */
      395 +static const char *iscsit_ils_name[ILS_MAX_STATE + 1] = {
      396 +#define item(a) #a,
      397 +        LOGIN_STATE_LIST()
      398 +#undef  item
 420  399  };
 421  400  #endif
 422  401  
      402 +/* Add new login events above ILE_MAX_EVENT */
      403 +#define LOGIN_EVENT_LIST() \
      404 +        item(ILE_UNDEFINED) \
      405 +        item(ILE_LOGIN_RCV) \
      406 +        item(ILE_LOGIN_RESP_READY) \
      407 +        item(ILE_LOGIN_FFP) \
      408 +        item(ILE_LOGIN_RESP_COMPLETE) \
      409 +        item(ILE_LOGIN_ERROR) \
      410 +        item(ILE_LOGIN_CONN_ERROR) \
      411 +        item(ILE_MAX_EVENT)
      412 +
 423  413  /* Update iscsit_ile_name table whenever login events are modified */
 424  414  typedef enum {
 425      -        ILE_UNDEFINED = 0,
 426      -        ILE_LOGIN_RCV,
 427      -        ILE_LOGIN_RESP_READY,
 428      -        ILE_LOGIN_FFP,
 429      -        ILE_LOGIN_RESP_COMPLETE,
 430      -        ILE_LOGIN_ERROR,
 431      -        ILE_LOGIN_CONN_ERROR,
 432      -        /* Add new login events above ILE_MAX_EVENT */
 433      -        ILE_MAX_EVENT
      415 +#define item(a) a,
      416 +        LOGIN_EVENT_LIST()
      417 +#undef  item
 434  418  } iscsit_login_event_t;
 435  419  
 436  420  #ifdef ISCSIT_LOGIN_SM_STRINGS
 437      -/* An array of login event text values, for use in logging login events */
 438      -static const char *iscsit_ile_name[ILE_MAX_EVENT+1] = {
 439      -        "ILE_UNDEFINED",
 440      -        "ILE_LOGIN_RCV",
 441      -        "ILE_LOGIN_RESP_READY",
 442      -        "ILE_LOGIN_FFP",
 443      -        "ILE_LOGIN_RESP_COMPLETE",
 444      -        "ILE_LOGIN_ERROR",
 445      -        "ILE_LOGIN_CONN_ERROR",
 446      -        "ILE_MAX_EVENT"
      421 +/* An array of login event text values, for use in loggin login events */
      422 +static const char *iscsit_ile_name[ILE_MAX_EVENT + 1] = {
      423 +#define item(a) #a,
      424 +        LOGIN_EVENT_LIST()
      425 +#undef  item
 447  426  };
 448  427  #endif
 449  428  
 450  429  typedef struct {
 451  430          uint32_t                op_initial_params_set:1,
 452  431                                  op_discovery_session:1,
 453  432                                  op_initial_r2t:1,
 454  433                                  op_immed_data:1,
 455  434                                  op_data_pdu_in_order:1,
 456  435                                  op_data_sequence_in_order:1,
↓ open down ↓ 101 lines elided ↑ open up ↑
 558  537          uint32_t                it_ttt;
 559  538          avl_node_t              it_sess_ln;
 560  539  } iscsit_task_t;
 561  540  
 562  541  typedef struct iscsit_isns_cfg {
 563  542          kmutex_t                isns_mutex;
 564  543          boolean_t               isns_state;
 565  544          list_t                  isns_svrs;
 566  545  } iscsit_isns_cfg_t;
 567  546  
      547 +#define SERVICE_ENABLED_LIST() \
      548 +        item(ISE_UNDEFINED) \
      549 +        item(ISE_DETACHED) \
      550 +        item(ISE_DISABLED) \
      551 +        item(ISE_ENABLING) \
      552 +        item(ISE_ENABLED) \
      553 +        item(ISE_BUSY) \
      554 +        item(ISE_DISABLING)
      555 +
 568  556  /*
 569  557   * State values for the iscsit service
 570  558   */
 571  559  typedef enum {
 572      -        ISE_UNDEFINED = 0,
 573      -        ISE_DETACHED,
 574      -        ISE_DISABLED,
 575      -        ISE_ENABLING,
 576      -        ISE_ENABLED,
 577      -        ISE_BUSY,
 578      -        ISE_DISABLING
      560 +#define item(a) a,
      561 +        SERVICE_ENABLED_LIST()
      562 +#undef  item
 579  563  } iscsit_service_enabled_t;
 580  564  
 581  565  
 582  566  typedef struct {
 583  567          iscsit_service_enabled_t        global_svc_state;
 584  568          dev_info_t                      *global_dip;
 585  569          ldi_ident_t                     global_li;
 586  570          nvlist_t                        *global_props;
 587  571          stmf_port_provider_t            *global_pp;
 588  572          stmf_dbuf_store_t               *global_dbuf_store;
↓ open down ↓ 86 lines elided ↑ open up ↑
 675  659  void
 676  660  iscsit_ctl(stmf_local_port_t *lport, int cmd, void *arg);
 677  661  
 678  662  /*
 679  663   * Connection functions
 680  664   */
 681  665  idm_status_t
 682  666  iscsit_conn_reinstate(iscsit_conn_t *existing_ict, iscsit_conn_t *ict);
 683  667  
 684  668  void
 685      -iscsit_conn_destroy_done(iscsit_conn_t *ict);
 686      -
 687      -void
 688  669  iscsit_conn_set_auth(iscsit_conn_t *ict);
 689  670  
 690  671  void
 691  672  iscsit_conn_hold(iscsit_conn_t *ict);
 692  673  
 693  674  void
 694  675  iscsit_conn_rele(iscsit_conn_t *ict);
 695  676  
 696  677  void
 697  678  iscsit_conn_logout(iscsit_conn_t *ict);
↓ open down ↓ 168 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX