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);
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;
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,
/* 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;
* 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;
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;
/*
* 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;