struct lttng_consumer_channel {
/* Is the channel published in the channel hash tables? */
bool is_published;
+ /*
+ * Was the channel deleted (logically) and waiting to be reclaimed?
+ * If this flag is set, no modification that is not cleaned-up by the
+ * RCU reclamation callback should be made
+ */
+ bool is_deleted;
/* HT node used for consumer_data.channel_ht */
struct lttng_ht_node_u64 node;
/* HT node used for consumer_data.channels_by_session_id_ht */
* a session with per-PID buffers.
*/
uint64_t session_id_per_pid;
- /* Channel trace file path name. */
+ /*
+ * In the case of local streams, this field contains the channel's
+ * output path; a path relative to the session's output path.
+ * e.g. ust/uid/1000/64-bit
+ *
+ * In the case of remote streams, the contents of this field depends
+ * on the version of the relay daemon peer. For 2.11+ peers, the
+ * contents are the same as in the local case. However, for legacy
+ * peers, this contains a path of the form:
+ * /hostname/session_path/ust/uid/1000/64-bit
+ */
char pathname[PATH_MAX];
/* Channel name. */
char name[LTTNG_SYMBOL_NAME_LEN];
*/
bool quiescent;
+ /*
+ * True if the sequence number is not available (lttng-modules < 2.8).
+ */
+ bool sequence_number_unavailable;
+
/*
* metadata_timer_lock protects flags waiting_on_metadata and
* missed_metadata_flush.
bool missed_metadata_flush;
enum lttng_event_output output;
- /* Maximum subbuffer size. */
+ /* Maximum subbuffer size (in bytes). */
unsigned long max_sb_size;
/*
pthread_mutex_t metadata_rdv_lock;
/*
- * rotate_position represents the position in the ring-buffer that has to
- * be flushed to disk to complete the ongoing rotation. When that position
- * is reached, this tracefile can be closed and a new one is created in
- * channel_read_only_attributes.path.
+ * rotate_position represents the packet sequence number of the last
+ * packet which belongs to the current trace chunk prior to the rotation.
+ * When that position is reached, this tracefile can be closed and a
+ * new one is created in channel_read_only_attributes.path.
*/
- unsigned long rotate_position;
+ uint64_t rotate_position;
/*
* Read-only copies of channel values. We cannot safely access the
struct lttng_directory_handle *chunk_directory_handle);
enum lttcomm_return_code lttng_consumer_close_trace_chunk(
const uint64_t *relayd_id, uint64_t session_id,
- uint64_t chunk_id, time_t chunk_close_timestamp);
+ uint64_t chunk_id, time_t chunk_close_timestamp,
+ const enum lttng_trace_chunk_command_type *close_command,
+ char *path);
enum lttcomm_return_code lttng_consumer_trace_chunk_exists(
const uint64_t *relayd_id, uint64_t session_id,
uint64_t chunk_id);