X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fsession.c;h=6c30821ff1348a405816af553a7b2951120c8a5c;hb=16100d7ad8517131cc3ef29743e325184802ad13;hp=3dcb1cd3367183f854c8b63b1daefd5a2360831f;hpb=ab5be9fa2eb5ba9600a82cd18fd3cfcbac69169a;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/session.c b/src/bin/lttng-relayd/session.c index 3dcb1cd33..6c30821ff 100644 --- a/src/bin/lttng-relayd/session.c +++ b/src/bin/lttng-relayd/session.c @@ -9,11 +9,11 @@ #define _LGPL_SOURCE #include -#include +#include +#include #include #include #include -#include #include #include @@ -196,7 +196,7 @@ static struct lttng_directory_handle *session_create_output_directory_handle( goto end; } - handle = lttng_directory_handle_create(full_session_path); + handle = fd_tracker_create_directory_handle(the_fd_tracker, full_session_path); end: pthread_mutex_unlock(&session->lock); free(full_session_path); @@ -220,6 +220,7 @@ static int session_set_anonymous_chunk(struct relay_session *session) goto end; } + lttng_trace_chunk_set_fd_tracker(chunk, the_fd_tracker); status = lttng_trace_chunk_set_credentials_current_user(chunk); if (status != LTTNG_TRACE_CHUNK_STATUS_OK) { ret = -1; @@ -232,8 +233,6 @@ static int session_set_anonymous_chunk(struct relay_session *session) goto end; } - lttng_trace_chunk_set_fd_tracker(chunk, the_fd_tracker); - output_directory = NULL; session->current_trace_chunk = chunk; chunk = NULL; end: @@ -316,6 +315,17 @@ struct relay_session *session_create(const char *session_name, PERROR("Failed to allocate session"); goto error; } + + pthread_mutex_lock(&last_relay_session_id_lock); + session->id = ++last_relay_session_id; + pthread_mutex_unlock(&last_relay_session_id_lock); + + lttng_ht_node_init_u64(&session->session_n, session->id); + urcu_ref_init(&session->ref); + CDS_INIT_LIST_HEAD(&session->recv_list); + pthread_mutex_init(&session->lock, NULL); + pthread_mutex_init(&session->recv_list_lock, NULL); + if (lttng_strncpy(session->session_name, session_name, sizeof(session->session_name))) { WARN("Session name exceeds maximal allowed length"); @@ -333,6 +343,12 @@ struct relay_session *session_create(const char *session_name, } if (creation_time) { LTTNG_OPTIONAL_SET(&session->creation_time, *creation_time); + } else { + LTTNG_OPTIONAL_SET(&session->creation_time, time(NULL)); + if (session->creation_time.value == (time_t) -1) { + PERROR("Failed to sample session creation time"); + goto error; + } } session->session_name_contains_creation_time = session_name_contains_creation_time; @@ -342,17 +358,8 @@ struct relay_session *session_create(const char *session_name, goto error; } - pthread_mutex_lock(&last_relay_session_id_lock); - session->id = ++last_relay_session_id; - pthread_mutex_unlock(&last_relay_session_id_lock); - session->major = major; session->minor = minor; - lttng_ht_node_init_u64(&session->session_n, session->id); - urcu_ref_init(&session->ref); - CDS_INIT_LIST_HEAD(&session->recv_list); - pthread_mutex_init(&session->lock, NULL); - pthread_mutex_init(&session->recv_list_lock, NULL); session->live_timer = live_timer; session->snapshot = snapshot;