diff options
author | David Disseldorp <ddiss@samba.org> | 2018-07-10 13:35:30 +0200 |
---|---|---|
committer | Ralph Boehme <slow@samba.org> | 2018-07-16 21:11:30 +0200 |
commit | 8cb96438bf1540ec76e759135863202bdef6ee35 (patch) | |
tree | 8b8b3841e548dff70760a76229cdd193d4931147 /source3/lib/dbwrap/dbwrap_open.c | |
parent | 26fd7096b1f99a2754f634669d5432109023bfa5 (diff) | |
download | samba-8cb96438bf1540ec76e759135863202bdef6ee35.tar.gz |
dbwrap: determine basename once instead of three times
Currently determined twice in the clear-if-first codepath and once in
the ctdb code path. Do it once at the top of the function.
Signed-off-by: David Disseldorp <ddiss@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Mon Jul 16 21:11:30 CEST 2018 on sn-devel-144
Diffstat (limited to 'source3/lib/dbwrap/dbwrap_open.c')
-rw-r--r-- | source3/lib/dbwrap/dbwrap_open.c | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/source3/lib/dbwrap/dbwrap_open.c b/source3/lib/dbwrap/dbwrap_open.c index a4d5184396d..e144d9881bb 100644 --- a/source3/lib/dbwrap/dbwrap_open.c +++ b/source3/lib/dbwrap/dbwrap_open.c @@ -64,6 +64,7 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, uint64_t dbwrap_flags) { struct db_context *result = NULL; + const char *base; const char *sockname; if (!DBWRAP_LOCK_ORDER_VALID(lock_order)) { @@ -71,17 +72,16 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, return NULL; } + base = strrchr_m(name, '/'); + if (base != NULL) { + base++; + } else { + base = name; + } + 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; } @@ -97,17 +97,9 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, } if (tdb_flags & TDB_CLEAR_IF_FIRST) { - const char *base; bool try_mutex = true; bool require_mutex = false; - base = strrchr_m(name, '/'); - if (base != NULL) { - base += 1; - } else { - base = name; - } - try_mutex = lp_parm_bool(-1, "dbwrap_tdb_mutexes", "*", try_mutex); try_mutex = lp_parm_bool(-1, "dbwrap_tdb_mutexes", base, try_mutex); @@ -137,23 +129,14 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, sockname = lp_ctdbd_socket(); if (lp_clustering()) { - const char *partname; - if (!socket_exist(sockname)) { DEBUG(1, ("ctdb socket does not exist - is ctdb not " "running?\n")); return NULL; } - /* ctdb only wants the file part of the name */ - partname = strrchr(name, '/'); - if (partname) { - partname++; - } else { - partname = name; - } /* allow ctdb for individual databases to be disabled */ - if (lp_parm_bool(-1, "ctdb", partname, True)) { + if (lp_parm_bool(-1, "ctdb", base, true)) { struct messaging_context *msg_ctx; struct ctdbd_connection *conn; @@ -165,13 +148,12 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, } msg_ctx = server_messaging_context(); - result = db_open_ctdb(mem_ctx, msg_ctx, partname, + result = db_open_ctdb(mem_ctx, msg_ctx, base, hash_size, tdb_flags, open_flags, mode, lock_order, dbwrap_flags); if (result == NULL) { - DEBUG(0,("failed to attach to ctdb %s\n", - partname)); + DBG_ERR("failed to attach to ctdb %s\n", base); if (errno == 0) { errno = EIO; } |