X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=src%2Fcommon%2Ftrace-chunk.c;h=c41c23249dd8ffbed1d2fd6930d2207d18733645;hb=d72eb77f6e7a272889ad0eace21da52ae483800e;hp=b303607e348d8501133fe41a6b9b53683c35fc0f;hpb=80516611b6f19201b1e173fb448935aca7a9e668;p=lttng-tools.git diff --git a/src/common/trace-chunk.c b/src/common/trace-chunk.c index b303607e3..c41c23249 100644 --- a/src/common/trace-chunk.c +++ b/src/common/trace-chunk.c @@ -966,8 +966,8 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_credentials( pthread_mutex_lock(&chunk->lock); if (chunk->credentials.is_set) { if (chunk->credentials.value.use_current_user) { - credentials->uid = geteuid(); - credentials->gid = getegid(); + LTTNG_OPTIONAL_SET(&credentials->uid, geteuid()); + LTTNG_OPTIONAL_SET(&credentials->gid, getegid()); } else { *credentials = chunk->credentials.value.user; } @@ -1077,9 +1077,8 @@ enum lttng_trace_chunk_status lttng_trace_chunk_set_as_owner( * A nameless chunk does not need its own output directory. * The session's output directory will be used. */ - const bool reference_acquired = - lttng_directory_handle_get( - session_output_directory); + reference_acquired = lttng_directory_handle_get( + session_output_directory); assert(reference_acquired); chunk_directory_handle = session_output_directory; @@ -2001,7 +2000,20 @@ LTTNG_HIDDEN struct lttng_trace_chunk * lttng_trace_chunk_registry_publish_chunk( struct lttng_trace_chunk_registry *registry, - uint64_t session_id, struct lttng_trace_chunk *chunk) + uint64_t session_id, + struct lttng_trace_chunk *chunk) +{ + bool unused; + + return lttng_trace_chunk_registry_publish_chunk_published( + registry, session_id, chunk, &unused); +} + +struct lttng_trace_chunk * +lttng_trace_chunk_registry_publish_chunk_published( + struct lttng_trace_chunk_registry *registry, + uint64_t session_id, struct lttng_trace_chunk *chunk, + bool *previously_published) { struct lttng_trace_chunk_registry_element *element; unsigned long element_hash; @@ -2036,6 +2048,7 @@ lttng_trace_chunk_registry_publish_chunk( element->registry = registry; /* Acquire a reference for the caller. */ if (lttng_trace_chunk_get(&element->chunk)) { + *previously_published = false; break; } else { /* @@ -2062,6 +2075,7 @@ lttng_trace_chunk_registry_publish_chunk( if (lttng_trace_chunk_get(published_chunk)) { lttng_trace_chunk_put(&element->chunk); element = published_element; + *previously_published = true; break; } /*