+ viewer_stream->tracefile_count_last = -1ULL;
+ if (seek_last) {
+ viewer_stream->tracefile_count_current =
+ stream->tracefile_count_current;
+ } else {
+ viewer_stream->tracefile_count_current =
+ stream->oldest_tracefile_id;
+ }
+
+ /*
+ * The deletion of this ctf_trace object is only done in a call RCU of the
+ * relay stream making it valid as long as we have the read side lock.
+ */
+ viewer_stream->ctf_trace = stream->ctf_trace;
+ uatomic_inc(&viewer_stream->ctf_trace->refcount);
+
+ lttng_ht_node_init_u64(&viewer_stream->stream_n, stream->stream_handle);
+ lttng_ht_add_unique_u64(viewer_streams_ht, &viewer_stream->stream_n);
+
+ viewer_stream->index_read_fd = -1;
+ viewer_stream->read_fd = -1;
+
+ /*
+ * This is to avoid a race between the initialization of this object and
+ * the close of the given stream. If the stream is unable to find this
+ * viewer stream when closing, this copy will at least take the latest
+ * value.
+ * We also need that for the seek_last.
+ */
+ viewer_stream->total_index_received = stream->total_index_received;