* Copyright (c) 2022 Huawei Technologies Co.,Ltd.
*
* openGauss is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ---------------------------------------------------------------------------------------
*
* dss_api_def.h
* Defines the DSS data structure.
*
*
* IDENTIFICATION
* src/include/storage/dss/dss_api_def.h
*
* ---------------------------------------------------------------------------------------
*/
#ifndef __DSS_API_DEF_H
#define __DSS_API_DEF_H
#include "time.h"
struct __dss_dir;
typedef struct __dss_dir *dss_dir_handle;
typedef enum en_dss_log_level {
DSS_LOG_LEVEL_ERROR = 0,
DSS_LOG_LEVEL_WARN,
DSS_LOG_LEVEL_INFO,
DSS_LOG_LEVEL_COUNT,
} dss_log_level_t;
typedef enum en_dss_log_id {
DSS_LOG_ID_RUN = 0,
DSS_LOG_ID_DEBUG,
DSS_LOG_ID_COUNT,
} dss_log_id_t;
#define DSS_SEEK_MAXWR 3
#define DSS_MAX_NAME_LEN 64
#define DSS_FILE_PATH_MAX_LENGTH (SIZE_K(1) + 1)
#define DSS_HANDLE_BASE 0x20000000
#define DSS_CONN_NEVER_TIMEOUT (-1)
#define DSS_VERSION_MAX_LEN 256
typedef enum en_dss_item_type { DSS_PATH, DSS_FILE, DSS_LINK } dss_item_type_t;
typedef struct st_dss_dirent {
dss_item_type_t d_type;
char d_name[DSS_MAX_NAME_LEN];
} dss_dirent_t;
typedef enum en_dss_server_status {
DSS_STATUS_NORMAL = 0,
DSS_STATUS_READONLY,
DSS_STATUS_READWRITE,
} dss_server_status_t;
typedef struct st_dss_stat {
unsigned long long size;
unsigned long long written_size;
time_t create_time;
time_t update_time;
char name[DSS_MAX_NAME_LEN];
dss_item_type_t type;
} dss_stat_t;
typedef struct st_dss_dirent *dss_dir_item_t;
typedef struct st_dss_stat *dss_stat_info_t;
typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, const char *code_file_name,
unsigned int code_line_num, const char *module_name, const char *format, ...);
#define DSS_LOCAL_MAJOR_VER_WEIGHT 1000000
#define DSS_LOCAL_MINOR_VER_WEIGHT 1000
#define DSS_LOCAL_MAJOR_VERSION 0
#define DSS_LOCAL_MINOR_VERSION 0
#define DSS_LOCAL_VERSION 5
#define DSS_SUCCESS 0
#define DSS_ERROR (-1)
* 2.ERR_DSS_SUBMODEL_ACTION_DETAIL, _DETAIL is optional which indicates the error cause.
*/
#define ERR_DSS_FLOOR 2000
#define ERR_DSS_VG_CREATE 2000
#define ERR_DSS_VG_LOCK 2010
#define ERR_DSS_VG_REMOVE 2020
#define ERR_DSS_VG_CHECK 2030
#define ERR_DSS_VG_CHECK_NOT_INIT 2031
#define ERR_DSS_VG_NOT_EXIST 2040
#define ERR_DSS_VOLUME_SYSTEM_IO 2050
#define ERR_DSS_VOLUME_OPEN 2060
#define ERR_DSS_VOLUME_READ 2070
#define ERR_DSS_VOLUME_WRITE 2080
#define ERR_DSS_VOLUME_SEEK 2090
#define ERR_DSS_VOLUME_ADD 2100
#define ERR_DSS_VOLUME_ADD_EXISTED 2101
#define ERR_DSS_VOLUME_REMOVE 2110
#define ERR_DSS_VOLUME_REMOVE_NOEXIST 2111
#define ERR_DSS_VOLUME_REMOVE_NONEMPTY 2112
#define ERR_DSS_VOLUME_REMOVE_SUPER_BLOCK 2113
#define ERR_DSS_FILE_SEEK 2130
#define ERR_DSS_FILE_REMOVE 2140
#define ERR_DSS_FILE_REMOVE_OPENING 2141
#define ERR_DSS_FILE_RENAME 2150
#define ERR_DSS_FILE_RENAME_DIFF_VG 2151
#define ERR_DSS_FILE_RENAME_EXIST 2152
#define ERR_DSS_FILE_RENAME_OPENING_REMOTE 2153
#define ERR_DSS_FILE_CLOSE 2160
#define ERR_DSS_FILE_CREATE 2170
#define ERR_DSS_FILE_RDWR 2180
#define ERR_DSS_FILE_RDWR_INSUFF_PER 2181
#define ERR_DSS_FILE_NOT_EXIST 2190
#define ERR_DSS_FILE_OPENING_REMOTE 2191
#define ERR_DSS_FILE_TYPE_MISMATCH 2192
#define ERR_DSS_FILE_PATH_ILL 2193
#define ERR_DSS_FILE_INVALID_SIZE 2194
#define ERR_DSS_FILE_INVALID_WRITTEN_SIZE 2195
#define ERR_DSS_DIR_REMOVE 2230
#define ERR_DSS_DIR_REMOVE_NOT_EMPTY 2231
#define ERR_DSS_DIR_CREATE 2240
#define ERR_DSS_DIR_CREATE_DUPLICATED 2241
#define ERR_DSS_LINK_READ 2280
#define ERR_DSS_LINK_READ_NOT_LINK 2281
#define ERR_DSS_LINK_CREATE 2290
#define ERR_DSS_CONFIG_FILE_OVERSIZED 2300
#define ERR_DSS_CONFIG_LOAD 2301
#define ERR_DSS_CONFIG_LINE_OVERLONG 2302
#define ERR_DSS_REDO_ILL 2320
#define ERR_DSS_OAMAP_INSERT 2350
#define ERR_DSS_OAMAP_INSERT_DUP_KEY 2351
#define ERR_DSS_OAMAP_FETCH 2352
#define ERR_DSS_SKLIST_ERR 2360
#define ERR_DSS_SKLIST_NOT_INIT 2361
#define ERR_DSS_SKLIST_NOT_EXIST 2362
#define ERR_DSS_SKLIST_EXIST 2363
#define ERR_DSS_SHM_CREATE 2370
#define ERR_DSS_SHM_CHECK 2371
#define ERR_DSS_SHM_LOCK 2372
#define ERR_DSS_GA_INIT 2380
#define ERR_DSS_GA_GET_ADDR 2381
#define ERR_DSS_SESSION_INVALID_ID 2390
#define ERR_DSS_SESSION_CREATE 2391
#define ERR_DSS_INVALID_PARAM 2400
#define ERR_DSS_NO_SPACE 2401
#define ERR_DSS_ENV_NOT_INITIALIZED 2402
#define ERR_DSS_CLI_EXEC_FAIL 2403
#define ERR_DSS_FNODE_CHECK 2404
#define ERR_DSS_LOCK_TIMEOUT 2405
#define ERR_DSS_SERVER_IS_DOWN 2406
#define ERR_DSS_CHECK_SIZE 2407
#define ERR_DSS_MES_ILL 2408
#define ERR_DSS_STRING_TOO_LONG 2409
#define ERR_DSS_TCP_TIMEOUT_REMAIN 2410
#define ERR_DSS_UDS_INVALID_URL 2411
#define ERR_DSS_RECV_MSG_FAILED 2412
#define ERR_DSS_INIT_LOGGER_FAILED 2414
#define ERR_DSS_OUT_OF_MEM 2415
#define ERR_DSS_INVALID_ID 2416
#define ERR_DSS_PROCESS_REMOTE 2417
#define ERR_DSS_CONNECT_FAILED 2418
#define ERR_DSS_VERSION_NOT_MATCH 2419
#define ERR_DSS_INVALID_BLOCK_TYPE 2420
#define ERR_DSS_CEIL 2500
#endif