X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel-consumer.c;h=044b1a81f58f19540a527370beadade74a6f297c;hp=837afdc8333faf71de79dfe56bbff31ae44a236a;hb=6dc3064a30b0cc7cfa9fdd22da1963525dfb7388;hpb=ffe600149a7608221985751e1bf293234bf2545c diff --git a/src/bin/lttng-sessiond/kernel-consumer.c b/src/bin/lttng-sessiond/kernel-consumer.c index 837afdc83..044b1a81f 100644 --- a/src/bin/lttng-sessiond/kernel-consumer.c +++ b/src/bin/lttng-sessiond/kernel-consumer.c @@ -26,6 +26,7 @@ #include #include "consumer.h" +#include "health.h" #include "kernel-consumer.h" /* @@ -53,7 +54,7 @@ int kernel_consumer_add_channel(struct consumer_socket *sock, /* Get the right path name destination */ if (consumer->type == CONSUMER_DST_LOCAL) { /* Set application path to the destination path */ - ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s", + ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s", consumer->dst.trace_path, consumer->subdir); if (ret < 0) { PERROR("snprintf metadata path"); @@ -93,7 +94,9 @@ int kernel_consumer_add_channel(struct consumer_socket *sock, channel->channel->name, channel->stream_count, channel->channel->attr.output, - CONSUMER_CHANNEL_TYPE_DATA); + CONSUMER_CHANNEL_TYPE_DATA, + channel->channel->attr.tracefile_size, + channel->channel->attr.tracefile_count); health_code_update(); @@ -112,7 +115,7 @@ error: * Sending metadata to the consumer with command ADD_CHANNEL and ADD_STREAM. */ int kernel_consumer_add_metadata(struct consumer_socket *sock, - struct ltt_kernel_session *session) + struct ltt_kernel_session *session, int no_monitor) { int ret; char tmp_path[PATH_MAX]; @@ -133,7 +136,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, /* Get the right path name destination */ if (consumer->type == CONSUMER_DST_LOCAL) { /* Set application path to the destination path */ - ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s", + ret = snprintf(tmp_path, sizeof(tmp_path), "%s%s", consumer->dst.trace_path, consumer->subdir); if (ret < 0) { PERROR("snprintf metadata path"); @@ -173,7 +176,8 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, DEFAULT_METADATA_NAME, 1, DEFAULT_KERNEL_CHANNEL_OUTPUT, - CONSUMER_CHANNEL_TYPE_METADATA); + CONSUMER_CHANNEL_TYPE_METADATA, + 0, 0); health_code_update(); @@ -189,7 +193,15 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, LTTNG_CONSUMER_ADD_STREAM, session->metadata->fd, session->metadata_stream_fd, - 0); /* CPU: 0 for metadata. */ + 0); /* CPU: 0 for metadata. */ + + /* + * Set the no monitor flag. If set to 1, it indicates the consumer to NOT + * monitor the stream but rather add it to a special list in the associated + * channel. This is used to handle ephemeral stream used by the snapshot + * command or store streams for the flight recorder mode. + */ + lkm.u.stream.no_monitor = no_monitor; health_code_update(); @@ -319,7 +331,7 @@ int kernel_consumer_send_session(struct consumer_socket *sock, DBG("Sending session stream to kernel consumer"); if (session->metadata_stream_fd >= 0) { - ret = kernel_consumer_add_metadata(sock, session); + ret = kernel_consumer_add_metadata(sock, session, 0); if (ret < 0) { goto error; }