fd-tracker: restore suspended handles from their inode's path
[lttng-tools.git] / src / bin / lttng-relayd / main.c
index 62e1cf9309e4355c7b6e892fc999a20c665557a9..63927bf9f73b8cd008495d4a4dde9e1f1cc1b4a1 100644 (file)
@@ -2632,7 +2632,6 @@ static int relay_create_trace_chunk(const struct lttcomm_relayd_hdr *recv_hdr,
        struct lttng_trace_chunk *chunk = NULL, *published_chunk = NULL;
        enum lttng_error_code reply_code = LTTNG_OK;
        enum lttng_trace_chunk_status chunk_status;
-       struct lttng_directory_handle *session_output = NULL;
        const char *new_path;
 
        if (!session || !conn->version_check_done) {
@@ -2729,15 +2728,9 @@ static int relay_create_trace_chunk(const struct lttcomm_relayd_hdr *recv_hdr,
                goto end;
        }
 
-       session_output = session_create_output_directory_handle(
-                       conn->session);
-       if (!session_output) {
-               reply_code = LTTNG_ERR_CREATE_DIR_FAIL;
-               goto end;
-       }
-       chunk_status = lttng_trace_chunk_set_as_owner(chunk, session_output);
-       lttng_directory_handle_put(session_output);
-       session_output = NULL;
+       assert(conn->session->output_directory);
+       chunk_status = lttng_trace_chunk_set_as_owner(chunk,
+                       conn->session->output_directory);
        if (chunk_status != LTTNG_TRACE_CHUNK_STATUS_OK) {
                reply_code = LTTNG_ERR_UNK;
                ret = -1;
@@ -2796,7 +2789,6 @@ end:
 end_no_reply:
        lttng_trace_chunk_put(chunk);
        lttng_trace_chunk_put(published_chunk);
-       lttng_directory_handle_put(session_output);
        return ret;
 }
 
@@ -4117,6 +4109,7 @@ int main(int argc, char **argv)
        bool thread_is_rcu_registered = false;
        int ret = 0, retval = 0;
        void *status;
+       char *unlinked_file_directory_path = NULL, *output_path = NULL;
 
        /* Parse environment variables */
        ret = parse_env_options();
@@ -4207,7 +4200,23 @@ int main(int argc, char **argv)
        rcu_register_thread();
        thread_is_rcu_registered = true;
 
-       the_fd_tracker = fd_tracker_create(lttng_opt_fd_pool_size);
+       output_path = create_output_path("");
+       if (!output_path) {
+               ERR("Failed to get output path");
+               retval = -1;
+               goto exit_options;
+       }
+       ret = asprintf(&unlinked_file_directory_path, "%s/%s", output_path,
+                       DEFAULT_UNLINKED_FILES_DIRECTORY);
+       free(output_path);
+       if (ret < 0) {
+               ERR("Failed to format unlinked file directory path");
+               retval = -1;
+               goto exit_options;
+       }
+       the_fd_tracker = fd_tracker_create(
+                       unlinked_file_directory_path, lttng_opt_fd_pool_size);
+       free(unlinked_file_directory_path);
        if (!the_fd_tracker) {
                retval = -1;
                goto exit_options;
This page took 0.024969 seconds and 5 git commands to generate.