diff --git a/libc/calls/calls.h b/libc/calls/calls.h
index e97ad0011..298de4d79 100644
--- a/libc/calls/calls.h
+++ b/libc/calls/calls.h
@@ -201,7 +201,6 @@ int setresuid(unsigned, unsigned, unsigned);
 int getresgid(unsigned *, unsigned *, unsigned *);
 int getresuid(unsigned *, unsigned *, unsigned *);
 char *get_current_dir_name(void) __wur;
-int sync_file_range(int, int64_t, int64_t, unsigned);
 ssize_t splice(int, int64_t *, int, int64_t *, size_t, unsigned);
 int memfd_create(const char *, unsigned int);
 int execvpe(const char *, char *const[], char *const[]);
diff --git a/libc/calls/fdatasync.c b/libc/calls/fdatasync.c
index 000af29f1..66ebcc3c9 100644
--- a/libc/calls/fdatasync.c
+++ b/libc/calls/fdatasync.c
@@ -29,6 +29,11 @@
 /**
  * Blocks until kernel flushes non-metadata buffers for fd to disk.
  *
+ * NOTE: For `IsXnu()` it's recommended that `fcntl(F_FULLFSYNC)` be
+ * favored instead of this function, and if that fails, the fallback
+ * path should call `fsync()` see the SQLite codebase. In the future
+ * Cosmopolitan might do this automatically.
+ *
  * @return 0 on success, or -1 w/ errno
  * @raise ECANCELED if thread was cancelled in masked mode
  * @raise EROFS if `fd` is on a read-only filesystem e.g. /zip
@@ -37,8 +42,8 @@
  * @raise EBADF if `fd` isn't an open file
  * @raise EINTR if signal was delivered
  * @raise EIO if an i/o error happened
- * @see sync(), fsync(), sync_file_range()
  * @see __nosync to secretly disable
+ * @see sync(), fsync()
  * @cancelationpoint
  * @asyncsignalsafe
  */
diff --git a/libc/calls/fsync.c b/libc/calls/fsync.c
index e1925750d..75e4068a4 100644
--- a/libc/calls/fsync.c
+++ b/libc/calls/fsync.c
@@ -37,8 +37,8 @@
  * @raise EBADF if `fd` isn't an open file
  * @raise EINTR if signal was delivered
  * @raise EIO if an i/o error happened
- * @see fdatasync(), sync_file_range()
  * @see __nosync to secretly disable
+ * @see fdatasync()
  * @cancelationpoint
  * @asyncsignalsafe
  */
diff --git a/libc/calls/sync_file_range.c b/libc/calls/sync_file_range.c
deleted file mode 100644
index 8b27915bd..000000000
--- a/libc/calls/sync_file_range.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
-│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8                                :vi│
-╞══════════════════════════════════════════════════════════════════════════════╡
-│ Copyright 2020 Justine Alexandra Roberts Tunney                              │
-│                                                                              │
-│ Permission to use, copy, modify, and/or distribute this software for         │
-│ any purpose with or without fee is hereby granted, provided that the         │
-│ above copyright notice and this permission notice appear in all copies.      │
-│                                                                              │
-│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL                │
-│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                │
-│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             │
-│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         │
-│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        │
-│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               │
-│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             │
-│ PERFORMANCE OF THIS SOFTWARE.                                                │
-╚─────────────────────────────────────────────────────────────────────────────*/
-#include "libc/calls/calls.h"
-#include "libc/calls/syscall-sysv.internal.h"
-#include "libc/errno.h"
-
-/**
- * Flushes subset of file to disk.
- *
- * @param offset is page rounded
- * @param bytes is page rounded; 0 means until EOF
- * @param flags can have SYNC_FILE_RANGE_{WAIT_BEFORE,WRITE,WAIT_AFTER}
- * @note Linux documentation says this call is "dangerous"; for highest
- *     assurance of data recovery after crash, consider fsync() on both
- *     file and directory
- * @see fsync(), fdatasync()
- */
-int sync_file_range(int fd, int64_t offset, int64_t bytes, unsigned flags) {
-  int rc, olderr;
-  olderr = errno;
-  if ((rc = sys_sync_file_range(fd, offset, bytes, flags)) != -1 ||
-      errno != ENOSYS) {
-    return rc;
-  } else {
-    errno = olderr;
-    return fdatasync(fd);
-  }
-}
diff --git a/libc/calls/syscall-sysv.internal.h b/libc/calls/syscall-sysv.internal.h
index 1131cee95..4e8d8e743 100644
--- a/libc/calls/syscall-sysv.internal.h
+++ b/libc/calls/syscall-sysv.internal.h
@@ -108,7 +108,6 @@ i32 sys_sigaction(i32, const void *, void *, i64, i64);
 i32 sys_sigaltstack(const void *, void *);
 i32 sys_symlinkat(const char *, i32, const char *);
 i32 sys_sync(void);
-i32 sys_sync_file_range(i32, i64, i64, u32);
 i32 sys_syncfs(i32);
 i32 sys_syslog(i32, char *, i32);
 i32 sys_tgkill(i32, i32, i32);
diff --git a/libc/dlopen/dlopen.c b/libc/dlopen/dlopen.c
index 252a5705a..6f0ff4c31 100644
--- a/libc/dlopen/dlopen.c
+++ b/libc/dlopen/dlopen.c
@@ -35,6 +35,7 @@
 #include "libc/errno.h"
 #include "libc/fmt/itoa.h"
 #include "libc/intrin/bits.h"
+#include "libc/intrin/kprintf.h"
 #include "libc/intrin/strace.internal.h"
 #include "libc/limits.h"
 #include "libc/nt/dll.h"
