/* * 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 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _STMF_SBD_IOCTL_H #define _STMF_SBD_IOCTL_H #ifdef __cplusplus extern "C" { #endif #define MEMDISK_MIN_SIZE (1024 * 1024) #define MEMDISK_MAX_SIZE (1024 * 1024 * 1024) /* * ioctl cmds */ #define SBD_IOCTL_CMD (((uint32_t)'S') << 24) #define SBD_REGISTER_LU (SBD_IOCTL_CMD | 0x01) #define SBD_GET_LU_ATTR (SBD_IOCTL_CMD | 0x02) #define SBD_GET_LU_LIST (SBD_IOCTL_CMD | 0x03) #define SBD_DEREGISTER_LU (SBD_IOCTL_CMD | 0x04) #define SBD_MODIFY_LU (SBD_IOCTL_CMD | 0x05) typedef enum rlc_flags { RLC_LU_TYPE_MEMDISK = 0x01, RLC_LU_TYPE_FILEDISK = 0x02, RLC_CREATE_LU = 0x04, /* Initialize metadata */ RLC_REGISTER_LU = 0x10, RLC_DEREGISTER_LU = 0x20, RLC_FORCE_OP = 0x40 } rlc_flags_t; typedef enum rlc_ret { RLC_RET_META_CREATION_FAILED = 0x01, RLC_RET_LU_NOT_INITIALIZED, RLC_RET_FILE_ALREADY_REGISTERED, RLC_RET_GUID_ALREADY_REGISTERED, RLC_RET_REGISTER_SST_FAILED, RLC_RET_DEREGISTER_SST_FAILED, RLC_RET_FILE_LOOKUP_FAILED, RLC_RET_WRONG_FILE_TYPE, RLC_RET_FILE_OPEN_FAILED, RLC_RET_FILE_GETATTR_FAILED, RLC_RET_FILE_SIZE_ERROR, RLC_RET_FILE_ALIGN_ERROR, RLC_RET_SIZE_OUT_OF_RANGE, RLC_RET_SIZE_NOT_SUPPORTED_BY_FS, RLC_RET_MAX_VAL } rlc_ret_t; typedef struct register_lu_cmd { uint32_t total_struct_size; rlc_flags_t flags; uint64_t lu_size; /* For memdisk only */ rlc_ret_t return_code; uint32_t filesize_nbits; stmf_status_t op_ret; uint64_t lu_handle; uint8_t guid[16]; /* For reporting back duplicate GUID */ char name[8]; } register_lu_cmd_t; typedef struct deregister_lu_cmd { uint32_t total_struct_size; rlc_flags_t flags; rlc_ret_t return_code; uint32_t rsvd; uint8_t guid[16]; } deregister_lu_cmd_t; typedef struct modify_lu_cmd { uint32_t total_struct_size; rlc_flags_t flags; uint64_t lu_size; rlc_ret_t return_code; uint32_t filesize_nbits; stmf_status_t op_ret; uint8_t guid[16]; char name[8]; } modify_lu_cmd_t; typedef struct sbd_lu_attr { uint32_t total_struct_size; rlc_flags_t flags; /* to find out the type */ int max_name_length; uint32_t rsvd; uint64_t lu_handle; uint64_t total_size; uint64_t data_size; uint8_t guid[16]; char name[8]; } sbd_lu_attr_t; typedef struct sbd_lu_list { uint32_t total_struct_size; uint32_t count_in; uint32_t count_out; uint32_t rsvd; uint64_t handles[1]; } sbd_lu_list_t; #ifdef __cplusplus } #endif #endif /* _STMF_SBD_IOCTL_H */