/*
- * Copyright (C) 2012 - David Goulet <dgoulet@efficios.com>
+ * Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License, version 2 only, as
- * published by the Free Software Foundation.
+ * SPDX-License-Identifier: GPL-2.0-only
*
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#define _LGPL_SOURCE
#include "session.h"
#include "lttng-sessiond.h"
-static char *create_channel_path(struct consumer_output *consumer)
+static char *create_channel_path(struct consumer_output *consumer,
+ size_t *consumer_path_offset)
{
int ret;
char tmp_path[PATH_MAX];
consumer->domain_subdir);
goto error;
}
+ *consumer_path_offset = strlen(consumer->domain_subdir);
DBG3("Kernel local consumer trace path relative to current trace chunk: \"%s\"",
pathname);
} else {
- /* Network output. */
+ /* Network output, relayd < 2.11. */
ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s",
consumer->dst.net.base_dir,
consumer->domain_subdir);
PERROR("lttng_strndup");
goto error;
}
+ *consumer_path_offset = 0;
DBG3("Kernel network consumer subdir path: %s", pathname);
}
struct ltt_session *session = NULL;
struct lttng_channel_extended *channel_attr_extended;
bool is_local_trace;
+ size_t consumer_path_offset = 0;
/* Safety net */
assert(channel);
channel->channel->name);
is_local_trace = consumer->net_seq_index == -1ULL;
- pathname = create_channel_path(consumer);
+ pathname = create_channel_path(consumer, &consumer_path_offset);
if (!pathname) {
ret = -1;
goto error;
consumer_init_add_channel_comm_msg(&lkm,
channel->key,
ksession->id,
- pathname,
+ &pathname[consumer_path_offset],
ksession->uid,
ksession->gid,
consumer->net_seq_index,
channel->channel->attr.tracefile_count,
monitor,
channel->channel->attr.live_timer_interval,
+ ksession->is_live_session,
channel_attr_extended->monitor_timer_interval,
ksession->current_trace_chunk);
assert(session_trylock_list());
status = notification_thread_command_add_channel(
- notification_thread_handle, session->name,
- ksession->uid, ksession->gid,
- channel->channel->name, channel->key,
- LTTNG_DOMAIN_KERNEL,
- channel->channel->attr.subbuf_size * channel->channel->attr.num_subbuf);
+ the_notification_thread_handle, session->name,
+ ksession->uid, ksession->gid, channel->channel->name,
+ channel->key, LTTNG_DOMAIN_KERNEL,
+ channel->channel->attr.subbuf_size *
+ channel->channel->attr.num_subbuf);
rcu_read_unlock();
if (status != LTTNG_OK) {
ret = -1;
consumer_init_add_channel_comm_msg(&lkm,
ksession->metadata->key,
ksession->id,
- DEFAULT_KERNEL_TRACE_DIR,
+ "",
ksession->uid,
ksession->gid,
consumer->net_seq_index,
- DEFAULT_METADATA_NAME,
+ ksession->metadata->conf->name,
1,
- DEFAULT_KERNEL_CHANNEL_OUTPUT,
+ ksession->metadata->conf->attr.output,
CONSUMER_CHANNEL_TYPE_METADATA,
- 0, 0,
- monitor, 0, 0, ksession->current_trace_chunk);
+ ksession->metadata->conf->attr.tracefile_size,
+ ksession->metadata->conf->attr.tracefile_count,
+ monitor,
+ ksession->metadata->conf->attr.live_timer_interval,
+ ksession->is_live_session,
+ 0,
+ ksession->current_trace_chunk);
health_code_update();