diff --git a/BerkeleyDB.cabal b/BerkeleyDB.cabal
--- a/BerkeleyDB.cabal
+++ b/BerkeleyDB.cabal
@@ -1,5 +1,5 @@
 name: BerkeleyDB
-version: 0.8.4
+version: 0.8.5
 license: BSD3
 license-file: LICENSE
 cabal-version: >= 1.4
@@ -27,7 +27,10 @@
     <http://code.haskell.org/BerkeleyDB/>
     .
     Changes: 0.8:   Support db4.7 and db4.8, removed C++ binding.
+             0.8.5: Add db_sync.
              0.7.2: Fix on db4.7
+    .
+    Contributors: Michael Stone
 
 category: Database
 build-type: Simple
diff --git a/Database/Berkeley/Db.hsc b/Database/Berkeley/Db.hsc
--- a/Database/Berkeley/Db.hsc
+++ b/Database/Berkeley/Db.hsc
@@ -59,6 +59,7 @@
         db_set_flags,
         db_put,
         db_set_pagesize,
+        db_sync,
         -- * DbCursor
         db_withCursor,
         db_cursor,
@@ -1076,6 +1077,16 @@
             then throwDB "db_set_flags" ret
             else return ()
 
+foreign import ccall "db_helper.h _db_sync" _db_sync
+    :: Ptr Db_struct -> Word32 -> IO CInt
+
+db_sync :: [DbFlag] -> Db -> IO ()
+db_sync flags db = do
+    withForeignPtr db $ \c_db -> do
+        ret <- _db_sync c_db (dbOrFlags flags)
+        if ret /= 0
+            then throwDB "db_sync" ret
+            else return ()
 
 ------ DbCursor ----------------------------------------------------------------
 
diff --git a/Database/Berkeley/db_helper.c b/Database/Berkeley/db_helper.c
--- a/Database/Berkeley/db_helper.c
+++ b/Database/Berkeley/db_helper.c
@@ -370,6 +370,12 @@
     return db->set_flags(db, flags);
 }
 
+int _db_sync(DB** dbp, u_int32_t flags)
+{
+    UNWRAP_DB();
+    return db->sync(db, flags);
+}
+
 int _db_cursor(DB** dbp, DB_TXN** dbtxnp, DBC*** dbcursorpp, u_int32_t flags)
 {
     DB_TXN* dbtxn;
diff --git a/Database/Berkeley/db_helper.h b/Database/Berkeley/db_helper.h
--- a/Database/Berkeley/db_helper.h
+++ b/Database/Berkeley/db_helper.h
@@ -55,6 +55,7 @@
 int _db_del(DB** dbp, DB_TXN** dbtxnp, const char* key, u_int32_t key_len, u_int32_t flags);
 int _db_close(DB** dbp, u_int32_t flags);
 int _db_set_flags(DB** dbp, u_int32_t flags);
+int _db_sync(DB** dbp, u_int32_t flags);
 int _db_cursor(DB** dbp, DB_TXN** dbtxnp, DBC*** dbcursorpp, u_int32_t flags);
 void _dbcursor_delete(DBC** dbc);
 int _dbCursor_close(DBC** dbc);
