Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
ab7d4213
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ab7d4213
编写于
12月 09, 2011
作者:
R
Robert Haas
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
If pg_test_fsync is interrupted, clean up the temp file.
Marti Raudsepp, with additional paranoia by me.
上级
5bcf8ede
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
0 deletion
+23
-0
contrib/pg_test_fsync/pg_test_fsync.c
contrib/pg_test_fsync/pg_test_fsync.c
+23
-0
未找到文件。
contrib/pg_test_fsync/pg_test_fsync.c
浏览文件 @
ab7d4213
...
...
@@ -9,6 +9,7 @@
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include "getopt_long.h"
#include "access/xlogdefs.h"
...
...
@@ -29,6 +30,7 @@
static
const
char
*
progname
;
static
int
ops_per_test
=
2000
;
static
int
needs_unlink
=
0
;
static
char
full_buf
[
XLOG_SEG_SIZE
],
*
buf
,
*
filename
=
FSYNC_FILENAME
;
...
...
@@ -44,6 +46,7 @@ static void test_sync(int writes_per_op);
static
void
test_open_syncs
(
void
);
static
void
test_open_sync
(
const
char
*
msg
,
int
writes_size
);
static
void
test_file_descriptor_sync
(
void
);
static
void
signal_cleanup
(
int
sig
);
#ifdef HAVE_FSYNC_WRITETHROUGH
static
int
pg_fsync_writethrough
(
int
fd
);
...
...
@@ -59,6 +62,14 @@ main(int argc, char *argv[])
handle_args
(
argc
,
argv
);
/* Prevent leaving behind the test file */
signal
(
SIGINT
,
signal_cleanup
);
signal
(
SIGTERM
,
signal_cleanup
);
#ifdef SIGHUP
/* Not defined on win32 */
signal
(
SIGHUP
,
signal_cleanup
);
#endif
prepare_buf
();
test_open
();
...
...
@@ -167,6 +178,7 @@ test_open(void)
*/
if
((
tmpfile
=
open
(
filename
,
O_RDWR
|
O_CREAT
,
S_IRUSR
|
S_IWUSR
))
==
-
1
)
die
(
"could not open output file"
);
needs_unlink
=
1
;
if
(
write
(
tmpfile
,
full_buf
,
XLOG_SEG_SIZE
)
!=
XLOG_SEG_SIZE
)
die
(
"write failed"
);
...
...
@@ -490,6 +502,17 @@ test_non_sync(void)
print_elapse
(
start_t
,
stop_t
);
}
static
void
signal_cleanup
(
int
signum
)
{
/* Delete the file if it exists. Ignore errors */
if
(
needs_unlink
)
unlink
(
filename
);
/* Finish incomplete line on stdout */
puts
(
""
);
exit
(
signum
);
}
#ifdef HAVE_FSYNC_WRITETHROUGH
static
int
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录