Fix: consumerd: use packet sequence number for rotation position
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 7c9477df938787407dc5eaf8b0c569ddfa0557a5..02a92be1e07e45ba71e4c767ebca0f6a18050ec9 100644 (file)
@@ -1185,6 +1185,7 @@ int cmd_setup_relayd(struct ltt_session *session)
 
        DBG("Setting relayd for session %s", session->name);
 
+       rcu_read_lock();
        if (session->current_trace_chunk) {
                enum lttng_trace_chunk_status status = lttng_trace_chunk_get_id(
                                session->current_trace_chunk, &current_chunk_id.value);
@@ -1198,8 +1199,6 @@ int cmd_setup_relayd(struct ltt_session *session)
                }
        }
 
-       rcu_read_lock();
-
        if (usess && usess->consumer && usess->consumer->type == CONSUMER_DST_NET
                        && usess->consumer->enabled) {
                /* For each consumer socket, send relayd sockets */
@@ -4908,6 +4907,12 @@ int cmd_rotate_session(struct ltt_session *session,
                goto end;
        }
 
+       /* Unsupported feature in lttng-modules before 2.8 (lack of sequence number). */
+       if (session->kernel_session && !kernel_supports_ring_buffer_packet_sequence_number()) {
+               cmd_ret = LTTNG_ERR_ROTATION_NOT_AVAILABLE_KERNEL;
+               goto end;
+       }
+
        if (session->rotation_state == LTTNG_ROTATION_STATE_ONGOING) {
                DBG("Refusing to launch a rotation; a rotation is already in progress for session %s",
                                session->name);
This page took 0.023776 seconds and 4 git commands to generate.