From 27cb78bd3b2dde40c70de245769d1c0ec252533b Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Thu, 8 Jan 2015 10:29:37 +0800 Subject: [PATCH] mon, os: check the result of sync_filesystem. Signed-off-by: Jianpeng Ma --- src/mon/MonitorStore.cc | 16 ++++++++++++++-- src/os/FileStore.cc | 6 +++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/mon/MonitorStore.cc b/src/mon/MonitorStore.cc index db21a945e04f..afaddab33048 100644 --- a/src/mon/MonitorStore.cc +++ b/src/mon/MonitorStore.cc @@ -437,7 +437,13 @@ void MonitorStore::put_bl_sn_map(const char *a, derr << "failed to open " << dir << ": " << cpp_strerror(err) << dendl; assert(0 == "failed to open temp file"); } - sync_filesystem(dirfd); + + err = sync_filesystem(dirfd); + if (err < 0) { + derr << "sync_filesystem error " << cpp_strerror(err) << dendl; + assert(0 == "failed to sync_filesystem"); + } + close_err = TEMP_FAILURE_RETRY(::close(dirfd)); assert (0 == close_err); @@ -481,7 +487,13 @@ void MonitorStore::sync() << ": " << cpp_strerror(err) << dendl; assert(0 == "failed to open dir for syncing"); } - sync_filesystem(dirfd); + + int ret = sync_filesystem(dirfd); + if (ret < 0) { + derr << __func__ << " sync_filesystem error " << cpp_strerror(ret) << dendl; + assert(0 == "failed to sync_filesystem"); + } + int close_err = TEMP_FAILURE_RETRY(::close(dirfd)); assert (0 == close_err); } diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index d44ea82be964..a9a174672d9f 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -2005,7 +2005,11 @@ void FileStore::_set_global_replay_guard(coll_t cid, return; // sync all previous operations on this sequencer - sync_filesystem(basedir_fd); + int ret = sync_filesystem(basedir_fd); + if (ret < 0) { + derr << __func__ << " :sync_filesytem error " << cpp_strerror(ret) << dendl; + assert(0 == "_set_global_replay_guard failed"); + } char fn[PATH_MAX]; get_cdir(cid, fn, sizeof(fn)); -- 2.47.3