Commit d2f83d4a authored by antirez's avatar antirez
Browse files

Fix compilation on Linux kernels or glibc versions lacking sync_file_range().

This fixes issue #667.

Many thanks to Didier Spezia for the fix.
parent 68fc64af
...@@ -55,6 +55,19 @@ ...@@ -55,6 +55,19 @@
/* Define rdb_fsync_range to sync_file_range() on Linux, otherwise we use /* Define rdb_fsync_range to sync_file_range() on Linux, otherwise we use
* the plain fsync() call. */ * the plain fsync() call. */
#ifdef __linux__ #ifdef __linux__
#include <linux/version.h>
#ifdef __GLIBC__
#if (LINUX_VERSION_CODE >= 0x020617 && GLIBC_VERSION_AT_LEAST(2, 6))
#define HAVE_SYNC_FILE_RANGE 1
#endif
#else
#if (LINUX_VERSION_CODE >= 0x020617)
#define HAVE_SYNC_FILE_RANGE 1
#endif
#endif
#endif
#ifdef HAVE_SYNC_FILE_RANGE
#define rdb_fsync_range(fd,off,size) sync_file_range(fd,off,size,SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE) #define rdb_fsync_range(fd,off,size) sync_file_range(fd,off,size,SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE)
#else #else
#define rdb_fsync_range(fd,off,size) fsync(fd) #define rdb_fsync_range(fd,off,size) fsync(fd)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment