Send ust and kernel domain directory handle to consumer
[lttng-tools.git] / src / bin / lttng-sessiond / kernel-consumer.c
index 2d0605e9bc1b308a13886cf9f38b9af64b118920..273b04f9da85145de523c248cb09da1798e691ca 100644 (file)
@@ -33,7 +33,8 @@
 #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];
@@ -52,10 +53,11 @@ static char *create_channel_path(struct consumer_output *consumer)
                                        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);
@@ -74,6 +76,7 @@ static char *create_channel_path(struct consumer_output *consumer)
                        PERROR("lttng_strndup");
                        goto error;
                }
+               *consumer_path_offset = 0;
                DBG3("Kernel network consumer subdir path: %s", pathname);
        }
 
@@ -101,6 +104,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock,
        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);
@@ -115,7 +119,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock,
                        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;
@@ -150,7 +154,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock,
        consumer_init_add_channel_comm_msg(&lkm,
                        channel->key,
                        ksession->id,
-                       pathname,
+                       &pathname[consumer_path_offset],
                        ksession->uid,
                        ksession->gid,
                        consumer->net_seq_index,
@@ -230,7 +234,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock,
        consumer_init_add_channel_comm_msg(&lkm,
                        ksession->metadata->key,
                        ksession->id,
-                       DEFAULT_KERNEL_TRACE_DIR,
+                       "",
                        ksession->uid,
                        ksession->gid,
                        consumer->net_seq_index,
This page took 0.0241 seconds and 4 git commands to generate.