From 731c1b1217bdbb47501426a6a0a2220ce4bc442c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Fri, 17 Aug 2018 13:25:46 -0400 Subject: [PATCH] Add session rotation ongoing/completed notification commands MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau --- .../notification-thread-commands.c | 58 +++++++++++++++++++ .../notification-thread-commands.h | 23 +++++++- 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/src/bin/lttng-sessiond/notification-thread-commands.c b/src/bin/lttng-sessiond/notification-thread-commands.c index c142e849b..11275ffc0 100644 --- a/src/bin/lttng-sessiond/notification-thread-commands.c +++ b/src/bin/lttng-sessiond/notification-thread-commands.c @@ -165,6 +165,64 @@ end: return ret_code; } +enum lttng_error_code notification_thread_command_session_rotation_ongoing( + struct notification_thread_handle *handle, + const char *session_name, uid_t uid, gid_t gid, + uint64_t trace_archive_chunk_id) +{ + int ret; + enum lttng_error_code ret_code; + struct notification_thread_command cmd; + + init_notification_thread_command(&cmd); + + cmd.type = NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_ONGOING; + cmd.parameters.session_rotation.session_name = session_name; + cmd.parameters.session_rotation.uid = uid; + cmd.parameters.session_rotation.gid = gid; + cmd.parameters.session_rotation.trace_archive_chunk_id = + trace_archive_chunk_id; + + ret = run_command_wait(handle, &cmd); + if (ret) { + ret_code = LTTNG_ERR_UNK; + goto end; + } + ret_code = cmd.reply_code; +end: + return ret_code; +} + +enum lttng_error_code notification_thread_command_session_rotation_completed( + struct notification_thread_handle *handle, + const char *session_name, uid_t uid, gid_t gid, + uint64_t trace_archive_chunk_id, + struct lttng_trace_archive_location *location) +{ + int ret; + enum lttng_error_code ret_code; + struct notification_thread_command cmd; + + init_notification_thread_command(&cmd); + + cmd.type = NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_COMPLETED; + cmd.parameters.session_rotation.session_name = session_name; + cmd.parameters.session_rotation.uid = uid; + cmd.parameters.session_rotation.gid = gid; + cmd.parameters.session_rotation.trace_archive_chunk_id = + trace_archive_chunk_id; + cmd.parameters.session_rotation.location = location; + + ret = run_command_wait(handle, &cmd); + if (ret) { + ret_code = LTTNG_ERR_UNK; + goto end; + } + ret_code = cmd.reply_code; +end: + return ret_code; +} + void notification_thread_command_quit( struct notification_thread_handle *handle) { diff --git a/src/bin/lttng-sessiond/notification-thread-commands.h b/src/bin/lttng-sessiond/notification-thread-commands.h index 5c6441542..b8cb2779f 100644 --- a/src/bin/lttng-sessiond/notification-thread-commands.h +++ b/src/bin/lttng-sessiond/notification-thread-commands.h @@ -34,6 +34,8 @@ enum notification_thread_command_type { NOTIFICATION_COMMAND_TYPE_UNREGISTER_TRIGGER, NOTIFICATION_COMMAND_TYPE_ADD_CHANNEL, NOTIFICATION_COMMAND_TYPE_REMOVE_CHANNEL, + NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_ONGOING, + NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_COMPLETED, NOTIFICATION_COMMAND_TYPE_QUIT, }; @@ -63,6 +65,13 @@ struct notification_thread_command { uint64_t key; enum lttng_domain_type domain; } remove_channel; + struct { + const char *session_name; + uid_t uid; + gid_t gid; + uint64_t trace_archive_chunk_id; + struct lttng_trace_archive_location *location; + } session_rotation; } parameters; /* lttng_waiter on which to wait for command reply (optional). */ @@ -80,7 +89,7 @@ enum lttng_error_code notification_thread_command_unregister_trigger( enum lttng_error_code notification_thread_command_add_channel( struct notification_thread_handle *handle, - char *session_name, uid_t uid, gid_t gid, + char *session_name, uid_t session_uid, gid_t session_gid, char *channel_name, uint64_t key, enum lttng_domain_type domain, uint64_t capacity); @@ -88,6 +97,18 @@ enum lttng_error_code notification_thread_command_remove_channel( struct notification_thread_handle *handle, uint64_t key, enum lttng_domain_type domain); +enum lttng_error_code notification_thread_command_session_rotation_ongoing( + struct notification_thread_handle *handle, + const char *session_name, uid_t session_uid, gid_t session_gid, + uint64_t trace_archive_chunk_id); + +/* Ownership of location is transferred. */ +enum lttng_error_code notification_thread_command_session_rotation_completed( + struct notification_thread_handle *handle, + const char *session_name, uid_t session_uid, gid_t session_gid, + uint64_t trace_archive_chunk_id, + struct lttng_trace_archive_location *location); + void notification_thread_command_quit( struct notification_thread_handle *handle); -- 2.34.1