diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs
index 2738b7112373207e87b1cea61169b4ca6b708984..696a187de2374740f0e8b44d038feb255efbf228 100644
--- a/src/header/unistd/mod.rs
+++ b/src/header/unistd/mod.rs
@@ -223,7 +223,7 @@ pub extern "C" fn fchdir(fildes: c_int) -> c_int {
 
 // #[no_mangle]
 pub extern "C" fn fdatasync(fildes: c_int) -> c_int {
-    unimplemented!();
+    Sys::fdatasync(fildes)
 }
 
 #[no_mangle]
diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs
index bd67fa53d6fb6652e11c4232190dbcadd9df9404..79e75807029823f1b73fce4b1a3c3843496cf14f 100644
--- a/src/platform/linux/mod.rs
+++ b/src/platform/linux/mod.rs
@@ -145,6 +145,10 @@ impl Pal for Sys {
         e(unsafe { syscall!(FCHOWN, fildes, owner, group) }) as c_int
     }
 
+    fn fdatasync(fildes: c_int) -> c_int {
+        e(unsafe { syscall!(FDATASYNC, fildes) }) as c_int
+    }
+
     fn flock(fd: c_int, operation: c_int) -> c_int {
         e(unsafe { syscall!(FLOCK, fd, operation) }) as c_int
     }
diff --git a/src/platform/pal/mod.rs b/src/platform/pal/mod.rs
index 8d27b1db3a9c4a13ea5adbc4e785d5fc8feb313b..64c80a8ceb22641b48543ab72d70461f40c75d15 100644
--- a/src/platform/pal/mod.rs
+++ b/src/platform/pal/mod.rs
@@ -53,6 +53,8 @@ pub trait Pal {
 
     fn fchown(fildes: c_int, owner: uid_t, group: gid_t) -> c_int;
 
+    fn fdatasync(fildes: c_int) -> c_int;
+
     fn flock(fd: c_int, operation: c_int) -> c_int;
 
     fn fstat(fildes: c_int, buf: *mut stat) -> c_int;
diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs
index a6d5e18853e0d10532b265d5cb92190f49b2a2ca..247b92d89c612ad40ceae33813400e2c5b7977dc 100644
--- a/src/platform/redox/mod.rs
+++ b/src/platform/redox/mod.rs
@@ -251,6 +251,11 @@ impl Pal for Sys {
         e(syscall::fcntl(fd as usize, cmd as usize, args as usize)) as c_int
     }
 
+    fn fdatasync(fd: c_int) -> c_int {
+        // TODO: "Needs" syscall update
+        e(syscall::fsync(fd as usize)) as c_int
+    }
+
     fn flock(_fd: c_int, _operation: c_int) -> c_int {
         // TODO: Redox does not have file locking yet
         0