Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
20845ce4
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
20845ce4
编写于
2月 24, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more
上级
b0ff360a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
14 deletion
+24
-14
source/libs/tdb/src/db/tdbPCache.c
source/libs/tdb/src/db/tdbPCache.c
+13
-8
source/libs/tdb/src/db/tdbPFile.c
source/libs/tdb/src/db/tdbPFile.c
+10
-6
source/libs/tdb/src/inc/tdbPCache.h
source/libs/tdb/src/inc/tdbPCache.h
+1
-0
未找到文件。
source/libs/tdb/src/db/tdbPCache.c
浏览文件 @
20845ce4
...
...
@@ -31,8 +31,12 @@ struct SPCache {
SPgHdr
*
pDirtyTail
;
};
#define PCACHE_PAGE_HASH(pgid) 0 // TODO
#define PAGE_IS_PINNED(pPage) ((pPage)->pLruNext == NULL)
#define PCACHE_PAGE_HASH(pPgid) \
({ \
u32 *t = (u32 *)((pPgid)->fileid); \
t[0] + t[1] + t[2] + t[3] + t[4] + t[5] + (pPgid)->pgno; \
})
#define PAGE_IS_PINNED(pPage) ((pPage)->pLruNext == NULL)
static
int
tdbPCacheOpenImpl
(
SPCache
*
pCache
);
static
void
tdbPCacheInitLock
(
SPCache
*
pCache
);
...
...
@@ -83,7 +87,8 @@ SPgHdr *tdbPCacheFetch(SPCache *pCache, const SPgid *pPgid, bool alcNewPage) {
}
void
tdbPCacheFetchFinish
(
SPCache
*
pCache
,
SPgHdr
*
pPage
)
{
// TODO
/* TODO */
pPage
->
nRef
++
;
// TODO: do we need atomic operation???
}
void
tdbPCacheRelease
(
SPgHdr
*
pHdr
)
{
...
...
@@ -110,7 +115,7 @@ static SPgHdr *tdbPCacheFetchImpl(SPCache *pCache, const SPgid *pPgid, bool alcN
// 1. Search the hash table
pPage
=
pCache
->
pgHash
[
PCACHE_PAGE_HASH
(
pPgid
)
%
pCache
->
nHash
];
while
(
pPage
)
{
if
(
memcmp
(
pPgid
,
&
(
pPage
->
pgid
),
sizeof
(
*
pPgid
))
==
0
)
break
;
if
(
TDB_IS_SAME_PAGE
(
&
(
pPage
->
pgid
),
pPgid
)
)
break
;
pPage
=
pPage
->
pHashNext
;
}
...
...
@@ -134,15 +139,15 @@ static SPgHdr *tdbPCacheFetchImpl(SPCache *pCache, const SPgid *pPgid, bool alcN
tdbPCachePinPage
(
pPage
);
}
// 4. Try a stress allocation
// 4. Try a stress allocation
(TODO)
// 5. Page here are just created from a free list
// or by recycling or allocated streesly,
// need to initialize it
if
(
pPage
)
{
memcpy
(
&
pPage
->
pgid
,
pPgid
,
sizeof
(
*
pPgid
));
pPage
->
pCache
=
pCache
;
memcpy
(
&
(
pPage
->
pgid
),
pPgid
,
sizeof
(
*
pPgid
));
pPage
->
pLruNext
=
NULL
;
// *(void **)pPage->page.pExtra = 0; (TODO)
tdbPCacheAddPageToHash
(
pPage
);
}
...
...
@@ -182,7 +187,7 @@ static void tdbPCacheAddPageToHash(SPgHdr *pPage) {
int
h
;
pCache
=
pPage
->
pCache
;
h
=
PCACHE_PAGE_HASH
(
&
pPage
->
pgid
)
%
pCache
->
nHash
;
h
=
PCACHE_PAGE_HASH
(
&
(
pPage
->
pgid
)
)
%
pCache
->
nHash
;
pPage
->
pHashNext
=
pCache
->
pgHash
[
h
];
pCache
->
pgHash
[
h
]
=
pPage
;
...
...
source/libs/tdb/src/db/tdbPFile.c
浏览文件 @
20845ce4
...
...
@@ -71,14 +71,18 @@ int tdbPFileClose(SPFile *pFile) {
}
SPgHdr
*
tdbPFileGet
(
SPFile
*
pFile
,
SPgno
pgno
)
{
SPCache
*
pCache
;
SPgid
pgid
;
SPgHdr
*
pPage
;
SPgid
pgid
;
SPgHdr
*
pPage
;
pCache
=
pFile
->
pCache
;
pPage
=
tdbPCacheFetch
(
pFile
->
pCache
,
&
pgid
,
1
);
if
(
pPage
==
NULL
)
{
// TODO
ASSERT
(
0
);
}
tdbPCacheFetchFinish
(
pFile
->
pCache
,
pPage
);
pPage
=
tdbPCacheFetch
(
pCache
,
&
pgid
,
true
);
tdbPCacheFetchFinish
(
pCache
,
pPage
);
if
(
true
/* not load from the file, then load the content from the file*/
)
{
}
return
pPage
;
}
...
...
source/libs/tdb/src/inc/tdbPCache.h
浏览文件 @
20845ce4
...
...
@@ -29,6 +29,7 @@ struct SPgHdr {
SPgid
pgid
;
u8
isAnchor
;
u8
isLocalPage
;
i32
nRef
;
SPCache
*
pCache
;
SPgHdr
*
pFreeNext
;
SPgHdr
*
pHashNext
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录