Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
d16ee878
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看板
提交
d16ee878
编写于
1月 14, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
finish fs
上级
607961b4
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
357 addition
and
393 deletion
+357
-393
src/tsdb/inc/tsdbFS.h
src/tsdb/inc/tsdbFS.h
+12
-8
src/tsdb/inc/tsdbFile.h
src/tsdb/inc/tsdbFile.h
+4
-0
src/tsdb/src/tsdbCommit.c
src/tsdb/src/tsdbCommit.c
+0
-1
src/tsdb/src/tsdbFS.c
src/tsdb/src/tsdbFS.c
+247
-384
src/tsdb/src/tsdbFile.c
src/tsdb/src/tsdbFile.c
+94
-0
未找到文件。
src/tsdb/inc/tsdbFS.h
浏览文件 @
d16ee878
...
...
@@ -25,7 +25,7 @@ extern "C" {
// ================== CURRENT file header info
typedef
struct
{
uint32_t
version
;
// Current file version
uint32_t
len
;
uint32_t
len
;
// Encode content length (including checksum)
}
SFSHeader
;
// ================== TSDB File System Meta
...
...
@@ -38,6 +38,7 @@ typedef struct {
// ==================
typedef
struct
{
STsdbFSMeta
meta
;
// FS meta
SMFile
*
pmf
;
// meta file pointer
SMFile
mf
;
// meta file
SArray
*
df
;
// data file array
}
SFSStatus
;
...
...
@@ -45,12 +46,10 @@ typedef struct {
typedef
struct
{
pthread_rwlock_t
lock
;
SFSStatus
*
cstatus
;
// current stage
SHashObj
*
metaCache
;
// meta
SFSStatus
*
cstatus
;
// current status
SHashObj
*
metaCache
;
// meta cache
bool
intxn
;
SFSStatus
*
nstatus
;
SList
*
metaDelta
;
SFSStatus
*
nstatus
;
// new status
}
STsdbFS
;
#define FS_CURRENT_STATUS(pfs) ((pfs)->cstatus)
...
...
@@ -58,12 +57,17 @@ typedef struct {
#define FS_IN_TXN(pfs) (pfs)->intxn
typedef
struct
{
int
direction
;
uint64_t
version
;
// current FS version
int
index
;
int
fid
;
STsdbFS
*
pfs
;
int
index
;
// used to position next fset when version the same
int
fid
;
// used to seek when version is changed
SDFileSet
*
pSet
;
}
SFSIter
;
#define TSDB_FS_ITER_FORWARD TSDB_ORDER_ASC
#define TSDB_FS_ITER_BACKWARD TSDB_ORDER_DESC
#if 0
int tsdbOpenFS(STsdbRepo* pRepo);
void tsdbCloseFS(STsdbRepo* pRepo);
...
...
src/tsdb/inc/tsdbFile.h
浏览文件 @
d16ee878
...
...
@@ -23,12 +23,14 @@ extern "C" {
#define TSDB_FILE_HEAD_SIZE 512
#define TSDB_FILE_DELIMITER 0xF00AFA0F
#define TSDB_FILE_INIT_MAGIC 0xFFFFFFFF
#define TSDB_IVLD_FID INT_MIN
#define TSDB_FILE_INFO(tf) (&((tf)->info))
#define TSDB_FILE_F(tf) (&((tf)->f))
#define TSDB_FILE_FD(tf) ((tf)->fd)
#define TSDB_FILE_FULL_NAME(tf) TFILE_NAME(TSDB_FILE_F(tf))
#define TSDB_FILE_OPENED(tf) (TSDB_FILE_FD(tf) >= 0)
#define TSDB_FILE_CLOSED(tf) (!TSDB_FILE_OPENED(tf))
#define TSDB_FILE_SET_CLOSED(f) (TSDB_FILE_FD(f) = -1)
#define TSDB_FILE_LEVEL(tf) TFILE_LEVEL(TSDB_FILE_F(tf))
#define TSDB_FILE_ID(tf) TFILE_ID(TSDB_FILE_F(tf))
...
...
@@ -61,6 +63,7 @@ void tsdbInitMFile(SMFile* pMFile, SDiskID did, int vid, int ver);
void
tsdbInitMFileEx
(
SMFile
*
pMFile
,
SMFile
*
pOMFile
);
int
tsdbEncodeSMFile
(
void
**
buf
,
SMFile
*
pMFile
);
void
*
tsdbDecodeSMFile
(
void
*
buf
,
SMFile
*
pMFile
);
int
tsdbApplyMFileChange
(
const
SMFile
*
from
,
const
SMFile
*
to
);
static
FORCE_INLINE
int
tsdbOpenMFile
(
SMFile
*
pMFile
,
int
flags
)
{
ASSERT
(
!
TSDB_FILE_OPENED
(
pMFile
));
...
...
@@ -288,6 +291,7 @@ void tsdbInitDFileSet(SDFileSet* pSet, SDiskID did, int vid, int fid, int ver);
void
tsdbInitDFileSetEx
(
SDFileSet
*
pSet
,
SDFileSet
*
pOSet
);
int
tsdbEncodeDFileSet
(
void
**
buf
,
SDFileSet
*
pSet
);
void
*
tsdbDecodeDFileSet
(
void
*
buf
,
SDFileSet
*
pSet
);
int
tsdbApplyDFileSetChange
(
const
SDFileSet
*
from
,
const
SDFileSet
*
to
);
static
FORCE_INLINE
void
tsdbCloseDFileSet
(
SDFileSet
*
pSet
)
{
for
(
TSDB_FILE_T
ftype
=
0
;
ftype
<
TSDB_FILE_MAX
;
ftype
++
)
{
...
...
src/tsdb/src/tsdbCommit.c
浏览文件 @
d16ee878
...
...
@@ -14,7 +14,6 @@
*/
#include "tsdbint.h"
#define TSDB_IVLD_FID INT_MIN
#define TSDB_MAX_SUBBLOCKS 8
#define TSDB_KEY_FID(key, days, precision) ((key) / tsMsPerDay[(precision)] / (days))
...
...
src/tsdb/src/tsdbFS.c
浏览文件 @
d16ee878
此差异已折叠。
点击以展开。
src/tsdb/src/tsdbFile.c
浏览文件 @
d16ee878
...
...
@@ -58,6 +58,48 @@ void *tsdbDecodeSMFile(void *buf, SMFile *pMFile) {
return
buf
;
}
int
tsdbApplyMFileChange
(
SMFile
*
from
,
SMFile
*
to
)
{
ASSERT
(
from
!=
NULL
||
to
!=
NULL
);
if
(
from
!=
NULL
)
{
if
(
to
==
NULL
)
{
tsdbRemoveMFile
(
from
);
}
else
{
if
(
tfsIsSameFile
(
TSDB_FILE_F
(
from
),
TSDB_FILE_F
(
to
)))
{
if
(
from
->
info
.
size
>
to
->
info
.
size
)
{
tsdbRollbackMFile
(
to
);
}
}
else
{
tsdbRemoveMFile
(
from
);
}
}
}
return
0
;
}
static
int
tsdbRollBackMFile
(
const
SMFile
*
pMFile
)
{
SMFile
mf
=
*
pMFile
;
if
(
tsdbOpenMFile
(
&
mf
,
O_WRONLY
)
<
0
)
{
return
-
1
;
}
if
(
taosFtruncate
(
TSDB_FILE_FD
(
&
mf
),
pMFile
->
info
.
size
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
tsdbCloseMFile
(
&
mf
);
return
-
1
;
}
if
(
tsdbUpdateMFileHeader
(
&
mf
)
<
0
)
{
tsdbCloseMFile
(
&
mf
);
return
-
1
;
}
tsdbCloseMFile
(
&
mf
);
return
0
;
}
int
tsdbCreateMFile
(
SMFile
*
pMFile
)
{
ASSERT
(
pMFile
->
info
.
size
==
0
&&
pMFile
->
info
.
magic
==
TSDB_FILE_INIT_MAGIC
);
...
...
@@ -220,6 +262,48 @@ static void *tsdbDecodeDFInfo(void *buf, SDFInfo *pInfo) {
return
buf
;
}
static
int
tsdbApplyDFileChange
(
SDFile
*
from
,
SDFile
*
to
)
{
ASSERT
(
from
!=
NULL
||
to
!=
NULL
);
if
(
from
!=
NULL
)
{
if
(
to
==
NULL
)
{
tsdbRemoveDFile
(
from
);
}
else
{
if
(
tfsIsSameFile
(
TSDB_FILE_F
(
from
),
TSDB_FILE_F
(
to
)))
{
if
(
from
->
info
.
size
>
to
->
info
.
size
)
{
tsdbRollbackDFile
(
to
);
}
}
else
{
tsdbRemoveDFile
(
from
);
}
}
}
return
0
;
}
static
int
tsdbRollBackDFile
(
const
SDFile
*
pDFile
)
{
SDFile
df
=
*
pDFile
;
if
(
tsdbOpenDFile
(
&
df
,
O_WRONLY
)
<
0
)
{
return
-
1
;
}
if
(
taosFtruncate
(
TSDB_FILE_FD
(
&
df
),
pDFile
->
info
.
size
)
<
0
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
tsdbCloseDFile
(
&
df
);
return
-
1
;
}
if
(
tsdbUpdateDFileHeader
(
&
df
)
<
0
)
{
tsdbCloseDFile
(
&
df
);
return
-
1
;
}
tsdbCloseDFile
(
&
df
);
return
0
;
}
// ============== Operations on SDFileSet
void
tsdbInitDFileSet
(
SDFileSet
*
pSet
,
SDiskID
did
,
int
vid
,
int
fid
,
uint32_t
ver
)
{
pSet
->
fid
=
fid
;
...
...
@@ -254,6 +338,16 @@ void *tsdbDecodeDFileSet(void *buf, SDFileSet *pSet) {
return
buf
;
}
int
tsdbApplyDFileSetChange
(
const
SDFileSet
*
from
,
const
SDFileSet
*
to
)
{
for
(
TSDB_FILE_T
ftype
=
0
;
ftype
<
TSDB_FILE_MAX
;
ftype
++
)
{
if
(
tsdbApplyDFileChange
(
TSDB_DFILE_IN_SET
(
from
,
ftype
),
TSDB_DFILE_IN_SET
(
to
,
ftype
))
<
0
)
{
return
-
1
;
}
}
return
0
;
}
int
tsdbCreateDFileSet
(
SDFileSet
*
pSet
)
{
for
(
TSDB_FILE_T
ftype
=
0
;
ftype
<
TSDB_FILE_MAX
;
ftype
++
)
{
if
(
tsdbCreateDFile
(
TSDB_DFILE_IN_SET
(
pSet
,
ftype
))
<
0
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录