Replace with a lock_debug_script member in ctdb_context.
Signed-off-by: Martin Schwenke <mschwenke@ddn.com>
Reviewed-by: Anoop C S <anoopcs@samba.org>
/* Used for locking record/db/alldb */
const char *lock_helper;
+ const char *lock_debug_script;
struct lock_context *lock_current;
struct lock_context *lock_pending;
};
struct timeval current_time,
void *private_data)
{
- static char debug_locks[PATH_MAX+1] = "";
struct lock_context *lock_ctx;
struct ctdb_context *ctdb;
pid_t pid;
bool skip;
char *keystr;
char **args;
- bool ok;
lock_ctx = talloc_get_type_abort(private_data, struct lock_context);
ctdb = lock_ctx->ctdb;
}
lock_debug:
-
- ok = ctdb_set_helper("lock debugging helper",
- debug_locks,
- sizeof(debug_locks),
- "CTDB_DEBUG_LOCKS",
- getenv("CTDB_BASE"),
- "debug_locks.sh");
- if (!ok) {
- DBG_WARNING("Unable to setup lock debugging\n");
+ if (ctdb->lock_debug_script == NULL) {
goto skip_lock_debug;
}
if (args != NULL) {
pid = vfork();
if (pid == 0) {
- execvp(debug_locks, args);
+ execvp(ctdb->lock_debug_script, args);
_exit(0);
}
talloc_free(args);
goto fail;
}
- if (ctdb_config.lock_debug_script != NULL) {
- ret = setenv("CTDB_DEBUG_LOCKS",
- ctdb_config.lock_debug_script,
- 1);
- if (ret != 0) {
- D_ERR("Failed to set up lock debugging (%s)\n",
- strerror(errno));
+ ctdb->lock_debug_script = ctdb_config.lock_debug_script;
+ if (ctdb->lock_debug_script == NULL) {
+ ctdb->lock_debug_script = path_etcdir_append(ctdb,
+ "debug_locks.sh");
+ if (ctdb->lock_debug_script == NULL) {
+ DBG_ERR("No memory for lock debugging script path\n");
goto fail;
}
}