From: David Goulet Date: Thu, 28 Jul 2011 17:12:34 +0000 (-0400) Subject: Fix adding multiple kernel context at once X-Git-Tag: v2.0-pre5~2 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=d7b91b3c1f59d4369b1a8f8c2641a1f1c5d80e23 Fix adding multiple kernel context at once The session name was not set when multiple add-context was asked. Also fix error message and session daemon return error when one add kernel context fails. Signed-off-by: David Goulet --- diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 7603ffd14..3195e3c19 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -1318,7 +1318,8 @@ static int process_client_msg(struct command_ctx *cmd_ctx) if (no_event) { ret = kernel_add_channel_context(chan, &ctx); if (ret < 0) { - continue; + ret = LTTCOMM_KERN_CONTEXT_FAIL; + goto error; } } else { event = get_kernel_event_by_name(cmd_ctx->lsm->u.context.event_name, chan); diff --git a/lttng/commands/add_context.c b/lttng/commands/add_context.c index b7a482bf7..5756684ca 100644 --- a/lttng/commands/add_context.c +++ b/lttng/commands/add_context.c @@ -349,19 +349,19 @@ static int add_context(void) struct ctx_type *type; char *ptr; - if (set_session_name(opt_session_name) < 0) { - ret = CMD_ERROR; - goto error; - } - /* Iterate over all context type given */ cds_list_for_each_entry(type, &ctx_type_list.head, list) { + /* Set session name for the current command */ + if (set_session_name(opt_session_name) < 0) { + ret = CMD_ERROR; + goto error; + } + context.ctx = type->opt->ctx_type; if (context.ctx == LTTNG_EVENT_CONTEXT_PERF_COUNTER) { context.u.perf_counter.type = type->opt->u.perf.type; context.u.perf_counter.config = type->opt->u.perf.config; - strcpy(context.u.perf_counter.name, - type->opt->symbol); + strcpy(context.u.perf_counter.name, type->opt->symbol); /* Replace : and - by _ */ while ((ptr = strchr(context.u.perf_counter.name, '-')) != NULL) { *ptr = '_'; @@ -378,6 +378,7 @@ static int add_context(void) ret = lttng_add_context(&dom, &context, opt_event_name, opt_channel_name); if (ret < 0) { + fprintf(stderr, "%s: ", type->opt->symbol); goto error; } else { MSG("Kernel context %s added", type->opt->symbol);