diff --git a/src/common/backend/utils/error/elog.cpp b/src/common/backend/utils/error/elog.cpp index 22454bfc2df2bf1c157ae8e4d18bbb7409e45644..3fb6f5600c3c407bfbb01a93f218aab80fa96672 100644 --- a/src/common/backend/utils/error/elog.cpp +++ b/src/common/backend/utils/error/elog.cpp @@ -897,7 +897,6 @@ int errcode_for_file_access(void) /* File not found */ case ENOENT: /* No such file or directory */ case ERR_DSS_FILE_NOT_EXIST: /* No such file in dss */ - case ERR_DSS_DIR_NOT_EXIST: /* No such directory in dss */ edata->sqlerrcode = ERRCODE_UNDEFINED_FILE; break; diff --git a/src/gausskernel/ddes/ddes_commit_id b/src/gausskernel/ddes/ddes_commit_id index 811136323324188261eb365f1ef20ddb649e0aae..6eb39ddee16986ce9f42c1eeb3c5a11a51f83563 100644 --- a/src/gausskernel/ddes/ddes_commit_id +++ b/src/gausskernel/ddes/ddes_commit_id @@ -1,3 +1,3 @@ dms_commit_id=d7095d9b169a766461b00aa4bc0e19b4fc8ea657 -dss_commit_id=87adc9bafa80354bb138a6bf9f8ff63077f3aebf +dss_commit_id=0a759717486f91cc91b19ca6b0cf0d2e48f08fcb cbb_commit_id=7a7e77f3dec94b6b958bea12c97b92d21dfa0bb5 \ No newline at end of file diff --git a/src/gausskernel/storage/dss/fio_dss.cpp b/src/gausskernel/storage/dss/fio_dss.cpp index 3feac456c8a418fb3dac2be694c9cec6348da8a3..60ad17bbaea203839a8b86bb750536cdeeaabdca 100644 --- a/src/gausskernel/storage/dss/fio_dss.cpp +++ b/src/gausskernel/storage/dss/fio_dss.cpp @@ -80,20 +80,32 @@ bool is_dss_fd(int handle) return false; } +int parse_errcode_from_errormsg(const char* errormsg) { + const char *errcode_str = strstr(errormsg, "errcode:"); + if (errcode_str) { + errcode_str += strlen("errcode:"); + return atoi(errcode_str); + } + return ERR_DSS_PROCESS_REMOTE; +} + void dss_set_errno(int *errcode) { int errorcode = 0; const char *errormsg = NULL; g_dss_device_op.dss_get_error(&errorcode, &errormsg); - errno = errorcode; + if (errorcode == ERR_DSS_PROCESS_REMOTE) { + errno = parse_errcode_from_errormsg(errormsg); + } else { + errno = errorcode; + } if (errcode != NULL) { *errcode = errorcode; } } - int dss_access_file(const char *file_name, int mode) { struct stat statbuf = {0}; diff --git a/src/gausskernel/storage/file/fio_device.cpp b/src/gausskernel/storage/file/fio_device.cpp index 021351115d5b7a153a35eef901f22109d6b5a7aa..8fff4e5b712e55e494f52af59b0a3523a4855240 100644 --- a/src/gausskernel/storage/file/fio_device.cpp +++ b/src/gausskernel/storage/file/fio_device.cpp @@ -50,5 +50,5 @@ bool is_file_exist(int err) bool is_file_delete(int err) { - return (err == ENOENT || err == ERR_DSS_DIR_NOT_EXIST || err == ERR_DSS_FILE_NOT_EXIST); + return (err == ENOENT || err == ERR_DSS_FILE_NOT_EXIST); } \ No newline at end of file diff --git a/src/include/storage/dss/dss_api_def.h b/src/include/storage/dss/dss_api_def.h index 7e9b62920ee73127911d040d15c2718a598df563..7c97a9a48a41f15a919b5e0d1d262e8dae296e73 100644 --- a/src/include/storage/dss/dss_api_def.h +++ b/src/include/storage/dss/dss_api_def.h @@ -93,8 +93,7 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, * 2.ERR_DSS_SUBMODEL_ACTION_DETAIL, _DETAIL is optional which indicates the error cause. */ #define ERR_DSS_FLOOR 2000 - -// vg error [2000, 2060) +// vg error [2000, 2050) #define ERR_DSS_VG_CREATE 2000 #define ERR_DSS_VG_LOCK 2010 #define ERR_DSS_VG_REMOVE 2020 @@ -102,7 +101,8 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, #define ERR_DSS_VG_CHECK_NOT_INIT 2031 #define ERR_DSS_VG_NOT_EXIST 2040 -// volumn error [2060, 2130) +// volumn error [2050, 2130) +#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 @@ -113,24 +113,31 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, #define ERR_DSS_VOLUME_REMOVE_NOEXIST 2111 #define ERR_DSS_VOLUME_REMOVE_NONEMPTY 2112 #define ERR_DSS_VOLUME_REMOVE_SUPER_BLOCK 2113 - + // file error [2130, 2230) #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 // dir error [2230, 2280) #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_DIR_NOT_EXIST 2270 - // link error [2280, 2300) #define ERR_DSS_LINK_READ 2280 #define ERR_DSS_LINK_READ_NOT_LINK 2281 @@ -153,7 +160,9 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, #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 @@ -171,8 +180,13 @@ typedef void (*dss_log_output)(dss_log_id_t log_type, dss_log_level_t log_level, #define ERR_DSS_TCP_TIMEOUT_REMAIN 2410 #define ERR_DSS_UDS_INVALID_URL 2411 #define ERR_DSS_RECV_MSG_FAILED 2412 -#define ERR_DSS_LINK_NOT_EXIST 2413 - +#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 // __DSS_API_DEF_H diff --git a/src/include/storage/smgr/smgr.h b/src/include/storage/smgr/smgr.h index 9acbb1643392fae636d70d249ba5897c09d7827d..5bb3af588559b93f657fb06098594d30f3dbcc6a 100644 --- a/src/include/storage/smgr/smgr.h +++ b/src/include/storage/smgr/smgr.h @@ -147,7 +147,7 @@ enum SMGR_READ_STATUS { * a pending fsync request getting canceled ... see mdsync). */ #ifndef WIN32 -#define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == ERR_DSS_DIR_NOT_EXIST || (err) == ERR_DSS_FILE_NOT_EXIST) +#define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == ERR_DSS_FILE_NOT_EXIST) #else #define FILE_POSSIBLY_DELETED(err) ((err) == ENOENT || (err) == EACCES) #endif