]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/syncfs: fall back to sync(2) if syncfs(2) not available 5530/head
authorKefu Chai <kchai@redhat.com>
Wed, 29 Jul 2015 07:52:19 +0000 (15:52 +0800)
committerNathan Cutler <ncutler@suse.com>
Wed, 2 Sep 2015 12:29:02 +0000 (14:29 +0200)
Fixes: #12512
Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit 08210d6a85527b0759f6dc4411f742bc13a4939f)

Conflicts:
src/common/sync_filesystem.h
          - subtle difference in #if/#else/#endif structure

src/common/sync_filesystem.h

index b7eaea71e0ed5e8b9a5a4bfe2c415391eff3d6fa..8f45d04b3f6bad2fe4700e645317cfa5a627f721 100644 (file)
@@ -34,22 +34,25 @@ inline int sync_filesystem(int fd)
 #ifdef HAVE_SYS_SYNCFS
   if (syncfs(fd) == 0)
     return 0;
-  else
-    return -errno;
 #elif defined(SYS_syncfs)
   if (syscall(SYS_syncfs, fd) == 0)
     return 0;
-  else
-    return -errno;
 #elif defined(__NR_syncfs)
   if (syscall(__NR_syncfs, fd) == 0)
     return 0;
-  else
-    return -errno;
 #endif
 
+#if defined(HAVE_SYS_SYNCFS) || defined(SYS_syncfs) || defined(__NR_syncfs)
+  else if (errno == ENOSYS) {
+    sync();
+    return 0;
+  } else {
+    return -errno;
+  }
+#else
   sync();
   return 0;
+#endif
 }
 
 #endif