Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
8c93f9d7
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8c93f9d7
编写于
1月 21, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more progress
上级
6628a47e
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
62 addition
and
11 deletion
+62
-11
src/inc/tfs.h
src/inc/tfs.h
+1
-0
src/tfs/src/tfs.c
src/tfs/src/tfs.c
+14
-8
src/tsdb/src/tsdbFS.c
src/tsdb/src/tsdbFS.c
+45
-3
src/tsdb/src/tsdbFile.c
src/tsdb/src/tsdbFile.c
+1
-0
src/tsdb/src/tsdbSync.c
src/tsdb/src/tsdbSync.c
+1
-0
未找到文件。
src/inc/tfs.h
浏览文件 @
8c93f9d7
...
...
@@ -74,6 +74,7 @@ void tfsbasename(const TFILE *pf, char *dest);
void
tfsdirname
(
const
TFILE
*
pf
,
char
*
dest
);
// DIR APIs ====================================
int
tfsMkdirAt
(
const
char
*
rname
,
int
level
,
int
id
);
int
tfsMkdir
(
const
char
*
rname
);
int
tfsRmdir
(
const
char
*
rname
);
int
tfsRename
(
char
*
orname
,
char
*
nrname
);
...
...
src/tfs/src/tfs.c
浏览文件 @
8c93f9d7
...
...
@@ -237,18 +237,24 @@ void tfsdirname(const TFILE *pf, char *dest) {
}
// DIR APIs ====================================
int
tfsMkdir
(
const
char
*
rname
)
{
char
aname
[
TSDB_FILENAME_LEN
]
=
"
\0
"
;
int
tfsMkdirAt
(
const
char
*
rname
,
int
level
,
int
id
)
{
SDisk
*
pDisk
=
TFS_DISK_AT
(
level
,
id
);
char
aname
[
TSDB_FILENAME_LEN
];
snprintf
(
aname
,
TSDB_FILENAME_LEN
,
"%s/%s"
,
DISK_DIR
(
pDisk
),
rname
);
if
(
taosMkDir
(
aname
,
0755
)
!=
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
return
0
;
}
int
tfsMkdir
(
const
char
*
rname
)
{
for
(
int
level
=
0
;
level
<
TFS_NLEVEL
();
level
++
)
{
STier
*
pTier
=
TFS_TIER_AT
(
level
);
for
(
int
id
=
0
;
id
<
TIER_NDISKS
(
pTier
);
id
++
)
{
SDisk
*
pDisk
=
DISK_AT_TIER
(
pTier
,
id
);
snprintf
(
aname
,
TSDB_FILENAME_LEN
,
"%s/%s"
,
DISK_DIR
(
pDisk
),
rname
);
if
(
mkdir
(
aname
,
0755
)
!=
0
&&
errno
!=
EEXIST
)
{
fError
(
"failed to create directory %s since %s"
,
aname
,
strerror
(
errno
));
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
if
(
tfsMkdirAt
(
rname
,
level
,
id
)
<
0
)
{
return
-
1
;
}
}
...
...
src/tsdb/src/tsdbFS.c
浏览文件 @
8c93f9d7
...
...
@@ -29,6 +29,7 @@ static int tsdbScanAndTryFixFS(STsdbRepo *pRepo);
static
int
tsdbScanRootDir
(
STsdbRepo
*
pRepo
);
static
int
tsdbScanDataDir
(
STsdbRepo
*
pRepo
);
static
bool
tsdbIsTFileInFS
(
STsdbFS
*
pfs
,
const
TFILE
*
pf
);
static
int
tsdbRestoreCurrent
(
STsdbRepo
*
pRepo
);
// ================== CURRENT file header info
static
int
tsdbEncodeFSHeader
(
void
**
buf
,
SFSHeader
*
pHeader
)
{
...
...
@@ -232,7 +233,6 @@ void *tsdbFreeFS(STsdbFS *pfs) {
return
NULL
;
}
// TODO
int
tsdbOpenFS
(
STsdbRepo
*
pRepo
)
{
STsdbFS
*
pfs
=
REPO_FS
(
pRepo
);
char
current
[
TSDB_FILENAME_LEN
]
=
"
\0
"
;
...
...
@@ -247,7 +247,10 @@ int tsdbOpenFS(STsdbRepo *pRepo) {
return
-
1
;
}
}
else
{
// TODO: current file not exists, try to recover it
if
(
tsdbRestoreCurrent
(
pRepo
)
<
0
)
{
tsdbError
(
"vgId:%d failed to restore current file since %s"
,
REPO_ID
(
pRepo
),
tstrerror
(
terrno
));
return
-
1
;
}
}
// Load meta cache if has meta file
...
...
@@ -259,7 +262,6 @@ int tsdbOpenFS(STsdbRepo *pRepo) {
return
0
;
}
// TODO
void
tsdbCloseFS
(
STsdbRepo
*
pRepo
)
{
// TODO
}
...
...
@@ -896,4 +898,44 @@ static bool tsdbIsTFileInFS(STsdbFS *pfs, const TFILE *pf) {
}
return
false
;
}
static
int
tsdbRestoreCurrent
(
STsdbRepo
*
pRepo
)
{
char
rootDir
[
TSDB_FILENAME_LEN
];
char
dataDir
[
TSDB_FILENAME_LEN
];
TDIR
*
tdir
=
NULL
;
const
TFILE
*
pf
=
NULL
;
char
bname
[
TSDB_FILENAME_LEN
];
// Loop to recover mfile
tsdbGetRootDir
(
REPO_ID
(
pRepo
),
rootDir
);
tdir
=
tfsOpendir
(
rootDir
);
if
(
tdir
==
NULL
)
{
tsdbError
(
"vgId:%d failed to open dir %s since %s"
,
REPO_ID
(
pRepo
),
rootDir
,
tstrerror
(
terrno
));
return
-
1
;
}
while
((
pf
=
tfsReaddir
(
tdir
)))
{
tfsbasename
(
pf
,
bname
);
if
(
strncmp
(
bname
,
"meta"
,
sizeof
(
"meta"
))
==
0
)
{
// TODO
break
;
}
}
tfsClosedir
(
tdir
);
// Loop to recover dfile set
tsdbGetDataDir
(
REPO_ID
(
pRepo
),
dataDir
);
tdir
=
tfsOpendir
(
dataDir
);
if
(
tdir
==
NULL
)
{
tsdbError
(
"vgId:%d failed to open dir %s since %s"
,
REPO_ID
(
pRepo
),
rootDir
,
tstrerror
(
terrno
));
return
-
1
;
}
// TODO
tfsClosedir
(
tdir
);
return
0
;
}
\ No newline at end of file
src/tsdb/src/tsdbFile.c
浏览文件 @
8c93f9d7
...
...
@@ -308,6 +308,7 @@ int tsdbCreateDFile(SDFile *pDFile, bool updateHeader) {
ASSERT
(
pDFile
->
info
.
size
==
0
&&
pDFile
->
info
.
magic
==
TSDB_FILE_INIT_MAGIC
);
char
buf
[
TSDB_FILE_HEAD_SIZE
]
=
"
\0
"
;
// TODO: need to check if directory exists, if not, create the directory
pDFile
->
fd
=
open
(
TSDB_FILE_FULL_NAME
(
pDFile
),
O_WRONLY
|
O_CREAT
|
O_TRUNC
,
0755
);
if
(
pDFile
->
fd
<
0
)
{
...
...
src/tsdb/src/tsdbSync.c
浏览文件 @
8c93f9d7
...
...
@@ -655,6 +655,7 @@ static int32_t tsdbRecvDFileSetInfo(SSyncH *pSynch) {
}
static
int
tsdbReload
(
STsdbRepo
*
pRepo
,
bool
isMfChanged
)
{
// TODO: may need to stop and restart stream
if
(
isMfChanged
)
{
tsdbCloseMeta
(
pRepo
);
tsdbFreeMeta
(
pRepo
->
tsdbMeta
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录