Replace explicit rcu_read_lock/unlock with lttng::urcu::read_lock_guard
[lttng-tools.git] / src / bin / lttng-sessiond / action-executor.cpp
index 4c1e748df4d1c2078b626bb704707fba583bc697..31683547b1340260579fa4016c29b6130b2080f5 100644 (file)
@@ -16,6 +16,7 @@
 #include <common/dynamic-array.hpp>
 #include <common/macros.hpp>
 #include <common/optional.hpp>
+#include <common/urcu.hpp>
 
 #include <lttng/action/action-internal.hpp>
 #include <lttng/action/list-internal.hpp>
@@ -290,6 +291,8 @@ static int action_executor_start_session_handler(struct action_executor *executo
        enum lttng_error_code cmd_ret;
        struct lttng_action *action = item->action;
 
+       lttng::urcu::read_lock_guard read_lock;
+
        action_status = lttng_action_start_session_get_session_name(action, &session_name);
        if (action_status != LTTNG_ACTION_STATUS_OK) {
                ERR("Failed to get session name from `%s` action", get_action_name(action));
@@ -311,7 +314,6 @@ static int action_executor_start_session_handler(struct action_executor *executo
        }
 
        session_lock_list();
-       rcu_read_lock();
        session = session_find_by_id(LTTNG_OPTIONAL_GET(item->context.session_id));
        if (!session) {
                DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%s`",
@@ -362,7 +364,6 @@ error_unlock_session:
        session_unlock(session);
        session_put(session);
 error_unlock_list:
-       rcu_read_unlock();
        session_unlock_list();
 end:
        return ret;
@@ -380,6 +381,8 @@ static int action_executor_stop_session_handler(struct action_executor *executor
        enum lttng_error_code cmd_ret;
        struct lttng_action *action = item->action;
 
+       lttng::urcu::read_lock_guard read_lock;
+
        action_status = lttng_action_stop_session_get_session_name(action, &session_name);
        if (action_status != LTTNG_ACTION_STATUS_OK) {
                ERR("Failed to get session name from `%s` action", get_action_name(action));
@@ -401,7 +404,6 @@ static int action_executor_stop_session_handler(struct action_executor *executor
        }
 
        session_lock_list();
-       rcu_read_lock();
        session = session_find_by_id(LTTNG_OPTIONAL_GET(item->context.session_id));
        if (!session) {
                DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%s`",
@@ -452,7 +454,6 @@ error_unlock_session:
        session_unlock(session);
        session_put(session);
 error_unlock_list:
-       rcu_read_unlock();
        session_unlock_list();
 end:
        return ret;
@@ -470,6 +471,8 @@ static int action_executor_rotate_session_handler(struct action_executor *execut
        enum lttng_error_code cmd_ret;
        struct lttng_action *action = item->action;
 
+       lttng::urcu::read_lock_guard read_lock;
+
        action_status = lttng_action_rotate_session_get_session_name(action, &session_name);
        if (action_status != LTTNG_ACTION_STATUS_OK) {
                ERR("Failed to get session name from `%s` action", get_action_name(action));
@@ -491,7 +494,6 @@ static int action_executor_rotate_session_handler(struct action_executor *execut
        }
 
        session_lock_list();
-       rcu_read_lock();
        session = session_find_by_id(LTTNG_OPTIONAL_GET(item->context.session_id));
        if (!session) {
                DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%s`",
@@ -550,7 +552,6 @@ error_unlock_session:
        session_unlock(session);
        session_put(session);
 error_unlock_list:
-       rcu_read_unlock();
        session_unlock_list();
 end:
        return ret;
@@ -572,6 +573,8 @@ static int action_executor_snapshot_session_handler(struct action_executor *exec
 
        default_snapshot_output.max_size = UINT64_MAX;
 
+       lttng::urcu::read_lock_guard read_lock;
+
        /*
         * Validate if, at the moment the action was queued, the target session
         * existed. If not, skip the action altogether.
@@ -599,7 +602,6 @@ static int action_executor_snapshot_session_handler(struct action_executor *exec
        }
 
        session_lock_list();
-       rcu_read_lock();
        session = session_find_by_id(LTTNG_OPTIONAL_GET(item->context.session_id));
        if (!session) {
                DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%s`",
@@ -645,7 +647,6 @@ error_unlock_session:
        session_unlock(session);
        session_put(session);
 error_unlock_list:
-       rcu_read_unlock();
        session_unlock_list();
 end:
        return ret;
This page took 0.024198 seconds and 4 git commands to generate.