From 78e42153b51d6166b916a5bdb39e8726913c263e Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Fri, 13 Apr 2018 20:26:40 +0300 Subject: [PATCH] Fix compile on windows: O_SYNC is not available, use a my_sync() call instead. --- storage/rocksdb/rdb_utils.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/storage/rocksdb/rdb_utils.cc b/storage/rocksdb/rdb_utils.cc index 19469d041b3..723e079a165 100644 --- a/storage/rocksdb/rdb_utils.cc +++ b/storage/rocksdb/rdb_utils.cc @@ -358,7 +358,8 @@ bool rdb_check_rocksdb_corruption() { void rdb_persist_corruption_marker() { const std::string &fileName(myrocks::rdb_corruption_marker_file_name()); - int fd = my_open(fileName.c_str(), O_CREAT | O_SYNC, MYF(MY_WME)); + /* O_SYNC is not supported on windows */ + int fd = my_open(fileName.c_str(), O_CREAT | IF_WIN(0, O_SYNC), MYF(MY_WME)); if (fd < 0) { sql_print_error("RocksDB: Can't create file %s to mark rocksdb as " "corrupted.", @@ -370,6 +371,12 @@ void rdb_persist_corruption_marker() { fileName.c_str()); } +#ifdef _WIN32 + /* A replacement for O_SYNC flag above */ + if (fd >= 0) + my_sync(fd, MYF(0)); +#endif + int ret = my_close(fd, MYF(MY_WME)); if (ret) { // NO_LINT_DEBUG