Oh forgot to reply :P

Yes... my bad. Present... the patch does what's described :)

David

Mathieu Desnoyers:
> * 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
> 

_______________________________________________
lttng-dev mailing list
[email protected]
http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to