diff --git a/src/gausskernel/ddes/ddes_commit_id b/src/gausskernel/ddes/ddes_commit_id index dadcd6bd9..61cb042df 100644 --- a/src/gausskernel/ddes/ddes_commit_id +++ b/src/gausskernel/ddes/ddes_commit_id @@ -1,3 +1,3 @@ dms_commit_id=6341f295057ae1f987f991b3a060acfb97e143c5 -dss_commit_id=4e1bd9206bc6745574bcae363af6c934ba72a8aa +dss_commit_id=04b09e0414525a7bb78b8baaabfedcc675f91102 cbb_commit_id=d22f1e92dc9fc75efa8f0f027321faf0fd1c770b diff --git a/src/gausskernel/po/zh_CN.po b/src/gausskernel/po/zh_CN.po index ae92e4dd6..2f061646a 100644 --- a/src/gausskernel/po/zh_CN.po +++ b/src/gausskernel/po/zh_CN.po @@ -104690,8 +104690,8 @@ msgstr "无法找到文件\"%s\": " #: storage/smgr/segment/data_file.cpp:57 #, c-format -msgid "dv_open_file filename: %s, flags is %lu, mode is %d, fd is %d" -msgstr "dv_open_file filename: %s, flags is %lu, mode is %d, fd is %d" +msgid "dv_open_file filename: %s, flags is %d, mode is %d, fd is %d" +msgstr "dv_open_file filename: %s, flags is %d, mode is %d, fd is %d" #: storage/smgr/segment/data_file.cpp:67 #, c-format diff --git a/src/gausskernel/storage/smgr/segment/data_file.cpp b/src/gausskernel/storage/smgr/segment/data_file.cpp index dd54725d1..16253c639 100644 --- a/src/gausskernel/storage/smgr/segment/data_file.cpp +++ b/src/gausskernel/storage/smgr/segment/data_file.cpp @@ -31,13 +31,14 @@ #include "storage/smgr/fd.h" #include "storage/smgr/knl_usync.h" #include "storage/smgr/segment.h" +#include "storage/dss/dss_adaptor.h" #include "storage/file/fio_device.h" #include "postmaster/pagerepair.h" #include "ddes/dms/ss_common_attr.h" static const mode_t SEGMENT_FILE_MODE = S_IWUSR | S_IRUSR; -static int dv_open_file(char *filename, uint32 flags, int mode); +static int dv_open_file(char *filename, int flags, int mode); static void dv_close_file(int fd); static void df_open_target_files(SegLogicFile *sf, int targetno); @@ -49,12 +50,12 @@ void df_extend_file_vector(SegLogicFile *sf); * We can not use virtual fd because space data files are accessed by multi-thread. * Callers must handle fd < 0 */ -static int dv_open_file(char *filename, uint32 flags, int mode) +static int dv_open_file(char *filename, int flags, int mode) { int fd = -1; fd = BasicOpenFile(filename, flags, mode); int err = errno; - ereport(LOG, (errmsg("dv_open_file filename: %s, flags is %d, mode is %lu, fd is %d", filename, flags, mode, fd))); + ereport(LOG, (errmsg("dv_open_file filename: %s, flags is %d, mode is %d, fd is %d", filename, flags, mode, fd))); errno = err; return fd; } @@ -106,7 +107,7 @@ void df_create_file(SegLogicFile *sf, bool redo) } } else { // File not exists - uint32 flags = O_RDWR | O_CREAT | O_EXCL | PG_BINARY; + int flags = O_RDWR | O_CREAT | O_EXCL | PG_BINARY; if (sf->segfiles != NULL) { ereport(LOG, (errmodule(MOD_SEGMENT_PAGE), @@ -154,7 +155,7 @@ bool df_ss_update_segfile_size(SegLogicFile *sf, BlockNumber target_block) return false; } - uint32 flags = O_RDWR | PG_BINARY; + int flags = O_RDWR | PG_BINARY; /* need palloc segfiles if file_num is 0 */ if (sf->vector_capacity == 0) { df_extend_file_vector(sf); @@ -388,7 +389,7 @@ void df_open_all_file(RepairFileKey key, int32 max_sliceno) { int fd = -1; char *filename = NULL; - uint32 flags = O_RDWR | PG_BINARY; + int flags = O_RDWR | PG_BINARY; Oid relNode = key.relfilenode.relNode; ForkNumber forknum = key.forknum; SegSpace *spc = spc_init_space_node(key.relfilenode.spcNode, key.relfilenode.dbNode); @@ -436,7 +437,7 @@ void df_open_all_file(RepairFileKey key, int32 max_sliceno) static void df_open_target_files(SegLogicFile *sf, int targetno) { int sliceno = sf->file_num; - uint32 flags = O_RDWR | PG_BINARY; + int flags = O_RDWR | PG_BINARY; for (;;) { if (targetno != 0 && targetno < sliceno) { @@ -501,7 +502,12 @@ void df_extend_internal(SegLogicFile *sf) if (new_sliceno >= sf->vector_capacity) { df_extend_file_vector(sf); } - int new_fd = dv_open_file(filename, O_RDWR | O_CREAT, SEGMENT_FILE_MODE); + int new_fd; + if (ENABLE_DSS) { + new_fd = dv_open_file(filename, O_RDWR | O_CREAT | DSS_FT_NODE_FLAG_INNER_INITED, SEGMENT_FILE_MODE); + } else { + new_fd = dv_open_file(filename, O_RDWR | O_CREAT, SEGMENT_FILE_MODE); + } if (new_fd < 0) { ereport(ERROR, (errcode_for_file_access(), errmsg("[segpage] could not create file \"%s\": %m", filename))); } @@ -612,7 +618,7 @@ void df_shrink(SegLogicFile *sf, BlockNumber target) if (unlink(filename) != 0) { /* The fd is closed, if we can not open it, next access to this file will panic */ - uint32 flags = O_RDWR | O_EXCL | PG_BINARY; + int flags = O_RDWR | O_EXCL | PG_BINARY; sf->segfiles[i].fd = dv_open_file(filename, flags, SEGMENT_FILE_MODE); if (sf->segfiles[i].fd < 0) { ereport(PANIC, (errmsg("Unlink file %s failed and unable to read it again.", filename))); diff --git a/src/include/storage/dss/dss_adaptor.h b/src/include/storage/dss/dss_adaptor.h index ba95227b0..481d3fe91 100644 --- a/src/include/storage/dss/dss_adaptor.h +++ b/src/include/storage/dss/dss_adaptor.h @@ -30,6 +30,7 @@ #include "dss_api_def.h" #define SS_LIBDSS_NAME "libdssapi.so" +#define DSS_FT_NODE_FLAG_INNER_INITED 0x80000000 int dss_device_init(const char *conn_path, bool enable_dss); // callback for register dssapi