Commit 51cae387 authored by unknown's avatar unknown
Browse files

os0file.c:

  Use the fcntl() file flush method on OS X; Apple disabled fsync() for internal disk drives, which caused corruption in power outages; the patch was recommended by an Apple engineer


innobase/os/os0file.c:
  Use the fcntl() file flush method on OS X; Apple disabled fsync() for internal disk drives, which caused corruption in power outages; the patch was recommended by an Apple engineer
parent 6f2f0d5c
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -1763,7 +1763,21 @@ os_file_flush(
#else
	int	ret;

#ifdef HAVE_FDATASYNC
#ifdef HAVE_DARWIN_THREADS
	/* Apple has disabled fsync() for internal disk drives in OS X. That
	caused corruption for a user when he tested a power outage. Let us in
	OS X use a nonstandard flush method recommended by an Apple
	engineer. */

	ret = fcntl(file, F_FULLFSYNC, NULL);

	if (ret) {
		/* If we are not on a file system that supports this, then
		fall back to a plain fsync. */ 

		ret = fsync(file);
	}
#elif HAVE_FDATASYNC
	ret = fdatasync(file);
#else
/*	fprintf(stderr, "Flushing to file %p\n", file); */