summaryrefslogtreecommitdiffstats
path: root/source3/lib/dbwrap/dbwrap_open.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-28 21:31:17 +0100
committerStefan Metzmacher <metze@samba.org>2014-02-07 16:06:06 +0100
commita20c977c7a58a0c09d01bfa046c00fcd3f1462de (patch)
treef1893b405aab4308746f623a836f81804f10e036 /source3/lib/dbwrap/dbwrap_open.c
parenta97b588b63f437d25c4344c76014326dbf0cbdb0 (diff)
downloadsamba-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.c25
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();