Skip to content
Browse files

Merge branch 'master' of github.com:antirez/redis

  • Loading branch information...
2 parents a08bb01 + 122c049 commit 0040fa253fdfeca20d540609aa17a796856744eb @antirez committed Apr 21, 2010
Showing with 16 additions and 1 deletion.
  1. +5 −0 config.h
  2. +11 −1 redis.c
View
5 config.h
@@ -35,4 +35,9 @@
#define HAVE_KQUEUE 1
#endif
+/* test for O_DIRECT */
+#ifdef __linux__
+#define HAVE_O_DIRECT 1
+#endif
+
#endif
View
12 redis.c
@@ -54,6 +54,7 @@
#include <inttypes.h>
#include <arpa/inet.h>
#include <sys/stat.h>
+#define __USE_GNU
#include <fcntl.h>
#include <sys/time.h>
#include <sys/resource.h>
@@ -1673,7 +1674,16 @@ static void initServer() {
acceptHandler, NULL) == AE_ERR) oom("creating file event");
if (server.appendonly) {
- server.appendfd = open(server.appendfilename,O_WRONLY|O_APPEND|O_CREAT,0644);
+ int flags = O_WRONLY|O_APPEND|O_CREAT;
+
+#ifdef HAVE_O_DIRECT
+ if (server.appendfsync == APPENDFSYNC_ALWAYS) {
+ flags |= O_DIRECT;
+ server.appendfsync = APPENDFSYNC_NO;
+ }
+#endif
+
+ server.appendfd = open(server.appendfilename,flags,0644);
if (server.appendfd == -1) {
redisLog(REDIS_WARNING, "Can't open the append-only file: %s",
strerror(errno));

0 comments on commit 0040fa2

Please sign in to comment.
Something went wrong with that request. Please try again.