diff --git a/libc/sysv/calls/sys_sync_file_range.S b/libc/sysv/calls/sys_sync_file_range.S
deleted file mode 100644
index f3781974e..000000000
--- a/libc/sysv/calls/sys_sync_file_range.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "libc/sysv/macros.internal.h"
-.scall sys_sync_file_range,0xfffffffffffff115,84,4095,globl,hidden
diff --git a/libc/sysv/consts.sh b/libc/sysv/consts.sh
index 1257956f0..e100d4da3 100755
--- a/libc/sysv/consts.sh
+++ b/libc/sysv/consts.sh
@@ -1461,10 +1461,6 @@ syscon	misc	EFD_CLOEXEC				0x080000		0x080000		0			0			0			0			0			0
 syscon	misc	EFD_NONBLOCK				0x0800			0x0800			0			0			0			0			0			0
 syscon	misc	EFD_SEMAPHORE				1			1			0			0			0			0			0			0
 
-syscon	misc	SYNC_FILE_RANGE_WAIT_AFTER		4			4			0			0			0			0			0			0
-syscon	misc	SYNC_FILE_RANGE_WAIT_BEFORE		1			1			0			0			0			0			0			0
-syscon	misc	SYNC_FILE_RANGE_WRITE			2			2			0			0			0			0			0			0
-
 syscon	misc	TEST_UNIT_READY				0			0			0			0			0			0			0			0
 syscon	misc	TFD_CLOEXEC				0x080000		0x080000		0			0			0			0			0			0
 syscon	misc	TFD_NONBLOCK				0x0800			0x0800			0			0			0			0			0			0
@@ -1807,7 +1803,6 @@ syscon	nr	__NR_faccessat				0x010d			0x0030			0x20001d2		0x01d2			0x01e9			0x013
 syscon	nr	__NR_unshare				0x0110			0x0061			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
 syscon	nr	__NR_splice				0x0113			0x004c			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
 syscon	nr	__NR_tee				0x0114			0x004d			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
-syscon	nr	__NR_sync_file_range			0x0115			0x0054			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
 syscon	nr	__NR_vmsplice				0x0116			0x004b			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
 syscon	nr	__NR_migrate_pages			0x0100			0x00ee			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
 syscon	nr	__NR_move_pages				0x0117			0x00ef			0xfff			0xfff			0xfff			0xfff			0xfff			0xfff
diff --git a/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_AFTER.S b/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_AFTER.S
deleted file mode 100644
index 48e9fd432..000000000
--- a/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_AFTER.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "libc/sysv/consts/syscon.internal.h"
-.syscon misc,SYNC_FILE_RANGE_WAIT_AFTER,4,4,0,0,0,0,0,0
diff --git a/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_BEFORE.S b/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_BEFORE.S
deleted file mode 100644
index daebc1387..000000000
--- a/libc/sysv/consts/SYNC_FILE_RANGE_WAIT_BEFORE.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "libc/sysv/consts/syscon.internal.h"
-.syscon misc,SYNC_FILE_RANGE_WAIT_BEFORE,1,1,0,0,0,0,0,0
diff --git a/libc/sysv/consts/SYNC_FILE_RANGE_WRITE.S b/libc/sysv/consts/SYNC_FILE_RANGE_WRITE.S
deleted file mode 100644
index 681239292..000000000
--- a/libc/sysv/consts/SYNC_FILE_RANGE_WRITE.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "libc/sysv/consts/syscon.internal.h"
-.syscon misc,SYNC_FILE_RANGE_WRITE,2,2,0,0,0,0,0,0
diff --git a/libc/sysv/consts/__NR_sync_file_range.S b/libc/sysv/consts/__NR_sync_file_range.S
deleted file mode 100644
index 5d1cb49ff..000000000
--- a/libc/sysv/consts/__NR_sync_file_range.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "libc/sysv/consts/syscon.internal.h"
-.syscon nr,__NR_sync_file_range,0x0115,0x0054,0xfff,0xfff,0xfff,0xfff,0xfff,0xfff
diff --git a/libc/sysv/consts/nr.h b/libc/sysv/consts/nr.h
index b926c4b7d..dcdbdbd9a 100644
--- a/libc/sysv/consts/nr.h
+++ b/libc/sysv/consts/nr.h
@@ -269,7 +269,6 @@ extern const int __NR_faccessat;
 extern const int __NR_unshare;
 extern const int __NR_splice;
 extern const int __NR_tee;
-extern const int __NR_sync_file_range;
 extern const int __NR_vmsplice;
 extern const int __NR_migrate_pages;
 extern const int __NR_move_pages;
diff --git a/libc/sysv/syscalls.sh b/libc/sysv/syscalls.sh
index 416391458..215307678 100755
--- a/libc/sysv/syscalls.sh
+++ b/libc/sysv/syscalls.sh
@@ -289,7 +289,6 @@ scall	sys_faccessat		0x1ce1391e921d210d	0x030	globl hidden
 scall	sys_unshare		0xfffffffffffff110	0x061	globl # no wrapper
 scall	sys_splice		0xfffffffffffff113	0x04c	globl hidden # Linux 2.6.17+ (c. 2007)
 scall	sys_tee			0xfffffffffffff114	0x04d	globl        # Linux 2.6.17+; no wrapper
-scall	sys_sync_file_range	0xfffffffffffff115	0x054	globl hidden # Linux 2.6.17+
 scall	sys_vmsplice		0xfffffffffffff116	0x04b	globl hidden
 scall	sys_migrate_pages	0xfffffffffffff100	0x0ee	globl        # no wrapper; numa numa yay
 scall	sys_move_pages		0xfffffffffffff117	0x0ef	globl        # no wrapper; NOTE: We view Red Hat versions as "epochs" for all distros.