tfs: support disable create new file

This commit is contained in:
kailixu 2024-06-17 06:14:49 +08:00
parent e3645def98
commit 4ed3b30352
7 changed files with 22 additions and 30 deletions

View File

@ -539,8 +539,6 @@ typedef enum ELogicConditionType {
#define TFS_MAX_LEVEL (TFS_MAX_TIERS - 1)
#define TFS_PRIMARY_LEVEL 0
#define TFS_PRIMARY_ID 0
#define TFS_ENTRY_DISABLE 0
#define TFS_ENTRY_ENABLE 1
#define TFS_MIN_DISK_FREE_SIZE 50 * 1024 * 1024
enum { TRANS_STAT_INIT = 0, TRANS_STAT_EXECUTING, TRANS_STAT_EXECUTED, TRANS_STAT_ROLLBACKING, TRANS_STAT_ROLLBACKED };
@ -551,7 +549,7 @@ typedef struct {
char dir[TSDB_FILENAME_LEN];
int32_t level;
int8_t primary;
int8_t enable;
int8_t disable; // disable create new file
} SDiskCfg;
typedef struct {

View File

@ -326,7 +326,7 @@ int32_t taosSetTfsCfg(SConfig *pCfg) {
tstrncpy(tsDiskCfg[0].dir, pItem->str, TSDB_FILENAME_LEN);
tsDiskCfg[0].level = 0;
tsDiskCfg[0].primary = 1;
tsDiskCfg[0].enable = 1;
tsDiskCfg[0].disable = 0;
tstrncpy(tsDataDir, pItem->str, PATH_MAX);
if (taosMulMkDir(tsDataDir) != 0) {
uError("failed to create dataDir:%s", tsDataDir);

View File

@ -110,7 +110,7 @@ static bool dmCheckDiskSpace() {
int32_t dmDiskInit() {
SDnode *pDnode = dmInstance();
SDiskCfg dCfg = {.level = 0, .primary = 1, .enable = 1};
SDiskCfg dCfg = {.level = 0, .primary = 1, .disable = 0};
tstrncpy(dCfg.dir, tsDataDir, TSDB_FILENAME_LEN);
SDiskCfg *pDisks = tsDiskCfg;
int32_t numOfDisks = tsDiskCfgNum;

View File

@ -368,7 +368,7 @@ TEST(testCase, tSma_Data_Insert_Query_Test) {
SDiskCfg pDisks = {0};
pDisks.level = 0;
pDisks.primary = 1;
pDisks.enable = 1;
pDisks.disable = 0;
strncpy(pDisks.dir, TD_DATA_DIR_PATH, TSDB_FILENAME_LEN);
int32_t numOfDisks = 1;
pTsdb->pTfs = tfsOpen(&pDisks, numOfDisks);

View File

@ -494,8 +494,8 @@ static int32_t tfsMount(STfs *pTfs, SDiskCfg *pCfg) {
return -1;
}
if (pCfg->enable == 0) {
fInfo("skip to mount disk %s to level %d since enable is %" PRIi8, pCfg->dir, pCfg->level, pCfg->enable);
if (pCfg->disable == 1) {
fInfo("skip to mount disk %s to level %d since disable is %" PRIi8, pCfg->dir, pCfg->level, pCfg->disable);
return 0;
}
@ -530,8 +530,8 @@ static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
return -1;
}
if (pCfg->enable < 0 || pCfg->enable > 1) {
fError("failed to mount %s to FS since invalid enable %" PRIi8, pCfg->dir, pCfg->enable);
if (pCfg->disable < 0 || pCfg->disable > 1) {
fError("failed to mount %s to FS since invalid disable %" PRIi8, pCfg->dir, pCfg->disable);
terrno = TSDB_CODE_FS_INVLD_CFG;
return -1;
}
@ -543,12 +543,6 @@ static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
return -1;
}
if (pCfg->enable == 0) {
fError("failed to mount %s to FS since disk is primary but enable %" PRIi8 " not 1", pCfg->dir, pCfg->enable);
terrno = TSDB_CODE_FS_INVLD_CFG;
return -1;
}
if (TFS_PRIMARY_DISK(pTfs) != NULL) {
fError("failed to mount %s to FS since duplicate primary mount", pCfg->dir);
terrno = TSDB_CODE_FS_DUP_PRIMARY;

View File

@ -37,7 +37,7 @@ TEST_F(TfsTest, 01_Open_Close) {
tstrncpy(dCfg.dir, root, TSDB_FILENAME_LEN);
dCfg.level = 0;
dCfg.primary = 1;
dCfg.enable = 1;
dCfg.disable = 0;
taosRemoveDir(root);
STfs *pTfs = tfsOpen(&dCfg, 1);
@ -64,7 +64,7 @@ TEST_F(TfsTest, 02_AllocDisk) {
tstrncpy(dCfg.dir, root, TSDB_FILENAME_LEN);
dCfg.level = 0;
dCfg.primary = 1;
dCfg.enable = 1;
dCfg.disable = 0;
taosRemoveDir(root);
taosMkDir(root);
@ -116,7 +116,7 @@ TEST_F(TfsTest, 03_Dir) {
tstrncpy(dCfg.dir, root, TSDB_FILENAME_LEN);
dCfg.level = 0;
dCfg.primary = 1;
dCfg.enable = 1;
dCfg.disable = 0;
taosRemoveDir(root);
taosMkDir(root);
@ -333,39 +333,39 @@ TEST_F(TfsTest, 05_MultiDisk) {
tstrncpy(dCfg[0].dir, root01, TSDB_FILENAME_LEN);
dCfg[0].level = 0;
dCfg[0].primary = 0;
dCfg[0].enable = 1;
dCfg[0].disable = 0;
tstrncpy(dCfg[1].dir, root00, TSDB_FILENAME_LEN);
dCfg[1].level = 0;
dCfg[1].primary = 0;
dCfg[1].enable = 1;
dCfg[1].disable = 0;
tstrncpy(dCfg[2].dir, root20, TSDB_FILENAME_LEN);
dCfg[2].level = 2;
dCfg[2].primary = 0;
dCfg[2].enable = 1;
dCfg[2].disable = 0;
tstrncpy(dCfg[3].dir, root21, TSDB_FILENAME_LEN);
dCfg[3].level = 2;
dCfg[3].primary = 0;
dCfg[3].enable = 1;
dCfg[3].disable = 0;
tstrncpy(dCfg[4].dir, root22, TSDB_FILENAME_LEN);
dCfg[4].level = 2;
dCfg[4].primary = 0;
dCfg[4].enable = 1;
dCfg[4].disable = 0;
tstrncpy(dCfg[5].dir, root23, TSDB_FILENAME_LEN);
dCfg[5].level = 2;
dCfg[5].primary = 0;
dCfg[5].enable = 1;
dCfg[5].disable = 0;
tstrncpy(dCfg[6].dir, root10, TSDB_FILENAME_LEN);
dCfg[6].level = 1;
dCfg[6].primary = 0;
dCfg[6].enable = 1;
dCfg[6].disable = 0;
tstrncpy(dCfg[7].dir, root11, TSDB_FILENAME_LEN);
dCfg[7].level = 1;
dCfg[7].primary = 0;
dCfg[7].enable = 1;
dCfg[7].disable = 0;
tstrncpy(dCfg[8].dir, root12, TSDB_FILENAME_LEN);
dCfg[8].level = 1;
dCfg[8].primary = 0;
dCfg[8].enable = 1;
dCfg[8].disable = 0;
taosRemoveDir(root00);
taosRemoveDir(root01);

View File

@ -259,7 +259,7 @@ static int32_t cfgSetTimezone(SConfigItem *pItem, const char *value, ECfgSrcType
}
static int32_t cfgSetTfsItem(SConfig *pCfg, const char *name, const char *value, const char *level, const char *primary,
const char *enable, ECfgSrcType stype) {
const char *disable, ECfgSrcType stype) {
taosThreadMutexLock(&pCfg->lock);
SConfigItem *pItem = cfgGetItem(pCfg, name);
@ -283,7 +283,7 @@ static int32_t cfgSetTfsItem(SConfig *pCfg, const char *name, const char *value,
tstrncpy(cfg.dir, pItem->str, sizeof(cfg.dir));
cfg.level = level ? atoi(level) : 0;
cfg.primary = primary ? atoi(primary) : 1;
cfg.enable = (enable && enable[0]) ? atoi(enable) : 1;
cfg.disable = disable ? atoi(disable) : 0;
void *ret = taosArrayPush(pItem->array, &cfg);
if (ret == NULL) {
terrno = TSDB_CODE_OUT_OF_MEMORY;