s3: Open gencache_notrans with TDB_NOSYNC
authorVolker Lendecke <vl@samba.org>
Tue, 20 Nov 2012 09:02:07 +0000 (10:02 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 28 Nov 2012 02:13:56 +0000 (03:13 +0100)
We are doing CLEAR_IF_FIRST here, and we are doing the transactions only to
protect gencache_stabilize against concurrent writers. tdb's transaction.c
says:

  - if TDB_NOSYNC is passed to flags in tdb_open then transactions are
    still available, but no fsync/msync calls are made.  This means we
    are still proof against a process dying during transaction commit,
    but not against machine reboot.

For gencache_notrans.tdb this is exactly what we want and avoids some expensive
disk syncs.

Reviewed by: Jeremy Allison <jra@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Wed Nov 28 03:13:56 CET 2012 on sn-devel-104

source3/lib/gencache.c

index a64677d2bfed632555418d2314e301d94c6f74ad..0b24c0c1e78b055fa4598ec3dae8595e80d48513 100644 (file)
@@ -106,7 +106,10 @@ again:
 
        DEBUG(5, ("Opening cache file at %s\n", cache_fname));
 
-       cache_notrans = tdb_open_log(cache_fname, 0, TDB_CLEAR_IF_FIRST|TDB_INCOMPATIBLE_HASH,
+       cache_notrans = tdb_open_log(cache_fname, 0,
+                                    TDB_CLEAR_IF_FIRST|
+                                    TDB_INCOMPATIBLE_HASH|
+                                    TDB_NOSYNC,
                                     open_flags, 0644);
        if (cache_notrans == NULL) {
                DEBUG(5, ("Opening %s failed: %s\n", cache_fname,