X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Findex.c;h=5b5c711cb9c718170adf78b1a0cd721945a2ab21;hb=c69130a8727d8ede046f7f8d8d10a1366a2a6945;hp=7182e36cc8e461daf666d6dbc32079dd11b7e5f3;hpb=7591bab11eceedc6a0d1e02fd6f85592267a63b5;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/index.c b/src/bin/lttng-relayd/index.c index 7182e36cc..5b5c711cb 100644 --- a/src/bin/lttng-relayd/index.c +++ b/src/bin/lttng-relayd/index.c @@ -144,7 +144,7 @@ struct relay_index *relay_index_get_by_id_or_create(struct relay_stream *stream, index = relay_index_create(stream, net_seq_num); if (!index) { ERR("Cannot create index for stream id %" PRIu64 " and seq_num %" PRIu64, - index->stream->stream_handle, net_seq_num); + stream->stream_handle, net_seq_num); goto end; } oldindex = relay_index_add_unique(stream, index); @@ -333,3 +333,42 @@ void relay_index_close_all(struct relay_stream *stream) } rcu_read_unlock(); } + +void relay_index_close_partial_fd(struct relay_stream *stream) +{ + struct lttng_ht_iter iter; + struct relay_index *index; + + rcu_read_lock(); + cds_lfht_for_each_entry(stream->indexes_ht->ht, &iter.iter, + index, index_n.node) { + if (!index->index_fd) { + continue; + } + /* + * Partial index has its index_fd: we have only + * received its info from the data socket. + * Put self-ref from index. + */ + relay_index_put(index); + } + rcu_read_unlock(); +} + +uint64_t relay_index_find_last(struct relay_stream *stream) +{ + struct lttng_ht_iter iter; + struct relay_index *index; + uint64_t net_seq_num = -1ULL; + + rcu_read_lock(); + cds_lfht_for_each_entry(stream->indexes_ht->ht, &iter.iter, + index, index_n.node) { + if (net_seq_num == -1ULL || + index->index_n.key > net_seq_num) { + net_seq_num = index->index_n.key; + } + } + rcu_read_unlock(); + return net_seq_num; +}