Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5624ecc8
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
5624ecc8
编写于
7月 18, 2023
作者:
B
Benguang Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: prepare vnode dir recursively in vnodeCreate
上级
6b6b7d8d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
3 deletion
+34
-3
include/libs/tfs/tfs.h
include/libs/tfs/tfs.h
+9
-0
source/dnode/vnode/src/vnd/vnodeOpen.c
source/dnode/vnode/src/vnd/vnodeOpen.c
+10
-2
source/libs/tfs/src/tfs.c
source/libs/tfs/src/tfs.c
+15
-1
未找到文件。
include/libs/tfs/tfs.h
浏览文件 @
5624ecc8
...
...
@@ -130,6 +130,15 @@ int32_t tfsMkdir(STfs *pTfs, const char *rname);
*/
int32_t
tfsMkdirAt
(
STfs
*
pTfs
,
const
char
*
rname
,
SDiskID
diskId
);
/**
* @brief Recursive make directory at all levels in tfs.
*
* @param pTfs The fs object.
* @param rname The rel name of directory.
* @return int32_t 0 for success, -1 for failure.
*/
int32_t
tfsMkdirRecur
(
STfs
*
pTfs
,
const
char
*
rname
);
/**
* @brief Recursive create directories in tfs.
*
...
...
source/dnode/vnode/src/vnd/vnodeOpen.c
浏览文件 @
5624ecc8
...
...
@@ -27,6 +27,14 @@ int32_t vnodeGetPrimaryDir(const char *relPath, int32_t diskPrimary, STfs *pTfs,
return
0
;
}
static
int32_t
vnodeMkDir
(
STfs
*
pTfs
,
const
char
*
path
)
{
if
(
pTfs
)
{
return
tfsMkdirRecur
(
pTfs
,
path
);
}
else
{
return
taosMkDir
(
path
);
}
}
int32_t
vnodeCreate
(
const
char
*
path
,
SVnodeCfg
*
pCfg
,
int32_t
diskPrimary
,
STfs
*
pTfs
)
{
SVnodeInfo
info
=
{
0
};
char
dir
[
TSDB_FILENAME_LEN
]
=
{
0
};
...
...
@@ -38,8 +46,8 @@ int32_t vnodeCreate(const char *path, SVnodeCfg *pCfg, int32_t diskPrimary, STfs
}
// create vnode env
if
(
(
pTfs
)
?
tfsMkdir
(
pTfs
,
path
)
:
taosMkDir
(
path
))
{
vError
(
"vgId:%d, failed to
mkdir since %s, dir
: %s"
,
pCfg
->
vgId
,
strerror
(
errno
),
path
);
if
(
vnodeMkDir
(
pTfs
,
path
))
{
vError
(
"vgId:%d, failed to
prepare vnode dir since %s, path
: %s"
,
pCfg
->
vgId
,
strerror
(
errno
),
path
);
return
TAOS_SYSTEM_ERROR
(
errno
);
}
vnodeGetPrimaryDir
(
path
,
diskPrimary
,
pTfs
,
dir
,
TSDB_FILENAME_LEN
);
...
...
source/libs/tfs/src/tfs.c
浏览文件 @
5624ecc8
...
...
@@ -281,7 +281,7 @@ int32_t tfsMkdirRecurAt(STfs *pTfs, const char *rname, SDiskID diskId) {
return
0
;
}
int32_t
tfsMkdir
(
STfs
*
pTfs
,
const
char
*
rname
)
{
int32_t
tfsMkdir
Recur
(
STfs
*
pTfs
,
const
char
*
rname
)
{
for
(
int32_t
level
=
0
;
level
<
pTfs
->
nlevel
;
level
++
)
{
STfsTier
*
pTier
=
TFS_TIER_AT
(
pTfs
,
level
);
for
(
int32_t
id
=
0
;
id
<
pTier
->
ndisk
;
id
++
)
{
...
...
@@ -295,6 +295,20 @@ int32_t tfsMkdir(STfs *pTfs, const char *rname) {
return
0
;
}
int32_t
tfsMkdir
(
STfs
*
pTfs
,
const
char
*
rname
)
{
for
(
int32_t
level
=
0
;
level
<
pTfs
->
nlevel
;
level
++
)
{
STfsTier
*
pTier
=
TFS_TIER_AT
(
pTfs
,
level
);
for
(
int32_t
id
=
0
;
id
<
pTier
->
ndisk
;
id
++
)
{
SDiskID
did
=
{.
id
=
id
,
.
level
=
level
};
if
(
tfsMkdirAt
(
pTfs
,
rname
,
did
)
<
0
)
{
return
-
1
;
}
}
}
return
0
;
}
bool
tfsDirExistAt
(
STfs
*
pTfs
,
const
char
*
rname
,
SDiskID
diskId
)
{
STfsDisk
*
pDisk
=
TFS_DISK_AT
(
pTfs
,
diskId
);
char
aname
[
TMPNAME_LEN
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录