projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: free metadata cache after grace period in consumer
[lttng-tools.git]
/
src
/
common
/
consumer.c
diff --git
a/src/common/consumer.c
b/src/common/consumer.c
index 1cb1c47431303e6ed3c516948a78b5807855c48c..f2ccf9536b147b72574638046135da3e425b771a 100644
(file)
--- a/
src/common/consumer.c
+++ b/
src/common/consumer.c
@@
-286,6
+286,17
@@
static void free_channel_rcu(struct rcu_head *head)
struct lttng_consumer_channel *channel =
caa_container_of(node, struct lttng_consumer_channel, node);
struct lttng_consumer_channel *channel =
caa_container_of(node, struct lttng_consumer_channel, node);
+ switch (consumer_data.type) {
+ case LTTNG_CONSUMER_KERNEL:
+ break;
+ case LTTNG_CONSUMER32_UST:
+ case LTTNG_CONSUMER64_UST:
+ lttng_ustconsumer_free_channel(channel);
+ break;
+ default:
+ ERR("Unknown consumer_data type");
+ abort();
+ }
free(channel);
}
free(channel);
}
@@
-563,6
+574,7
@@
struct lttng_consumer_stream *consumer_allocate_stream(uint64_t channel_key,
stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
stream->index_fd = -1;
pthread_mutex_init(&stream->lock, NULL);
stream->endpoint_status = CONSUMER_ENDPOINT_ACTIVE;
stream->index_fd = -1;
pthread_mutex_init(&stream->lock, NULL);
+ pthread_mutex_init(&stream->metadata_timer_lock, NULL);
/* If channel is the metadata, flag this stream as metadata. */
if (type == CONSUMER_CHANNEL_TYPE_METADATA) {
/* If channel is the metadata, flag this stream as metadata. */
if (type == CONSUMER_CHANNEL_TYPE_METADATA) {
@@
-937,6
+949,7
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
uint64_t session_id_per_pid,
unsigned int monitor,
unsigned int live_timer_interval,
uint64_t session_id_per_pid,
unsigned int monitor,
unsigned int live_timer_interval,
+ const char *root_shm_path,
const char *shm_path)
{
struct lttng_consumer_channel *channel;
const char *shm_path)
{
struct lttng_consumer_channel *channel;
@@
-994,6
+1007,10
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
strncpy(channel->name, name, sizeof(channel->name));
channel->name[sizeof(channel->name) - 1] = '\0';
strncpy(channel->name, name, sizeof(channel->name));
channel->name[sizeof(channel->name) - 1] = '\0';
+ if (root_shm_path) {
+ strncpy(channel->root_shm_path, root_shm_path, sizeof(channel->root_shm_path));
+ channel->root_shm_path[sizeof(channel->root_shm_path) - 1] = '\0';
+ }
if (shm_path) {
strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path));
channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';
if (shm_path) {
strncpy(channel->shm_path, shm_path, sizeof(channel->shm_path));
channel->shm_path[sizeof(channel->shm_path) - 1] = '\0';
This page took
0.023468 seconds
and
4
git commands to generate.