* 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

Reply via email to