2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A#include <config_admin.h>
2N/A#include <libdevinfo.h>
2N/A#ifndef TEXT_DOMAIN
2N/A raid_obj_id_t *, char **);
2N/Astatic int raid_handle_init();
2N/Astatic void raid_handle_fini();
2N/A raid_obj_id_t *, char **);
2N/Astatic void raid_plugin_init();
2N/A case ERR_DRIVER_NOT_FOUND:
2N/A case ERR_DRIVER_OPEN:
2N/A case ERR_DRIVER_LOCK:
2N/A case ERR_DRIVER_CLOSED:
2N/A case ERR_DRIVER_ACROSS:
2N/A case ERR_ARRAY_LEVEL:
2N/A case ERR_ARRAY_SIZE:
2N/A case ERR_ARRAY_STRIPE_SIZE:
2N/A case ERR_ARRAY_CACHE_POLICY:
2N/A case ERR_ARRAY_IN_USE:
2N/A case ERR_ARRAY_TASK:
2N/A case ERR_ARRAY_CONFIG:
2N/A case ERR_ARRAY_DISKNUM:
2N/A case ERR_ARRAY_LAYOUT:
2N/A case ERR_ARRAY_AMOUNT:
2N/A case ERR_DISK_STATE:
2N/A case ERR_DISK_SPACE:
2N/A case ERR_DISK_SEG_AMOUNT:
2N/A case ERR_DISK_NOT_EMPTY:
2N/A case ERR_DISK_TASK:
2N/A case ERR_TASK_STATE:
2N/A case ERR_OP_ILLEGAL:
2N/A case ERR_OP_NO_IMPL:
2N/A case ERR_OP_FAILED:
2N/A case ERR_DEVICE_NOENT:
2N/A case ERR_DEVICE_TYPE:
2N/A case ERR_DEVICE_DUP:
2N/A case ERR_DEVICE_OVERFLOW:
2N/A case ERR_DEVICE_UNCLEAN:
2N/A case ERR_DEVICE_INVALID:
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_NOENT);
2N/A case OBJ_TYPE_CONTROLLER:
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_HSP:
2N/A (void **)(&array_attr));
2N/A case OBJ_TYPE_DISK:
2N/A case OBJ_TYPE_ARRAY_PART:
2N/A case OBJ_TYPE_DISK_SEG:
2N/A case OBJ_TYPE_TASK:
2N/A case OBJ_TYPE_PROP:
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A char **plugin_err_str)
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_OP_NO_IMPL);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_OP_NO_IMPL);
2N/A char **plugin_err_str)
2N/A for (i = 0; i < num_of_comps; ++i) {
2N/A *(disk_handles + i));
2N/A return (ERR_DEVICE_TYPE);
2N/A return (array_handle);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (array_obj_id);
2N/A return (ERR_DEVICE_INVALID);
2N/A char **plugin_err_str)
2N/A return (ERR_OP_ILLEGAL);
2N/A return (array_obj_id);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (disk_obj_id);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A char **plugin_err_str)
2N/A return (ERR_OP_ILLEGAL);
2N/A return (array_obj_id);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (disk_obj_id);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A (void) raid_handle_init();
2N/A (&diskseg_attr));
2N/A (void **)(&diskseg_attr));
2N/A disk_layer = 0;
2N/A sub_array_num = 0;
2N/A ++ disk_layer;
2N/A -- disk_layer;
2N/A if (disk_layer != 0)
2N/A ++ sub_array_num;
2N/A switch (raid_level) {
2N/A case RAID_LEVEL_0:
2N/A case RAID_LEVEL_1:
2N/A case RAID_LEVEL_1E:
2N/A case RAID_LEVEL_5:
2N/A case RAID_LEVEL_10:
2N/A case RAID_LEVEL_50:
2N/A return (ERR_ARRAY_LEVEL);
2N/Astatic raid_obj_handle_t
2N/A controller_id) &&
2N/Astatic raid_obj_id_t
2N/A return (OBJ_SYSTEM);
2N/A case OBJ_TYPE_SYSTEM:
2N/A return (OBJ_SYSTEM);
2N/A case OBJ_TYPE_CONTROLLER:
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_HSP:
2N/A case OBJ_TYPE_DISK:
2N/A case OBJ_TYPE_ARRAY_PART:
2N/A case OBJ_TYPE_DISK_SEG:
2N/A case OBJ_TYPE_TASK:
2N/A case OBJ_TYPE_PROP:
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_handle_t
2N/A return (OBJ_SYSTEM);
2N/A case OBJ_TYPE_SYSTEM:
2N/A case OBJ_TYPE_CONTROLLER:
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_HSP:
2N/A case OBJ_TYPE_DISK:
2N/A case OBJ_TYPE_ARRAY_PART:
2N/A case OBJ_TYPE_DISK_SEG:
2N/A case OBJ_TYPE_TASK:
2N/A case OBJ_TYPE_PROP:
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_lib_t *
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_INVALID);
2N/A ++obj_type_cnt) {
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_TYPE);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/Astatic raid_obj_id_t
2N/A return (task_obj_id);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (task_obj_id);
2N/A return (task_obj_id);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (task_obj_id);
2N/A return (task_obj_id);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (task_obj_id);
2N/Astatic raid_obj_id_t
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_INVALID);
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_DISK:
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A case ACT_CONTROLLER_OPEN:
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/A case ACT_CONTROLLER_CLOSE:
2N/A case ACT_CONTROLLER_FLASH_FW:
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_OP_FAILED);
2N/A return (ERR_OP_FAILED);
2N/A return (ERR_OP_FAILED);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_OP_NO_IMPL);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_INVALID);
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_ARRAY_PART:
2N/A case OBJ_TYPE_TASK:
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A case SET_CACHE_WR_PLY:
2N/A return (ERR_OP_ILLEGAL);
2N/A case SET_CACHE_RD_PLY:
2N/A return (ERR_OP_ILLEGAL);
2N/A case SET_ACTIVATION_PLY:
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_OP_NO_IMPL);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_INVALID);
2N/A case OBJ_TYPE_DISK_SEG:
2N/A case OBJ_TYPE_HSP:
2N/A case OBJ_TYPE_TASK:
2N/A case OBJ_TYPE_PROP:
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_ARRAY_LAYOUT);
2N/A for (i = 0; i < num_of_comp; ++i) {
2N/A return (ERR_ARRAY_LAYOUT);
2N/A if (disk_set_num == 0)
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_0:
2N/A case RAID_LEVEL_1:
2N/A case RAID_LEVEL_1E:
2N/A case RAID_LEVEL_5:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_10:
2N/A case RAID_LEVEL_50:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A return (ERR_ARRAY_LEVEL);
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_0:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_1:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_1E:
2N/A case RAID_LEVEL_5:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_10:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A case RAID_LEVEL_50:
2N/A return (ERR_ARRAY_LAYOUT);
2N/A return (ERR_ARRAY_LEVEL);
2N/A for (i = 0; i < num_of_comp; ++i) {
2N/A return (ERR_DEVICE_TYPE);
2N/A return (ERR_DEVICE_DUP);
2N/A return (ERR_DISK_STATE);
2N/A (void **)(&controller_attr));
2N/A return (ERR_DRIVER_ACROSS);
2N/A return (ERR_DISK_SEG_AMOUNT);
2N/A if (min_disk_capacity == 0) {
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DISK_SPACE);
2N/A return (ERR_DISK_NOT_EMPTY);
2N/A return (ERR_ARRAY_AMOUNT);
2N/A return (ERR_DRIVER_CLOSED);
2N/A case RAID_LEVEL_0:
2N/A return (ERR_ARRAY_LEVEL);
2N/A case RAID_LEVEL_1:
2N/A return (ERR_ARRAY_LEVEL);
2N/A case RAID_LEVEL_1E:
2N/A return (ERR_ARRAY_LEVEL);
2N/A case RAID_LEVEL_5:
2N/A return (ERR_ARRAY_LEVEL);
2N/A case RAID_LEVEL_10:
2N/A return (ERR_ARRAY_LEVEL);
2N/A case RAID_LEVEL_50:
2N/A return (ERR_ARRAY_LEVEL);
2N/A return (ERR_ARRAY_LEVEL);
2N/A for (i = 0; i < num_of_comp; ++i) {
2N/A return (ERR_ARRAY_SIZE);
2N/A return (ERR_ARRAY_SIZE);
2N/A return (ERR_ARRAY_SIZE);
2N/A char **plugin_err_str)
2N/A return (controller_obj_id);
2N/A (void **)(&controller_attr));
2N/A return (ERR_DRIVER_CLOSED);
2N/A char **plugin_err_str)
2N/A OBJ_TYPE_ARRAY)) {
2N/A return (ERR_DEVICE_TYPE);
2N/A disk_obj_id)) {
2N/A return (ERR_DRIVER_ACROSS);
2N/A (void **)(&controller_attr));
2N/A return (ERR_DISK_STATE);
2N/A (void **)(&diskseg_attr));
2N/A return (ERR_DISK_NOT_EMPTY);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DEVICE_TYPE);
2N/A (void **)(&array_attr));
2N/A return (ERR_ARRAY_LEVEL);
2N/A array_obj_id)) {
2N/A return (ERR_DRIVER_ACROSS);
2N/A (void **)(&arraypart_attr));
2N/A return (ERR_DISK_SPACE);
2N/A return (ERR_DISK_SPACE);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_OP_NO_IMPL);
2N/A char **plugin_err_str)
2N/A return (ERR_DEVICE_TYPE);
2N/A disk_obj_id)) {
2N/A return (ERR_DRIVER_ACROSS);
2N/A (void **)(&controller_attr));
2N/A return (ERR_DISK_STATE);
2N/A return (ERR_DISK_STATE);
2N/A return (ERR_DEVICE_TYPE);
2N/A (void **)(&array_attr));
2N/A array_obj_id)) {
2N/A return (ERR_DRIVER_ACROSS);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_OP_ILLEGAL);
2N/A return (ERR_DRIVER_CLOSED);
2N/A return (ERR_OP_NO_IMPL);
2N/A return (ERR_DEVICE_UNCLEAN);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_OVERFLOW);
2N/A case OBJ_TYPE_CONTROLLER:
2N/A case OBJ_TYPE_ARRAY:
2N/A case OBJ_TYPE_DISK:
2N/A case OBJ_TYPE_HSP:
2N/A case OBJ_TYPE_ARRAY_PART:
2N/A case OBJ_TYPE_DISK_SEG:
2N/A case OBJ_TYPE_TASK:
2N/A case OBJ_TYPE_PROP:
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_OVERFLOW);
2N/A return (ERR_DEVICE_DUP);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_type_id_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_INVALID);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_TYPE);
2N/Astatic raid_obj_status_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_id_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/Astatic raid_obj_handle_t
2N/A return (ERR_DEVICE_NOENT);
2N/A return (ERR_DEVICE_NOENT);
2N/A if (hash_slots == 0)
2N/A return (ERR_OP_ILLEGAL);
2N/A for (i = 0; i < hash_slots; i++)
2N/A return (ERR_DEVICE_DUP);
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/A return (ERR_DRIVER_NOT_FOUND);
2N/Astatic raid_lib_t *
2N/Astatic raid_lib_t *
2N/A (void **)(&controller_attr));