/* 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");
* 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];
/* 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");
session->metadata_stream_fd,
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();
/* Send stream and file descriptor */
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;
}