diff options
author | antirez <antirez@metal.(none)> | 2010-05-02 15:05:34 +0200 |
---|---|---|
committer | antirez <antirez@metal.(none)> | 2010-05-02 15:05:34 +0200 |
commit | 10ce12761a9971512e0702c73434bcef0f212e7d (patch) | |
tree | ba41dcc9616795517aea72c5a07349f22256bc93 | |
parent | 7aaaad507060b131ff18d4637ea63499828076d6 (diff) | |
download | redis-10ce12761a9971512e0702c73434bcef0f212e7d.tar.gz |
On Linux now fdatasync() is used insetad of fsync() in order to flush the AOF file kernel buffers
-rw-r--r-- | config.h | 7 | ||||
-rw-r--r-- | fmacros.h | 2 | ||||
-rw-r--r-- | redis.c | 8 |
3 files changed, 12 insertions, 5 deletions
@@ -35,4 +35,11 @@ #define HAVE_KQUEUE 1 #endif +/* define aof_fsync to fdatasync() in Linux and fsync() for all the rest */ +#ifdef __linux__ +#define aof_fsync fdatasync +#else +#define aof_fsync fsync +#endif + #endif @@ -2,7 +2,7 @@ #define _REDIS_FMACRO_H #define _BSD_SOURCE -#define _XOPEN_SOURCE +#define _XOPEN_SOURCE 700 #define _LARGEFILE_SOURCE #define _FILE_OFFSET_BITS 64 @@ -37,8 +37,6 @@ #include <string.h> #include <time.h> #include <unistd.h> -#define __USE_POSIX199309 -#define __USE_UNIX98 #include <signal.h> #ifdef HAVE_BACKTRACE @@ -4049,7 +4047,7 @@ static void echoCommand(redisClient *c) { static void setGenericCommand(redisClient *c, int nx, robj *key, robj *val, robj *expire) { int retval; - long seconds; + long seconds = 0; /* initialized to avoid an harmness warning */ if (expire) { if (getLongFromObjectOrReply(c, expire, &seconds, NULL) != REDIS_OK) @@ -8090,7 +8088,9 @@ static void feedAppendOnlyFile(struct redisCommand *cmd, int dictid, robj **argv (server.appendfsync == APPENDFSYNC_EVERYSEC && now-server.lastfsync > 1)) { - fsync(server.appendfd); /* Let's try to get this data on the disk */ + /* aof_fsync is defined as fdatasync() for Linux in order to avoid + * flushing metadata. */ + aof_fsync(server.appendfd); /* Let's try to get this data on the disk */ server.lastfsync = now; } } |