]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon, os: check the result of sync_filesystem. 3305/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Thu, 8 Jan 2015 02:29:37 +0000 (10:29 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Thu, 8 Jan 2015 02:29:37 +0000 (10:29 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/mon/MonitorStore.cc
src/os/FileStore.cc

index db21a945e04fdf9bc6d1bfc14d6dd28bbd9f7520..afaddab33048ce1384241193dce83f2ba12cb07f 100644 (file)
@@ -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);
 }
index d44ea82be964ade5b167580c5ab3140a72394ee5..a9a174672d9fa51fe0f217db3db4aab94e30ba1e 100644 (file)
@@ -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));