mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
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
This commit is contained in:
parent
26fd7096b1
commit
8cb96438bf
@ -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,16 +72,15 @@ 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++;
|
||||
} else {
|
||||
base = name;
|
||||
}
|
||||
|
||||
base = strrchr_m(name, '/');
|
||||
if (base != NULL) {
|
||||
base += 1;
|
||||
} else {
|
||||
base = name;
|
||||
}
|
||||
if (tdb_flags & TDB_CLEAR_IF_FIRST) {
|
||||
bool try_readonly = false;
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user