From: Jianpeng Ma Date: Tue, 13 Jan 2015 07:51:51 +0000 (+0800) Subject: FileJournal: check fsync/fdatasync result. X-Git-Tag: v0.93~261^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9ef6ce564775c81b5b430dbb8c61675a3728c7ac;p=ceph.git FileJournal: check fsync/fdatasync result. Signed-off-by: Jianpeng Ma --- diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index 759e96219e69..71a3abae1cde 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -1073,11 +1073,16 @@ void FileJournal::do_write(bufferlist& bl) * NOTE: using sync_file_range here would not be safe as it does not * flush disk caches or commits any sort of metadata. */ + int ret = 0; #if defined(DARWIN) || defined(__FreeBSD__) - ::fsync(fd); + ret = ::fsync(fd); #else - ::fdatasync(fd); + ret = ::fdatasync(fd); #endif + if (ret < 0) { + derr << __func__ << " fsync/fdatasync failed: " << cpp_strerror(errno) << dendl; + ceph_abort(); + } #ifdef HAVE_POSIX_FADVISE if (g_conf->filestore_fadvise) posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);