From 2b5f1a27dceffd016755c0a62c9686c3b61f6aaa Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Fri, 2 Mar 2018 10:41:34 -0500 Subject: [PATCH] Use free running metadata channel key between sessiond and kernel consumer MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Francis Deslauriers Signed-off-by: Jérémie Galarneau --- src/bin/lttng-sessiond/kernel-consumer.c | 8 ++++---- src/bin/lttng-sessiond/kernel.c | 3 ++- src/bin/lttng-sessiond/trace-kernel.h | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/bin/lttng-sessiond/kernel-consumer.c b/src/bin/lttng-sessiond/kernel-consumer.c index 89bf4596b..3f8df6410 100644 --- a/src/bin/lttng-sessiond/kernel-consumer.c +++ b/src/bin/lttng-sessiond/kernel-consumer.c @@ -214,7 +214,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, /* Prep channel message structure */ consumer_init_channel_comm_msg(&lkm, LTTNG_CONSUMER_ADD_CHANNEL, - session->metadata->fd, + session->metadata->key, session->id, pathname, session->uid, @@ -239,7 +239,7 @@ int kernel_consumer_add_metadata(struct consumer_socket *sock, /* Prep stream message structure */ consumer_init_stream_comm_msg(&lkm, LTTNG_CONSUMER_ADD_STREAM, - session->metadata->fd, + session->metadata->key, session->metadata_stream_fd, 0); /* CPU: 0 for metadata. */ @@ -493,11 +493,11 @@ int kernel_consumer_destroy_metadata(struct consumer_socket *socket, assert(metadata); assert(socket); - DBG("Sending kernel consumer destroy channel key %d", metadata->fd); + DBG("Sending kernel consumer destroy channel key %" PRIu64, metadata->key); memset(&msg, 0, sizeof(msg)); msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL; - msg.u.destroy_channel.key = metadata->fd; + msg.u.destroy_channel.key = metadata->key; pthread_mutex_lock(socket->lock); health_code_update(); diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index 77a890db0..47833dc8b 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -535,6 +535,7 @@ int kernel_open_metadata(struct ltt_kernel_session *session) } lkm->fd = ret; + lkm->key = ++next_kernel_channel_key; /* Prevent fd duplication after execlp() */ ret = fcntl(lkm->fd, F_SETFD, FD_CLOEXEC); if (ret < 0) { @@ -1052,7 +1053,7 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, } /* Snapshot metadata, */ - ret = consumer_snapshot_channel(socket, ksess->metadata->fd, output, + ret = consumer_snapshot_channel(socket, ksess->metadata->key, output, 1, ksess->uid, ksess->gid, DEFAULT_KERNEL_TRACE_DIR, wait, 0); if (ret < 0) { diff --git a/src/bin/lttng-sessiond/trace-kernel.h b/src/bin/lttng-sessiond/trace-kernel.h index 9c52cee09..3210d4b33 100644 --- a/src/bin/lttng-sessiond/trace-kernel.h +++ b/src/bin/lttng-sessiond/trace-kernel.h @@ -81,6 +81,7 @@ struct ltt_kernel_channel { /* Metadata */ struct ltt_kernel_metadata { int fd; + uint64_t key; /* Key to reference this channel with the consumer. */ struct lttng_channel *conf; }; -- 2.34.1