Implement 2-step registration of userspace probe events
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 1041b9f1a106d4090fff9d7422f2ea96d0b8333f..fa7aa82bd540fc1227076f665ff6d24fd27b4b57 100644 (file)
@@ -38,6 +38,7 @@
 #include <lttng/channel.h>
 #include <lttng/channel-internal.h>
 #include <lttng/rotate-internal.h>
+#include <lttng/location-internal.h>
 #include <common/string-utils/string-utils.h>
 
 #include "channel.h"
@@ -711,6 +712,8 @@ static int list_lttng_kernel_events(char *channel_name,
                        (*events)[i].type = LTTNG_EVENT_SYSCALL;
                        break;
                case LTTNG_KERNEL_ALL:
+                       /* fall-through. */
+               default:
                        assert(0);
                        break;
                }
@@ -2092,8 +2095,7 @@ static int _cmd_enable_event(struct ltt_session *session,
                        ret = validate_ust_event_name(event->name);
                        if (ret) {
                                WARN("Userspace event name %s failed validation.",
-                                               event->name ?
-                                               event->name : "NULL");
+                                               event->name);
                                ret = LTTNG_ERR_INVALID_EVENT_NAME;
                                goto error;
                        }
@@ -4562,10 +4564,11 @@ int cmd_rotate_session(struct ltt_session *session,
        session->rotation_state = LTTNG_ROTATION_STATE_ONGOING;
        ret = notification_thread_command_session_rotation_ongoing(
                        notification_thread_handle,
-                       session->name, session->current_archive_id);
-       if (ret) {
-               ret = LTTNG_ERR_UNK;
-               goto end;
+                       session->name, session->uid, session->gid,
+                       session->current_archive_id);
+       if (ret != LTTNG_OK) {
+               ERR("Failed to notify notification thread that a session rotation is ongoing for session %s",
+                               session->name);
        }
 
        /*
@@ -4679,13 +4682,29 @@ int cmd_rotate_session(struct ltt_session *session,
                 * session_list locks.
                 */
                if (!session->kernel_session && !ust_active) {
+                       struct lttng_trace_archive_location *location;
+
+                       session->rotate_pending = false;
+                       session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED;
                        ret = rename_complete_chunk(session, now);
                        if (ret < 0) {
                                ERR("Failed to rename completed rotation chunk");
                                goto end;
                        }
-                       session->rotate_pending = false;
-                       session->rotation_state = LTTNG_ROTATION_STATE_COMPLETED;
+
+                       /* Ownership of location is transferred. */
+                       location = session_get_trace_archive_location(session);
+                       ret = notification_thread_command_session_rotation_completed(
+                                       notification_thread_handle,
+                                       session->name,
+                                       session->uid,
+                                       session->gid,
+                                       session->current_archive_id,
+                                       location);
+                       if (ret != LTTNG_OK) {
+                               ERR("Failed to notify notification thread that rotation is complete for session %s",
+                                               session->name);
+                       }
                }
        }
 
This page took 0.025441 seconds and 5 git commands to generate.