From 9f0beedd556daabd2ef48e05ead3fdab68598d2a Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Mon, 22 Jun 2020 16:43:26 +0300 Subject: storage/posix, libglusterfs: library function to sync filesystem Convert an ad-hoc hack to a regular library function gf_syncfs(). Signed-off-by: Dmitry Antipov Change-Id: I3ed93e9f28f22c273df1466ba4a458eacb8df395 Fixes: #1329 --- libglusterfs/src/common-utils.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libglusterfs/src/common-utils.c') diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 899d579e837..81c39959406 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -37,6 +37,9 @@ #ifndef GF_LINUX_HOST_OS #include #endif +#ifdef HAVE_SYNCFS_SYS +#include +#endif #include "glusterfs/compat-errno.h" #include "glusterfs/common-utils.h" @@ -5412,3 +5415,20 @@ gf_nanosleep(uint64_t nsec) return ret; } + +int +gf_syncfs(int fd) +{ + int ret = 0; +#if defined(HAVE_SYNCFS) + /* Linux with glibc recent enough. */ + ret = syncfs(fd); +#elif defined(HAVE_SYNCFS_SYS) + /* Linux with no library function. */ + ret = syscall(SYS_syncfs, fd); +#else + /* Fallback to generic UNIX stuff. */ + sync(); +#endif + return ret; +} -- cgit