Send ust and kernel domain directory handle to consumer
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.c
index 27f5034050d880ecd2a2ad687c54b1da087dbd5c..41317fe657d57cd4d5b5873c03fc2e3e77793118 100644 (file)
@@ -2039,8 +2039,7 @@ end_rotate_channel_nosignal:
                                *msg.u.create_trace_chunk.override_name ?
                                        msg.u.create_trace_chunk.override_name :
                                        NULL;
-               LTTNG_OPTIONAL(struct lttng_directory_handle) chunk_directory_handle =
-                               LTTNG_OPTIONAL_INIT;
+               struct lttng_directory_handle *chunk_directory_handle = NULL;
 
                /*
                 * The session daemon will only provide a chunk directory file
@@ -2057,25 +2056,26 @@ end_rotate_channel_nosignal:
                                goto end_nosignal;
                        }
 
+                       /*
+                        * Receive trace chunk domain dirfd.
+                        */
                        ret = lttcomm_recv_fds_unix_sock(sock, &chunk_dirfd, 1);
                        if (ret != sizeof(chunk_dirfd)) {
-                               ERR("Failed to receive trace chunk directory file descriptor");
+                               ERR("Failed to receive trace chunk domain directory file descriptor");
                                goto error_fatal;
                        }
 
-                       DBG("Received trace chunk directory fd (%d)",
+                       DBG("Received trace chunk domain directory fd (%d)",
                                        chunk_dirfd);
-                       ret = lttng_directory_handle_init_from_dirfd(
-                                       &chunk_directory_handle.value,
+                       chunk_directory_handle = lttng_directory_handle_create_from_dirfd(
                                        chunk_dirfd);
-                       if (ret) {
-                               ERR("Failed to initialize chunk directory handle from directory file descriptor");
+                       if (!chunk_directory_handle) {
+                               ERR("Failed to initialize chunk domain directory handle from directory file descriptor");
                                if (close(chunk_dirfd)) {
                                        PERROR("Failed to close chunk directory file descriptor");
                                }
                                goto error_fatal;
                        }
-                       chunk_directory_handle.is_set = true;
                }
 
                ret_code = lttng_consumer_create_trace_chunk(
@@ -2088,14 +2088,8 @@ end_rotate_channel_nosignal:
                                msg.u.create_trace_chunk.credentials.is_set ?
                                                &credentials :
                                                NULL,
-                               chunk_directory_handle.is_set ?
-                                               &chunk_directory_handle.value :
-                                               NULL);
-
-               if (chunk_directory_handle.is_set) {
-                       lttng_directory_handle_fini(
-                                       &chunk_directory_handle.value);
-               }
+                               chunk_directory_handle);
+               lttng_directory_handle_put(chunk_directory_handle);
                goto end_msg_sessiond;
        }
        case LTTNG_CONSUMER_CLOSE_TRACE_CHUNK:
This page took 0.025231 seconds and 5 git commands to generate.