* David Goulet ([email protected]) wrote: > Remove the use of the "waitfd_node" for metadata and index the "node" by > wait fd during stream allocation only for metadata stream. > > This was done so the waitfd node could be used later on for the hash > table indexing stream by session id the traced data check command (soon > to be implemented).
this last changelog paragraph, being using "was" (past) is confusing me. Is it what you are now doing (present) or what was there before that you are changing ? Thanks, Mathieu > > Signed-off-by: David Goulet <[email protected]> > --- > src/common/consumer.c | 36 +++++++++++++++++------------------- > 1 file changed, 17 insertions(+), 19 deletions(-) > > diff --git a/src/common/consumer.c b/src/common/consumer.c > index 1fb9960..0c1a812 100644 > --- a/src/common/consumer.c > +++ b/src/common/consumer.c > @@ -172,17 +172,6 @@ void consumer_free_stream(struct rcu_head *head) > free(stream); > } > > -static > -void consumer_free_metadata_stream(struct rcu_head *head) > -{ > - struct lttng_ht_node_ulong *node = > - caa_container_of(head, struct lttng_ht_node_ulong, head); > - struct lttng_consumer_stream *stream = > - caa_container_of(node, struct lttng_consumer_stream, > waitfd_node); > - > - free(stream); > -} > - > /* > * RCU protected relayd socket pair free. > */ > @@ -417,8 +406,17 @@ struct lttng_consumer_stream *consumer_allocate_stream( > stream->metadata_flag = metadata_flag; > strncpy(stream->path_name, path_name, sizeof(stream->path_name)); > stream->path_name[sizeof(stream->path_name) - 1] = '\0'; > - lttng_ht_node_init_ulong(&stream->waitfd_node, stream->wait_fd); > - lttng_ht_node_init_ulong(&stream->node, stream->key); > + > + /* > + * Index differently the metadata node because the thread is using an > + * internal hash table to match streams in the metadata_ht to the epoll > set > + * file descriptor. > + */ > + if (metadata_flag) { > + lttng_ht_node_init_ulong(&stream->node, stream->wait_fd); > + } else { > + lttng_ht_node_init_ulong(&stream->node, stream->key); > + } > > /* > * The cpu number is needed before using any ustctl_* actions. Ignored > for > @@ -1578,11 +1576,11 @@ static void destroy_stream_ht(struct lttng_ht *ht) > } > > rcu_read_lock(); > - cds_lfht_for_each_entry(ht->ht, &iter.iter, stream, waitfd_node.node) { > + cds_lfht_for_each_entry(ht->ht, &iter.iter, stream, node.node) { > ret = lttng_ht_del(ht, &iter); > assert(!ret); > > - call_rcu(&stream->waitfd_node.head, > consumer_free_metadata_stream); > + call_rcu(&stream->node.head, consumer_free_stream); > } > rcu_read_unlock(); > > @@ -1636,7 +1634,7 @@ void consumer_del_metadata_stream(struct > lttng_consumer_stream *stream, > } > > rcu_read_lock(); > - iter.iter.node = &stream->waitfd_node.node; > + iter.iter.node = &stream->node.node; > ret = lttng_ht_del(ht, &iter); > assert(!ret); > rcu_read_unlock(); > @@ -1707,7 +1705,7 @@ end: > } > > free_stream: > - call_rcu(&stream->waitfd_node.head, consumer_free_metadata_stream); > + call_rcu(&stream->node.head, consumer_free_stream); > } > > /* > @@ -1756,7 +1754,7 @@ static int consumer_add_metadata_stream(struct > lttng_consumer_stream *stream, > /* Steal stream identifier to avoid having streams with the same key */ > consumer_steal_stream_key(stream->key, ht); > > - lttng_ht_add_unique_ulong(ht, &stream->waitfd_node); > + lttng_ht_add_unique_ulong(ht, &stream->node); > rcu_read_unlock(); > > pthread_mutex_unlock(&consumer_data.lock); > @@ -1881,7 +1879,7 @@ restart: > assert(node); > > stream = caa_container_of(node, struct > lttng_consumer_stream, > - waitfd_node); > + node); > > /* Check for error event */ > if (revents & (LPOLLERR | LPOLLHUP)) { > -- > 1.7.10.4 > > > _______________________________________________ > lttng-dev mailing list > [email protected] > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
