summaryrefslogtreecommitdiff
path: root/source3/lib/dbwrap/dbwrap_open.c
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2018-07-10 13:35:30 +0200
committerRalph Boehme <slow@samba.org>2018-07-16 21:11:30 +0200
commit8cb96438bf1540ec76e759135863202bdef6ee35 (patch)
tree8b8b3841e548dff70760a76229cdd193d4931147 /source3/lib/dbwrap/dbwrap_open.c
parent26fd7096b1f99a2754f634669d5432109023bfa5 (diff)
downloadsamba-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.c40
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;
}