int64_t blocking_timeout,
const char *root_shm_path,
const char *shm_path,
- struct lttng_trace_chunk *trace_chunk)
+ struct lttng_trace_chunk *trace_chunk,
+ const struct lttng_credentials *buffer_credentials)
{
assert(msg);
if (trace_chunk) {
uint64_t chunk_id;
enum lttng_trace_chunk_status chunk_status;
- struct lttng_credentials chunk_credentials;
chunk_status = lttng_trace_chunk_get_id(trace_chunk, &chunk_id);
assert(chunk_status == LTTNG_TRACE_CHUNK_STATUS_OK);
LTTNG_OPTIONAL_SET(&msg->u.ask_channel.chunk_id, chunk_id);
-
- chunk_status = lttng_trace_chunk_get_credentials(trace_chunk,
- &chunk_credentials);
- assert(chunk_status == LTTNG_TRACE_CHUNK_STATUS_OK);
- msg->u.ask_channel.buffer_credentials.uid =
- chunk_credentials.uid;
- msg->u.ask_channel.buffer_credentials.gid =
- chunk_credentials.gid;
}
+ msg->u.ask_channel.buffer_credentials.uid = buffer_credentials->uid;
+ msg->u.ask_channel.buffer_credentials.gid = buffer_credentials->gid;
msg->cmd_type = LTTNG_CONSUMER_ASK_CHANNEL_CREATION;
msg->u.ask_channel.subbuf_size = subbuf_size;
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(
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