X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=a6a81c5dbd79989b474ffa1ee5b5d3c5edc83389;hb=5288612f2dc35805e861d0648bf75304c91bfeee;hp=6f7c71d0549474746ef78243f3204cd9ba014ab2;hpb=6dc3064a30b0cc7cfa9fdd22da1963525dfb7388;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 6f7c71d05..a6a81c5db 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -25,6 +25,7 @@ #include #include #include +#include #include "channel.h" #include "consumer.h" @@ -721,7 +722,7 @@ static int start_kernel_session(struct ltt_kernel_session *ksess, int wpipe) struct ltt_kernel_channel *kchan; /* Open kernel metadata */ - if (ksess->metadata == NULL) { + if (ksess->metadata == NULL && ksess->output_traces) { ret = kernel_open_metadata(ksess); if (ret < 0) { ret = LTTNG_ERR_KERN_META_FAIL; @@ -730,7 +731,7 @@ static int start_kernel_session(struct ltt_kernel_session *ksess, int wpipe) } /* Open kernel metadata stream */ - if (ksess->metadata_stream_fd < 0) { + if (ksess->metadata && ksess->metadata_stream_fd < 0) { ret = kernel_open_metadata_stream(ksess); if (ret < 0) { ERR("Kernel create metadata stream failed"); @@ -1681,12 +1682,7 @@ int cmd_create_session_uri(char *name, struct lttng_uri *uris, struct ltt_session *session; assert(name); - - /* No URIs is not possible. */ - if (uris == NULL) { - ret = LTTNG_ERR_SESSION_FAIL; - goto session_error; - } + assert(creds); /* * Verify if the session already exist @@ -1725,9 +1721,15 @@ int cmd_create_session_uri(char *name, struct lttng_uri *uris, goto consumer_error; } - ret = cmd_set_consumer_uri(0, session, nb_uri, uris); - if (ret != LTTNG_OK) { - goto consumer_error; + if (uris) { + ret = cmd_set_consumer_uri(0, session, nb_uri, uris); + if (ret != LTTNG_OK) { + goto consumer_error; + } + session->output_traces = 1; + } else { + session->output_traces = 0; + DBG2("Session %s created with no output", session->name); } session->consumer->enabled = 1; @@ -2373,8 +2375,8 @@ static int set_relayd_for_snapshot(struct consumer_output *consumer, * snapshot output. */ rcu_read_lock(); - cds_lfht_for_each_entry(consumer->socks->ht, &iter.iter, socket, - node.node) { + cds_lfht_for_each_entry(snap_output->consumer->socks->ht, &iter.iter, + socket, node.node) { ret = send_consumer_relayd_sockets(0, session->id, snap_output->consumer, socket); if (ret < 0) { @@ -2402,6 +2404,14 @@ static int record_kernel_snapshot(struct ltt_kernel_session *ksess, assert(output); assert(session); + /* Get the datetime for the snapshot output directory. */ + ret = utils_get_current_time_str("%Y%m%d-%H%M%S", output->datetime, + sizeof(output->datetime)); + if (!ret) { + ret = -EINVAL; + goto error; + } + if (!output->kernel_sockets_copied) { ret = consumer_copy_sockets(output->consumer, ksess->consumer); if (ret < 0) { @@ -2438,6 +2448,14 @@ static int record_ust_snapshot(struct ltt_ust_session *usess, assert(output); assert(session); + /* Get the datetime for the snapshot output directory. */ + ret = utils_get_current_time_str("%Y%m%d-%H%M%S", output->datetime, + sizeof(output->datetime)); + if (!ret) { + ret = -EINVAL; + goto error; + } + if (!output->ust_sockets_copied) { ret = consumer_copy_sockets(output->consumer, usess->consumer); if (ret < 0) { @@ -2554,7 +2572,7 @@ int cmd_snapshot_record(struct ltt_session *session, rcu_read_lock(); cds_lfht_for_each_entry(session->snapshot.output_ht->ht, &iter.iter, sout, node.node) { - ret = record_ust_snapshot(usess, tmp_sout, session, wait); + ret = record_ust_snapshot(usess, sout, session, wait); if (ret < 0) { rcu_read_unlock(); goto error;