X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel.c;h=fc817b2db304187675a38e1c5d8904658fe670a5;hb=e098433c90550d74288498f8c4474ef4c2daea68;hp=ccf315d8901efdcb2e04e50a4de9e85e1073bca2;hpb=5c408ad8ef08a226c018702aca969536f36ac4e5;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index ccf315d89..fc817b2db 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -990,6 +990,8 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, struct consumer_socket *socket; struct lttng_ht_iter iter; struct ltt_kernel_metadata *saved_metadata; + struct ltt_session *session; + uint64_t trace_archive_id; assert(ksess); assert(ksess->consumer); @@ -997,6 +999,12 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, DBG("Kernel snapshot record started"); + session = session_find_by_id(ksess->id); + assert(session); + assert(pthread_mutex_trylock(&session->lock)); + assert(session_trylock_list()); + trace_archive_id = session->current_archive_id; + /* Save current metadata since the following calls will change it. */ saved_metadata = ksess->metadata; saved_metadata_fd = ksess->metadata_stream_fd; @@ -1044,7 +1052,8 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, ret = consumer_snapshot_channel(socket, chan->key, output, 0, ksess->uid, ksess->gid, DEFAULT_KERNEL_TRACE_DIR, wait, - nb_packets_per_stream); + nb_packets_per_stream, + trace_archive_id); if (ret < 0) { ret = LTTNG_ERR_KERN_CONSUMER_FAIL; (void) kernel_consumer_destroy_metadata(socket, @@ -1056,7 +1065,8 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, /* Snapshot metadata, */ ret = consumer_snapshot_channel(socket, ksess->metadata->key, output, 1, ksess->uid, ksess->gid, - DEFAULT_KERNEL_TRACE_DIR, wait, 0); + DEFAULT_KERNEL_TRACE_DIR, wait, 0, + trace_archive_id); if (ret < 0) { ret = LTTNG_ERR_KERN_CONSUMER_FAIL; goto error_consumer; @@ -1169,7 +1179,7 @@ int kernel_rotate_session(struct ltt_session *session) * reach 0 before we complete the iteration over all * the channels. */ - ret = rotate_add_channel_pending(ksess->metadata->fd, + ret = rotate_add_channel_pending(ksess->metadata->key, LTTNG_DOMAIN_KERNEL, session); if (ret < 0) { ret = LTTNG_ERR_KERN_CONSUMER_FAIL; @@ -1190,7 +1200,7 @@ int kernel_rotate_session(struct ltt_session *session) ksess->uid, ksess->gid, ksess->consumer, ksess->consumer->subdir, /* is_metadata_channel */ false, - session->rotate_count, + session->current_archive_id, &session->rotate_pending_relay); if (ret < 0) { ret = LTTNG_ERR_KERN_CONSUMER_FAIL; @@ -1201,11 +1211,11 @@ int kernel_rotate_session(struct ltt_session *session) /* * Rotate the metadata channel. */ - ret = consumer_rotate_channel(socket, ksess->metadata->fd, + ret = consumer_rotate_channel(socket, ksess->metadata->key, ksess->uid, ksess->gid, ksess->consumer, ksess->consumer->subdir, /* is_metadata_channel */ true, - session->rotate_count, + session->current_archive_id, &session->rotate_pending_relay); if (ret < 0) { ret = LTTNG_ERR_KERN_CONSUMER_FAIL;