X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ftrace-chunk.c;h=4bc3dbae0c79546c53e4a42f123678889c7ff497;hp=ec52e5d2b3e30598216e26bf1f8eea6fd7a2ae9a;hb=f895927f329180ca1e6f4426e9d3c6250ae698ba;hpb=ad8bec244fdbb0e7705fd1865ae71f36f06d2b94 diff --git a/src/common/trace-chunk.c b/src/common/trace-chunk.c index ec52e5d2b..4bc3dbae0 100644 --- a/src/common/trace-chunk.c +++ b/src/common/trace-chunk.c @@ -182,7 +182,7 @@ struct fs_handle *fs_handle_untracked_create( bool reference_acquired; char *path_copy = strdup(path); - assert(fd >= 0); + LTTNG_ASSERT(fd >= 0); if (!path_copy) { PERROR("Failed to copy file path while creating untracked filesystem handle"); goto end; @@ -203,7 +203,7 @@ struct fs_handle *fs_handle_untracked_create( handle->fd = fd; reference_acquired = lttng_directory_handle_get(directory_handle); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); handle->location.directory_handle = directory_handle; /* Ownership is transferred. */ handle->location.path = path_copy; @@ -368,7 +368,7 @@ void lttng_trace_chunk_fini(struct lttng_trace_chunk *chunk) } if (chunk->chunk_directory) { lttng_directory_handle_put(chunk->chunk_directory); - chunk->chunk_directory = NULL; + chunk->chunk_directory = NULL; } free(chunk->name); chunk->name = NULL; @@ -394,21 +394,19 @@ end: return chunk; } -LTTNG_HIDDEN struct lttng_trace_chunk *lttng_trace_chunk_create_anonymous(void) { DBG("Creating anonymous trace chunk"); return lttng_trace_chunk_allocate(); } -LTTNG_HIDDEN struct lttng_trace_chunk *lttng_trace_chunk_create( uint64_t chunk_id, time_t chunk_creation_time, const char *path) { struct lttng_trace_chunk *chunk; - char chunk_creation_datetime_buf[16] = {}; + char chunk_creation_datetime_buf[16] = {}; const char *chunk_creation_datetime_str = "(formatting error)"; - struct tm timeinfo_buf, *timeinfo; + struct tm timeinfo_buf, *timeinfo; timeinfo = localtime_r(&chunk_creation_time, &timeinfo_buf); if (timeinfo) { @@ -440,7 +438,7 @@ struct lttng_trace_chunk *lttng_trace_chunk_create( ERR("Failed to allocate trace chunk name storage"); goto error; } - } + } if (path) { chunk->path = strdup(path); if (!chunk->path) { @@ -455,7 +453,7 @@ struct lttng_trace_chunk *lttng_trace_chunk_create( } } - DBG("Chunk name set to \"%s\"", chunk->name ? : "(none)"); + DBG("Chunk name set to \"%s\"", chunk->name ? : "(none)"); end: return chunk; error: @@ -463,17 +461,15 @@ error: return NULL; } -LTTNG_HIDDEN void lttng_trace_chunk_set_fd_tracker(struct lttng_trace_chunk *chunk, struct fd_tracker *fd_tracker) { - assert(!chunk->session_output_directory); - assert(!chunk->chunk_directory); - assert(lttng_dynamic_pointer_array_get_count(&chunk->files) == 0); + LTTNG_ASSERT(!chunk->session_output_directory); + LTTNG_ASSERT(!chunk->chunk_directory); + LTTNG_ASSERT(lttng_dynamic_pointer_array_get_count(&chunk->files) == 0); chunk->fd_tracker = fd_tracker; } -LTTNG_HIDDEN struct lttng_trace_chunk *lttng_trace_chunk_copy( struct lttng_trace_chunk *source_chunk) { @@ -522,7 +518,7 @@ struct lttng_trace_chunk *lttng_trace_chunk_copy( const bool reference_acquired = lttng_directory_handle_get( source_chunk->session_output_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); new_chunk->session_output_directory = source_chunk->session_output_directory; } @@ -530,7 +526,7 @@ struct lttng_trace_chunk *lttng_trace_chunk_copy( const bool reference_acquired = lttng_directory_handle_get( source_chunk->chunk_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); new_chunk->chunk_directory = source_chunk->chunk_directory; } new_chunk->close_command = source_chunk->close_command; @@ -544,7 +540,6 @@ error_unlock: return NULL; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_id( struct lttng_trace_chunk *chunk, uint64_t *id) { @@ -560,7 +555,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_id( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_creation_timestamp( struct lttng_trace_chunk *chunk, time_t *creation_ts) @@ -577,7 +571,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_creation_timestamp( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_close_timestamp( struct lttng_trace_chunk *chunk, time_t *close_ts) { @@ -593,7 +586,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_close_timestamp( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_close_timestamp( struct lttng_trace_chunk *chunk, time_t close_ts) { @@ -634,7 +626,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_name( struct lttng_trace_chunk *chunk, const char **name, bool *name_overridden) @@ -642,10 +633,10 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_name( enum lttng_trace_chunk_status status = LTTNG_TRACE_CHUNK_STATUS_OK; pthread_mutex_lock(&chunk->lock); - if (name_overridden) { + if (name_overridden) { *name_overridden = chunk->name_overridden; - } - if (!chunk->name) { + } + if (!chunk->name) { status = LTTNG_TRACE_CHUNK_STATUS_NONE; goto end; } @@ -655,7 +646,6 @@ end: return status; } -LTTNG_HIDDEN bool lttng_trace_chunk_get_name_overridden(struct lttng_trace_chunk *chunk) { bool name_overridden; @@ -687,7 +677,6 @@ bool is_valid_chunk_name(const char *name) return true; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_override_name( struct lttng_trace_chunk *chunk, const char *name) @@ -880,7 +869,7 @@ enum lttng_trace_chunk_status lttng_trace_chunk_rename_path_no_lock( const bool reference_acquired = lttng_directory_handle_get( chunk->session_output_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); rename_directory = chunk->session_output_directory; /* Move toplevel directories. */ @@ -942,7 +931,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_rename_path( struct lttng_trace_chunk *chunk, const char *path) @@ -956,7 +944,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_rename_path( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_credentials( struct lttng_trace_chunk *chunk, struct lttng_credentials *credentials) @@ -966,8 +953,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; } @@ -978,7 +965,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_credentials( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_credentials( struct lttng_trace_chunk *chunk, const struct lttng_credentials *user_credentials) @@ -1000,7 +986,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_credentials_current_user( struct lttng_trace_chunk *chunk) { @@ -1021,7 +1006,6 @@ end: } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_as_owner( struct lttng_trace_chunk *chunk, struct lttng_directory_handle *session_output_directory) @@ -1077,18 +1061,17 @@ 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); + LTTNG_ASSERT(reference_acquired); chunk_directory_handle = session_output_directory; } chunk->chunk_directory = chunk_directory_handle; chunk_directory_handle = NULL; reference_acquired = lttng_directory_handle_get( session_output_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); chunk->session_output_directory = session_output_directory; LTTNG_OPTIONAL_SET(&chunk->mode, TRACE_CHUNK_MODE_OWNER); end: @@ -1096,7 +1079,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_as_user( struct lttng_trace_chunk *chunk, struct lttng_directory_handle *chunk_directory) @@ -1115,7 +1097,7 @@ enum lttng_trace_chunk_status lttng_trace_chunk_set_as_user( goto end; } reference_acquired = lttng_directory_handle_get(chunk_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); chunk->chunk_directory = chunk_directory; LTTNG_OPTIONAL_SET(&chunk->mode, TRACE_CHUNK_MODE_USER); end: @@ -1123,7 +1105,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_session_output_directory_handle( struct lttng_trace_chunk *chunk, @@ -1140,7 +1121,7 @@ lttng_trace_chunk_get_session_output_directory_handle( const bool reference_acquired = lttng_directory_handle_get( chunk->session_output_directory); - assert(reference_acquired); + LTTNG_ASSERT(reference_acquired); *handle = chunk->session_output_directory; } end: @@ -1148,7 +1129,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_borrow_chunk_directory_handle( struct lttng_trace_chunk *chunk, const struct lttng_directory_handle **handle) @@ -1216,7 +1196,6 @@ end: return ret; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_create_subdirectory( struct lttng_trace_chunk *chunk, const char *path) @@ -1347,7 +1326,7 @@ void lttng_trace_chunk_remove_file( } ret = lttng_dynamic_pointer_array_remove_pointer( &chunk->files, index); - assert(!ret); + LTTNG_ASSERT(!ret); } static @@ -1384,7 +1363,7 @@ enum lttng_trace_chunk_status _lttng_trace_chunk_open_fs_handle_locked( goto end; } if (chunk->fd_tracker) { - assert(chunk->credentials.value.use_current_user); + LTTNG_ASSERT(chunk->credentials.value.use_current_user); *out_handle = fd_tracker_open_fs_handle(chunk->fd_tracker, chunk->chunk_directory, file_path, flags, &mode); ret = *out_handle ? 0 : -1; @@ -1418,7 +1397,6 @@ end: return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_open_fs_handle( struct lttng_trace_chunk *chunk, const char *file_path, @@ -1436,7 +1414,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_open_fs_handle( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_open_file( struct lttng_trace_chunk *chunk, const char *file_path, @@ -1453,7 +1430,7 @@ enum lttng_trace_chunk_status lttng_trace_chunk_open_file( * Using this method is never valid when an fd_tracker is being * used since the resulting file descriptor would not be tracked. */ - assert(!chunk->fd_tracker); + LTTNG_ASSERT(!chunk->fd_tracker); status = _lttng_trace_chunk_open_fs_handle_locked(chunk, file_path, flags, mode, &fs_handle, expect_no_file); pthread_mutex_unlock(&chunk->lock); @@ -1470,7 +1447,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_open_file( return status; } -LTTNG_HIDDEN int lttng_trace_chunk_unlink_file(struct lttng_trace_chunk *chunk, const char *file_path) { @@ -1572,9 +1548,9 @@ int lttng_trace_chunk_move_to_completed_post_release( goto end; } - assert(trace_chunk->mode.value == TRACE_CHUNK_MODE_OWNER); - assert(!trace_chunk->name_overridden); - assert(trace_chunk->path); + LTTNG_ASSERT(trace_chunk->mode.value == TRACE_CHUNK_MODE_OWNER); + LTTNG_ASSERT(!trace_chunk->name_overridden); + LTTNG_ASSERT(trace_chunk->path); archived_chunk_name = generate_chunk_name(chunk_id, creation_timestamp, &close_timestamp); @@ -1586,7 +1562,7 @@ int lttng_trace_chunk_move_to_completed_post_release( ret = lttng_directory_handle_create_subdirectory_as_user( trace_chunk->session_output_directory, - DEFAULT_ARCHIVED_TRACE_CHUNKS_DIRECTORY, + DEFAULT_ARCHIVED_TRACE_CHUNKS_DIRECTORY, DIR_CREATION_MODE, !trace_chunk->credentials.value.use_current_user ? &trace_chunk->credentials.value.user : @@ -1696,8 +1672,8 @@ int lttng_trace_chunk_delete_post_release_owner( DBG("Trace chunk \"delete\" close command post-release (Owner)"); - assert(trace_chunk->session_output_directory); - assert(trace_chunk->chunk_directory); + LTTNG_ASSERT(trace_chunk->session_output_directory); + LTTNG_ASSERT(trace_chunk->chunk_directory); /* Remove empty directories. */ count = lttng_dynamic_pointer_array_get_count( @@ -1758,7 +1734,6 @@ int lttng_trace_chunk_delete_post_release( } } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_get_close_command( struct lttng_trace_chunk *chunk, enum lttng_trace_chunk_command_type *command_type) @@ -1776,7 +1751,6 @@ enum lttng_trace_chunk_status lttng_trace_chunk_get_close_command( return status; } -LTTNG_HIDDEN enum lttng_trace_chunk_status lttng_trace_chunk_set_close_command( struct lttng_trace_chunk *chunk, enum lttng_trace_chunk_command_type close_command) @@ -1794,10 +1768,10 @@ enum lttng_trace_chunk_status lttng_trace_chunk_set_close_command( DBG("Overriding trace chunk close command from \"%s\" to \"%s\"", close_command_names[chunk->close_command.value], close_command_names[close_command]); - } else { + } else { DBG("Setting trace chunk close command to \"%s\"", close_command_names[close_command]); - } + } /* * Unset close command for no-op for backward compatibility with relayd * 2.11. @@ -1812,7 +1786,6 @@ end: return status; } -LTTNG_HIDDEN const char *lttng_trace_chunk_command_type_get_name( enum lttng_trace_chunk_command_type command) { @@ -1828,13 +1801,17 @@ const char *lttng_trace_chunk_command_type_get_name( } } -LTTNG_HIDDEN bool lttng_trace_chunk_ids_equal(const struct lttng_trace_chunk *chunk_a, const struct lttng_trace_chunk *chunk_b) { bool equal = false; - if (!chunk_a || !chunk_b) { + if (chunk_a == chunk_b) { + equal = true; + goto end; + } + + if (!!chunk_a ^ !!chunk_b) { goto end; } @@ -1854,7 +1831,6 @@ end: return equal; } -LTTNG_HIDDEN bool lttng_trace_chunk_get(struct lttng_trace_chunk *chunk) { return urcu_ref_get_unless_zero(&chunk->ref); @@ -1907,17 +1883,15 @@ void lttng_trace_chunk_release(struct urcu_ref *ref) } } -LTTNG_HIDDEN void lttng_trace_chunk_put(struct lttng_trace_chunk *chunk) { if (!chunk) { return; } - assert(chunk->ref.refcount); + LTTNG_ASSERT(chunk->ref.refcount); urcu_ref_put(&chunk->ref, lttng_trace_chunk_release); } -LTTNG_HIDDEN struct lttng_trace_chunk_registry *lttng_trace_chunk_registry_create(void) { struct lttng_trace_chunk_registry *registry; @@ -1939,7 +1913,6 @@ error: return NULL; } -LTTNG_HIDDEN void lttng_trace_chunk_registry_destroy( struct lttng_trace_chunk_registry *registry) { @@ -1948,7 +1921,7 @@ void lttng_trace_chunk_registry_destroy( } if (registry->ht) { int ret = cds_lfht_destroy(registry->ht, NULL); - assert(!ret); + LTTNG_ASSERT(!ret); } free(registry); } @@ -1992,7 +1965,6 @@ end: return element; } -LTTNG_HIDDEN struct lttng_trace_chunk * lttng_trace_chunk_registry_publish_chunk( struct lttng_trace_chunk_registry *registry, @@ -2022,13 +1994,13 @@ lttng_trace_chunk_registry_publish_chunk( struct lttng_trace_chunk_registry_element *published_element; published_node = cds_lfht_add_unique(registry->ht, - element_hash, + element_hash, lttng_trace_chunk_registry_element_match, - element, + element, &element->trace_chunk_registry_ht_node); if (published_node == &element->trace_chunk_registry_ht_node) { /* Successfully published the new element. */ - element->registry = registry; + element->registry = registry; /* Acquire a reference for the caller. */ if (lttng_trace_chunk_get(&element->chunk)) { break; @@ -2119,17 +2091,15 @@ end: return published_chunk; } -LTTNG_HIDDEN struct lttng_trace_chunk * lttng_trace_chunk_registry_find_chunk( const struct lttng_trace_chunk_registry *registry, uint64_t session_id, uint64_t chunk_id) { - return _lttng_trace_chunk_registry_find_chunk(registry, + return _lttng_trace_chunk_registry_find_chunk(registry, session_id, &chunk_id); } -LTTNG_HIDDEN int lttng_trace_chunk_registry_chunk_exists( const struct lttng_trace_chunk_registry *registry, uint64_t session_id, uint64_t chunk_id, bool *chunk_exists) @@ -2164,17 +2134,15 @@ end: return ret; } -LTTNG_HIDDEN struct lttng_trace_chunk * lttng_trace_chunk_registry_find_anonymous_chunk( const struct lttng_trace_chunk_registry *registry, uint64_t session_id) { - return _lttng_trace_chunk_registry_find_chunk(registry, + return _lttng_trace_chunk_registry_find_chunk(registry, session_id, NULL); } -LTTNG_HIDDEN unsigned int lttng_trace_chunk_registry_put_each_chunk( const struct lttng_trace_chunk_registry *registry) {