summaryrefslogtreecommitdiff
path: root/usr/src/lib/libraidcfg
diff options
context:
space:
mode:
authorjc156560 <none@none>2007-02-08 18:32:09 -0800
committerjc156560 <none@none>2007-02-08 18:32:09 -0800
commit3e4f2897f6618210c2ddb7529d87dc4395159768 (patch)
tree95391cc718e626f12279ed94ea2fc908c2bb60f8 /usr/src/lib/libraidcfg
parent7a5d89c451efe2f22ced23ea9fcaa00be2a9b64f (diff)
downloadillumos-gate-3e4f2897f6618210c2ddb7529d87dc4395159768.tar.gz
6519009 libraidcfg's headers and lint library stub have issues
--HG-- rename : usr/src/head/raidcfg.h => usr/src/lib/libraidcfg/common/raidcfg.h rename : usr/src/head/raidcfg_spi.h => usr/src/lib/libraidcfg/common/raidcfg_spi.h
Diffstat (limited to 'usr/src/lib/libraidcfg')
-rw-r--r--usr/src/lib/libraidcfg/Makefile6
-rw-r--r--usr/src/lib/libraidcfg/common/llib-lraidcfg96
-rw-r--r--usr/src/lib/libraidcfg/common/raidcfg.h103
-rw-r--r--usr/src/lib/libraidcfg/common/raidcfg_spi.h353
4 files changed, 465 insertions, 93 deletions
diff --git a/usr/src/lib/libraidcfg/Makefile b/usr/src/lib/libraidcfg/Makefile
index 2505f2f5c5..c264499eb8 100644
--- a/usr/src/lib/libraidcfg/Makefile
+++ b/usr/src/lib/libraidcfg/Makefile
@@ -30,6 +30,8 @@
include $(SRC)/lib/Makefile.lib
+HDRS = raidcfg_spi.h raidcfg.h
+HDRDIR = common
SUBDIRS = $(MACH)
$(BUILD64)SUBDIRS += $(MACH64)
@@ -47,6 +49,10 @@ lint := TARGET= lint
all clean clobber install lint: $(SUBDIRS)
+install_h: $(ROOTHDRS)
+
+check: $(CHECKHDRS)
+
$(SUBDIRS): FRC
@cd $@; pwd; $(MAKE) $(TARGET)
diff --git a/usr/src/lib/libraidcfg/common/llib-lraidcfg b/usr/src/lib/libraidcfg/common/llib-lraidcfg
index 7992f52add..a0626c6b0b 100644
--- a/usr/src/lib/libraidcfg/common/llib-lraidcfg
+++ b/usr/src/lib/libraidcfg/common/llib-lraidcfg
@@ -18,8 +18,6 @@
*
* CDDL HEADER END
*/
-/*LINTLIBRARY*/
-/*PROTOLIB1*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
@@ -28,95 +26,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
-#include <raidcfg.h>
-
-const char *
-raidcfg_errstr(
- int err_code);
-
-int
-raidcfg_get_controller(
- uint32_t controller_id);
-
-int
-raidcfg_get_array(
- int controller_handle,
- uint64_t target_id,
- uint64_t lun);
-
-int
-raidcfg_get_disk(
- int controller_handle,
- disk_tag_t tag);
-
-int
-raidcfg_open_controller(
- int handle,
- char **plugin_err_str);
-
-int
-raidcfg_close_controller(
- int handle,
- char **plugin_err_str);
-
-int
-raidcfg_get_type(
- int handle);
-
-int
-raidcfg_get_attr(
- int handle,
- void *attr);
-
-int
-raidcfg_get_container(
- int handle);
-
-int
-raidcfg_list_head(
- int handle,
- raid_obj_type_id_t type);
-
-int
-raidcfg_list_next(
- int handle);
-
-int
-raidcfg_set_attr(
- int handle,
- uint32_t set_cmd,
- void *value,
- char **plugin_err_str);
-
-int
-raidcfg_update_fw(
- int handle,
- char *file,
- char **plugin_err_str);
-
-int
-raidcfg_create_array(
- int num_of_comps,
- int *disk_handles,
- uint32_t raid_level,
- uint64_t size,
- uint32_t stripe_size,
- char **plugin_err_str);
-
-int
-raidcfg_delete_array(
- int array_handle,
- char **plugin_err_str);
-
-int
-raidcfg_set_hsp(
- int num,
- raidcfg_hsp_relation_t *hsp_relations,
- char **plugin_err_str);
-
-int
-raidcfg_unset_hsp(
- int num,
- raidcfg_hsp_relation_t *hsp_relations,
- char **plugin_err_str);
+/*LINTLIBRARY*/
+/*PROTOLIB1*/
+#include <raidcfg.h>
diff --git a/usr/src/lib/libraidcfg/common/raidcfg.h b/usr/src/lib/libraidcfg/common/raidcfg.h
new file mode 100644
index 0000000000..995397b015
--- /dev/null
+++ b/usr/src/lib/libraidcfg/common/raidcfg.h
@@ -0,0 +1,103 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _RAIDCFG_H
+#define _RAIDCFG_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/types.h>
+#include <raidcfg_spi.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Reserved Raid object IDs;
+ * ID 0 is reserved for root object;
+ * ID 0 also stands for NONE OBJECT.
+ */
+#define OBJ_SYSTEM 0
+#define OBJ_NONE 0
+
+typedef int raid_obj_handle_t;
+
+/*
+ * API data structure definition
+ */
+typedef struct {
+ int array_handle;
+ int disk_handle;
+} raidcfg_hsp_relation_t;
+
+typedef controller_attr_t raidcfg_controller_t;
+typedef array_attr_t raidcfg_array_t;
+typedef disk_attr_t raidcfg_disk_t;
+
+typedef struct {
+ uint32_t associated_id;
+ uint32_t type;
+ array_tag_t tag;
+} raidcfg_hsp_t;
+
+typedef struct {
+ uint32_t disk_id;
+ uint32_t state;
+ uint64_t offset;
+ uint64_t size;
+ disk_tag_t tag;
+} raidcfg_arraypart_t;
+
+typedef diskseg_attr_t raidcfg_diskseg_t;
+typedef task_attr_t raidcfg_task_t;
+
+/*
+ * raidcfg common library APIs
+ */
+const char *raidcfg_errstr(int);
+int raidcfg_get_controller(uint32_t);
+int raidcfg_get_array(int, uint64_t, uint64_t);
+int raidcfg_get_disk(int, disk_tag_t);
+int raidcfg_open_controller(int, char **);
+int raidcfg_close_controller(int, char **);
+int raidcfg_get_type(int);
+int raidcfg_get_attr(int, void *);
+int raidcfg_get_container(int);
+int raidcfg_list_head(int, raid_obj_type_id_t);
+int raidcfg_list_next(int);
+int raidcfg_set_attr(int, uint32_t, void *, char **);
+int raidcfg_set_hsp(int, raidcfg_hsp_relation_t *, char **);
+int raidcfg_unset_hsp(int, raidcfg_hsp_relation_t *, char **);
+int raidcfg_create_array(int, int *, uint32_t, uint64_t, uint32_t, char **);
+int raidcfg_delete_array(int, char **);
+int raidcfg_update_fw(int, char *, char **);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAIDCFG_H */
diff --git a/usr/src/lib/libraidcfg/common/raidcfg_spi.h b/usr/src/lib/libraidcfg/common/raidcfg_spi.h
new file mode 100644
index 0000000000..62c23fb42a
--- /dev/null
+++ b/usr/src/lib/libraidcfg/common/raidcfg_spi.h
@@ -0,0 +1,353 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_RAIDCFG_SPI_H
+#define _SYS_RAIDCFG_SPI_H
+
+#pragma ident "%Z%%M% %I% %E% SMI"
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Controller capabilities
+ */
+#define RAID_CAP_RAID0 1
+#define RAID_CAP_RAID1 1 << 1
+#define RAID_CAP_RAID1E 1 << 2
+#define RAID_CAP_RAID5 1 << 3
+#define RAID_CAP_RAID10 1 << 4
+#define RAID_CAP_RAID50 1 << 5
+#define RAID_CAP_G_HSP 1 << 6
+#define RAID_CAP_L_HSP 1 << 7
+#define RAID_CAP_DISK_TRANS 1 << 8
+#define RAID_CAP_FULL_DISK_ONLY 1 << 9
+#define RAID_CAP_SMART_ALLOC 1 << 10
+#define RAID_CAP_ARRAY_ALIGN 1 << 11
+
+/*
+ * General constants
+ */
+#define OBJ_SEPARATOR_BEGIN -1
+#define OBJ_SEPARATOR_END -2
+
+#define OBJ_ATTR_NONE -1
+
+/*
+ * Array RAID level definition
+ */
+#define RAID_LEVEL_0 1
+#define RAID_LEVEL_1 2
+#define RAID_LEVEL_1E 3
+#define RAID_LEVEL_5 4
+#define RAID_LEVEL_10 5
+#define RAID_LEVEL_50 6
+
+/*
+ * Array cache write policy
+ */
+#define CACHE_WR_OFF 0
+#define CACHE_WR_ON 1
+
+/*
+ * Array cache read policy
+ */
+#define CACHE_RD_OFF 0
+#define CACHE_RD_ON 1
+
+/*
+ * Array status
+ */
+#define ARRAY_STATE_OPTIMAL 0
+#define ARRAY_STATE_DEGRADED 1
+#define ARRAY_STATE_FAILED 2
+
+/*
+ * Disk state
+ */
+#define DISK_STATE_GOOD 0
+#define DISK_STATE_FAILED 1
+
+/*
+ * Array part state
+ */
+#define ARRAYPART_STATE_GOOD 0
+#define ARRAYPART_STATE_MISSED 1
+
+/*
+ * Disk segment state
+ */
+#define DISKSEG_STATE_GOOD 1
+#define DISKSEG_STATE_RESERVED 1 << 1
+#define DISKSEG_STATE_DEAD 1 << 2
+#define DISKSEG_STATE_NORMAL 1 << 3
+
+/*
+ * Controller connection type
+ */
+#define TYPE_UNKNOWN 0
+#define TYPE_SCSI 1
+#define TYPE_SAS 2
+
+#define RAID_TASK_SUSPEND 0
+#define RAID_TASK_RESUME 1
+#define RAID_TASK_TERMINATE 2
+
+#define HSP_TYPE_GLOBAL 0
+#define HSP_TYPE_LOCAL 1
+
+/*
+ * Sub-command of set attribute
+ */
+#define SET_CACHE_WR_PLY 0
+#define SET_CACHE_RD_PLY 1
+
+/*
+ * Sub-commands for act method of object
+ */
+#define ACT_CONTROLLER_OPEN 0
+#define ACT_CONTROLLER_CLOSE 1
+#define ACT_CONTROLLER_FLASH_FW 2
+
+/*
+ * Some definitions
+ */
+#define CONTROLLER_FW_LEN 32
+#define CONTROLLER_TYPE_LEN 32
+
+#define DISK_VENDER_LEN 8
+#define DISK_PRODUCT_LEN 16
+#define DISK_REV_LEN 4
+
+#define DISK_ID(c, id, l) ((c) << 7 | (l) << 4 | (id))
+#define BUS(disk_id) ((disk_id) >> 7)
+#define TARGET(disk_id) ((disk_id) & 0xf)
+#define LUN(disk_id) (((disk_id) >> 4) & 0x7)
+
+#define ARRAY_ID(id, l) ((l) << 16 | (id))
+#define ARRAY_TARGET(array_id) ((array_id) & 0xffff)
+#define ARRAY_LUN(array_id) ((array_id) >> 16)
+
+#define RDCFG_PLUGIN_V1 0x10000
+#define CFGDIR "/dev/cfg"
+#define MAX_PATH_LEN 255
+
+/*
+ * Mininum array part size: 256M
+ */
+#define ARRAYPART_MIN_SIZE (uint64_t)(1 << 28)
+
+/*
+ * Return code
+ */
+#define SUCCESS 0
+#define STD_IOCTL -1
+#define ERR_DRIVER_NOT_FOUND -2
+#define ERR_DRIVER_OPEN -3
+#define ERR_DRIVER_LOCK -4
+#define ERR_DRIVER_CLOSED -5
+#define ERR_DRIVER_ACROSS -6
+#define ERR_ARRAY_LEVEL -7
+#define ERR_ARRAY_SIZE -8
+#define ERR_ARRAY_STRIPE_SIZE -9
+#define ERR_ARRAY_CACHE_POLICY -10
+#define ERR_ARRAY_IN_USE -11
+#define ERR_ARRAY_TASK -12
+#define ERR_ARRAY_CONFIG -13
+#define ERR_ARRAY_DISKNUM -14
+#define ERR_ARRAY_LAYOUT -15
+#define ERR_ARRAY_AMOUNT -16
+#define ERR_DISK_STATE -17
+#define ERR_DISK_SPACE -18
+#define ERR_DISK_SEG_AMOUNT -19
+#define ERR_DISK_NOT_EMPTY -20
+#define ERR_DISK_TASK -21
+#define ERR_TASK_STATE -22
+#define ERR_OP_ILLEGAL -23
+#define ERR_OP_NO_IMPL -24
+#define ERR_OP_FAILED -25
+#define ERR_DEVICE_NOENT -26
+#define ERR_DEVICE_TYPE -27
+#define ERR_DEVICE_DUP -28
+#define ERR_DEVICE_OVERFLOW -29
+#define ERR_DEVICE_UNCLEAN -30
+#define ERR_DEVICE_INVALID -31
+#define ERR_NOMEM -32
+#define ERR_PRIV -33
+#define ERR_PLUGIN -34
+
+/*
+ * Raid object types
+ */
+typedef enum {
+ OBJ_TYPE_SYSTEM,
+ OBJ_TYPE_CONTROLLER,
+ OBJ_TYPE_ARRAY,
+ OBJ_TYPE_DISK,
+ OBJ_TYPE_HSP,
+ OBJ_TYPE_ARRAY_PART,
+ OBJ_TYPE_DISK_SEG,
+ OBJ_TYPE_TASK,
+ OBJ_TYPE_ALL
+} raid_obj_type_id_t;
+
+/*
+ * Task functions
+ */
+typedef enum {
+ TASK_FUNC_UNKNOWN,
+ TASK_FUNC_INIT,
+ TASK_FUNC_BUILD,
+ TASK_FUNC_VERIFY
+} raidtask_func_t;
+
+/*
+ * Task state
+ */
+typedef enum {
+ TASK_STATE_UNKNOWN,
+ TASK_STATE_TERMINATED,
+ TASK_STATE_FAILED,
+ TASK_STATE_DONE,
+ TASK_STATE_RUNNING,
+ TASK_STATE_SUSPENDED
+} raidtask_state_t;
+
+/*
+ * Attributes of all RAID objects
+ */
+typedef union {
+ uint64_t reserved[3];
+ struct {
+ uint64_t target_id;
+ uint64_t lun;
+ } idl;
+} array_tag_t;
+
+typedef union {
+ struct {
+ uint64_t bus;
+ uint64_t target_id;
+ uint64_t lun;
+ } cidl;
+} disk_tag_t;
+
+typedef struct {
+ uint32_t controller_id;
+ uint32_t max_array_num;
+ uint32_t max_seg_per_disk;
+ uint32_t connection_type;
+ uint64_t capability;
+ char fw_version[CONTROLLER_FW_LEN];
+ char controller_type[CONTROLLER_TYPE_LEN];
+} controller_attr_t;
+
+typedef struct {
+ uint32_t array_id;
+ uint32_t state;
+ array_tag_t tag;
+ uint64_t capacity;
+ uint32_t raid_level;
+ uint32_t stripe_size;
+ uint32_t write_policy;
+ uint32_t read_policy;
+} array_attr_t;
+
+typedef struct {
+ uint32_t disk_id;
+ uint32_t state;
+ disk_tag_t tag;
+ uint64_t capacity;
+ char vendorid[DISK_VENDER_LEN];
+ char productid[DISK_PRODUCT_LEN];
+ char revision[DISK_REV_LEN];
+} disk_attr_t;
+
+typedef struct {
+ uint32_t associated_id;
+ uint32_t type;
+} hsp_attr_t;
+
+typedef struct {
+ uint32_t disk_id;
+ uint32_t state;
+ uint64_t offset;
+ uint64_t size;
+} arraypart_attr_t;
+
+typedef struct {
+ uint32_t seq_no;
+ uint32_t state;
+ uint64_t offset;
+ uint64_t size;
+} diskseg_attr_t;
+
+typedef struct {
+ uint32_t task_id;
+ uint32_t task_func;
+ uint32_t task_state;
+ uint32_t progress;
+} task_attr_t;
+
+typedef struct {
+ uint32_t array_id;
+ uint32_t disk_id;
+} hsp_relation_t;
+
+/*
+ * Structure used to register plug-in modules
+ */
+typedef struct raid_lib_type {
+ uint32_t version;
+ struct raid_lib_type *next;
+ void *lib_handle;
+ const char *name;
+
+ int (*open_controller)(uint32_t, char **);
+ int (*close_controller)(uint32_t, char **);
+ int (*compnum)(uint32_t, uint32_t, raid_obj_type_id_t,
+ raid_obj_type_id_t);
+ int (*complist)(uint32_t, uint32_t, raid_obj_type_id_t,
+ raid_obj_type_id_t, int, void *);
+ int (*get_attr)(uint32_t, uint32_t, uint32_t, raid_obj_type_id_t,
+ void *);
+ int (*set_attr)(uint32_t, uint32_t, uint32_t, uint32_t *, char **);
+ int (*array_create)(uint32_t, array_attr_t *, int,
+ arraypart_attr_t *, char **);
+ int (*array_delete)(uint32_t, uint32_t, char **);
+ int (*hsp_bind)(uint32_t, uint32_t, hsp_relation_t *, char **);
+ int (*hsp_unbind)(uint32_t, uint32_t, hsp_relation_t *, char **);
+ int (*flash_fw)(uint32_t, char *, uint32_t, char **);
+} raid_lib_t;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_RAIDCFG_SPI_H */