relayd: add remote trace chunk creation command
[lttng-tools.git] / src / bin / lttng-sessiond / consumer.c
index 50d19b074cf09542eb1a757f68fa3aaaa135a1db..83c30be86edfee4c2d1443b6ef77ae1f44808887 100644 (file)
@@ -1085,7 +1085,7 @@ int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
                struct lttcomm_relayd_sock *rsock, struct consumer_output *consumer,
                enum lttng_stream_type type, uint64_t session_id,
                const char *session_name, const char *hostname,
-               int session_live_timer)
+               int session_live_timer, const uint64_t *current_chunk_id)
 {
        int ret;
        struct lttcomm_consumer_msg msg;
@@ -1107,7 +1107,7 @@ int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
                                &msg.u.relayd_sock.relayd_session_id,
                                session_name, hostname, session_live_timer,
                                consumer->snapshot, session_id,
-                               sessiond_uuid);
+                               sessiond_uuid, current_chunk_id);
                if (ret < 0) {
                        /* Close the control socket. */
                        (void) relayd_close(rsock);
@@ -1772,7 +1772,6 @@ int consumer_create_trace_chunk(struct consumer_socket *socket,
                goto error;
        }
        msg.u.create_trace_chunk.chunk_id = chunk_id;
-       /* Only used for logging purposes. */
 
        if (chunk_has_local_output) {
                chunk_status = lttng_trace_chunk_get_chunk_directory_handle(
@@ -1793,20 +1792,23 @@ int consumer_create_trace_chunk(struct consumer_socket *socket,
                chunk_dirfd = lttng_directory_handle_get_dirfd(
                                chunk_directory_handle);
                assert(chunk_dirfd >= 0);
-       }
 
-       chunk_status = lttng_trace_chunk_get_credentials(chunk,
-                       &chunk_credentials);
-       if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
-               /*
-                * Not associating credentials to a sessiond chunk is a fatal
-                * internal error.
-                */
-               ret = -LTTNG_ERR_FATAL;
-               goto error;
+               chunk_status = lttng_trace_chunk_get_credentials(
+                               chunk, &chunk_credentials);
+               if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
+                       /*
+                        * Not associating credentials to a sessiond chunk is a
+                        * fatal internal error.
+                        */
+                       ret = -LTTNG_ERR_FATAL;
+                       goto error;
+               }
+               msg.u.create_trace_chunk.credentials.value.uid =
+                               chunk_credentials.uid;
+               msg.u.create_trace_chunk.credentials.value.gid =
+                               chunk_credentials.gid;
+               msg.u.create_trace_chunk.credentials.is_set = 1;
        }
-       msg.u.create_trace_chunk.credentials.uid = chunk_credentials.uid;
-       msg.u.create_trace_chunk.credentials.gid = chunk_credentials.gid;
 
        DBG("Sending consumer create trace chunk command: relayd_id = %" PRId64
                        ", session_id = %" PRIu64 ", chunk_id = %" PRIu64
This page took 0.023843 seconds and 4 git commands to generate.