Print this page
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>
re #8564, rb4224 "mutex_enter: bad mutex" panic when under heavy load
*** 16,28 ****
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2013, Nexenta Systems, Inc. All rights reserved.
*/
#ifndef _PPPT_H
#define _PPPT_H
#include <sys/pppt_ic_if.h>
--- 16,29 ----
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
+
/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
! * Copyright 2013, 2015 Nexenta Systems, Inc. All rights reserved.
*/
#ifndef _PPPT_H
#define _PPPT_H
#include <sys/pppt_ic_if.h>
*** 47,124 ****
PPPT_STATUS_DONE
} pppt_status_t;
#define PPPT_MODNAME "pppt"
/* Target states and events, update pppt_ts_name table whenever modified */
typedef enum {
! TS_UNDEFINED = 0,
! TS_CREATED,
! TS_ONLINING,
! TS_ONLINE,
! TS_STMF_ONLINE,
! TS_DELETING_NEED_OFFLINE,
! TS_OFFLINING,
! TS_OFFLINE,
! TS_STMF_OFFLINE,
! TS_DELETING_STMF_DEREG,
! TS_DELETING_STMF_DEREG_FAIL,
! TS_DELETING,
! TS_MAX_STATE
} pppt_tgt_state_t;
#ifdef PPPT_TGT_SM_STRINGS
! static const char *pppt_ts_name[TS_MAX_STATE+1] = {
! "TS_UNDEFINED",
! "TS_CREATED",
! "TS_ONLINING",
! "TS_ONLINE",
! "TS_STMF_ONLINE",
! "TS_DELETING_NEED_OFFLINE",
! "TS_OFFLINING",
! "TS_OFFLINE",
! "TS_STMF_OFFLINE",
! "TS_DELETING_STMF_DEREG",
! "TS_DELETING_STMF_DEREG_FAIL",
! "TS_DELETING",
! "TS_MAX_STATE"
};
#endif
typedef enum {
! TE_UNDEFINED = 0,
! TE_STMF_ONLINE_REQ,
! TE_ONLINE_SUCCESS,
! TE_ONLINE_FAIL,
! TE_STMF_ONLINE_COMPLETE_ACK,
! TE_STMF_OFFLINE_REQ,
! TE_OFFLINE_COMPLETE,
! TE_STMF_OFFLINE_COMPLETE_ACK,
! TE_DELETE,
! TE_STMF_DEREG_SUCCESS,
! TE_STMF_DEREG_FAIL,
! TE_STMF_DEREG_RETRY,
! TE_WAIT_REF_COMPLETE, /* XXX */
! TE_MAX_EVENT
} pppt_tgt_event_t;
#ifdef PPPT_TGT_SM_STRINGS
! static const char *pppt_te_name[TE_MAX_EVENT+1] = {
! "TE_UNDEFINED",
! "TE_STMF_ONLINE_REQ",
! "TE_ONLINE_SUCCESS",
! "TE_ONLINE_FAIL",
! "TE_STMF_ONLINE_COMPLETE_ACK",
! "TE_STMF_OFFLINE_REQ",
! "TE_OFFLINE_COMPLETE",
! "TE_STMF_OFFLINE_COMPLETE_ACK",
! "TE_DELETE",
! "TE_STMF_DEREG_SUCCESS",
! "TE_STMF_DEREG_FAIL",
! "TE_STMF_DEREG_RETRY",
! "TE_WAIT_REF_COMPLETE",
! "TE_MAX_EVENT"
};
#endif
typedef struct pppt_tgt_s {
kmutex_t target_mutex;
--- 48,114 ----
PPPT_STATUS_DONE
} pppt_status_t;
#define PPPT_MODNAME "pppt"
+ #define TGT_STATE_LIST() \
+ item(TS_UNDEFINED) \
+ item(TS_CREATED) \
+ item(TS_ONLINING) \
+ item(TS_ONLINE) \
+ item(TS_STMF_ONLINE) \
+ item(TS_DELETING_NEED_OFFLINE) \
+ item(TS_OFFLINING) \
+ item(TS_OFFLINE) \
+ item(TS_STMF_OFFLINE) \
+ item(TS_DELETING_STMF_DEREG) \
+ item(TS_DELETING_STMF_DEREG_FAIL) \
+ item(TS_DELETING) \
+ item(TS_MAX_STATE)
+
/* Target states and events, update pppt_ts_name table whenever modified */
typedef enum {
! #define item(a) a,
! TGT_STATE_LIST()
! #undef item
} pppt_tgt_state_t;
#ifdef PPPT_TGT_SM_STRINGS
! static const char *pppt_ts_name[TS_MAX_STATE + 1] = {
! #define item(a) #a,
! TGT_STATE_LIST()
! #undef item
};
#endif
+ #define TGT_EVENT_LIST() \
+ item(TE_UNDEFINED) \
+ item(TE_STMF_ONLINE_REQ) \
+ item(TE_ONLINE_SUCCESS) \
+ item(TE_ONLINE_FAIL) \
+ item(TE_STMF_ONLINE_COMPLETE_ACK) \
+ item(TE_STMF_OFFLINE_REQ) \
+ item(TE_OFFLINE_COMPLETE) \
+ item(TE_STMF_OFFLINE_COMPLETE_ACK) \
+ item(TE_DELETE) \
+ item(TE_STMF_DEREG_SUCCESS) \
+ item(TE_STMF_DEREG_FAIL) \
+ item(TE_STMF_DEREG_RETRY) \
+ item(TE_WAIT_REF_COMPLETE) /* XXX */ \
+ item(TE_MAX_EVENT)
+
typedef enum {
! #define item(a) a,
! TGT_EVENT_LIST()
! #undef item
} pppt_tgt_event_t;
#ifdef PPPT_TGT_SM_STRINGS
! static const char *pppt_te_name[TE_MAX_EVENT + 1] = {
! #define item(a) #a,
! TGT_EVENT_LIST()
! #undef item
};
#endif
typedef struct pppt_tgt_s {
kmutex_t target_mutex;