Implement the RELAYD_ROTATE_STREAM relay daemon command
[lttng-tools.git] / src / bin / lttng-relayd / stream.h
index e385032cb71f98d4994dfad241e915f61e0cb28a..47ae2e8f9927fdcd672a595bf3c20902fd375846 100644 (file)
@@ -63,6 +63,11 @@ struct relay_stream {
        uint64_t tracefile_size_current;
        uint64_t tracefile_count;
 
+       /*
+        * Position in the tracefile where we have the full index also on disk.
+        */
+       uint64_t pos_after_last_complete_data_index;
+
        /*
         * Counts the number of received indexes. The "tag" associated
         * with an index is taken before incrementing this seqcount.
@@ -129,6 +134,24 @@ struct relay_stream {
        struct lttng_ht_node_u64 node;
        bool in_stream_ht;              /* is stream in stream hash table. */
        struct rcu_head rcu_node;       /* For call_rcu teardown. */
+       /*
+        * When we have written the data and index corresponding to this
+        * seq_num, rotate the tracefile (session rotation). The path_name is
+        * already up-to-date.
+        * This is set to -1ULL when no rotation is pending.
+        *
+        * Always access with stream lock held.
+        */
+       uint64_t rotate_at_seq_num;
+       /*
+        * This is the id of the chunk where we are writing to if no rotation is
+        * pending (rotate_at_seq_num == -1ULL). If a rotation is pending, this
+        * is the chunk_id we will have after the rotation. It must be updated
+        * atomically with rotate_at_seq_num.
+        *
+        * Always access with stream lock held.
+        */
+       uint64_t chunk_id;
 };
 
 struct relay_stream *stream_create(struct ctf_trace *trace,
This page took 0.023563 seconds and 4 git commands to generate.