diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-28 21:31:17 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2014-02-07 16:06:06 +0100 |
commit | a20c977c7a58a0c09d01bfa046c00fcd3f1462de (patch) | |
tree | f1893b405aab4308746f623a836f81804f10e036 /source3/lib/dbwrap/dbwrap_open.c | |
parent | a97b588b63f437d25c4344c76014326dbf0cbdb0 (diff) | |
download | samba-a20c977c7a58a0c09d01bfa046c00fcd3f1462de.tar.gz samba-a20c977c7a58a0c09d01bfa046c00fcd3f1462de.tar.xz samba-a20c977c7a58a0c09d01bfa046c00fcd3f1462de.zip |
dbwrap_open: add 'dbwrap_optimize_readonly:* = yes' option
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/lib/dbwrap/dbwrap_open.c')
-rw-r--r-- | source3/lib/dbwrap/dbwrap_open.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source3/lib/dbwrap/dbwrap_open.c b/source3/lib/dbwrap/dbwrap_open.c index 61324f7c2d..7f3cddf276 100644 --- a/source3/lib/dbwrap/dbwrap_open.c +++ b/source3/lib/dbwrap/dbwrap_open.c @@ -81,6 +81,31 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, return NULL; } + if (tdb_flags & TDB_CLEAR_IF_FIRST) { + const char *base; + bool try_readonly = false; + + base = strrchr_m(name, '/'); + if (base != NULL) { + base += 1; + } else { + base = name; + } + + if (dbwrap_flags & DBWRAP_FLAG_OPTIMIZE_READONLY_ACCESS) { + try_readonly = true; + } + + try_readonly = lp_parm_bool(-1, "dbwrap_optimize_readonly", "*", try_readonly); + try_readonly = lp_parm_bool(-1, "dbwrap_optimize_readonly", base, try_readonly); + + if (try_readonly) { + dbwrap_flags |= DBWRAP_FLAG_OPTIMIZE_READONLY_ACCESS; + } else { + dbwrap_flags &= ~DBWRAP_FLAG_OPTIMIZE_READONLY_ACCESS; + } + } + #ifdef CLUSTER_SUPPORT sockname = lp_ctdbd_socket(); |