projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Simplify lock handling in enqueue_timer_rotate_job()
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
session.c
diff --git
a/src/bin/lttng-sessiond/session.c
b/src/bin/lttng-sessiond/session.c
index a6281662cf63c23e67b1172b6930e47af3094d10..0f62ab49fc4acccd824e78e8bbaad3a205583660 100644
(file)
--- a/
src/bin/lttng-sessiond/session.c
+++ b/
src/bin/lttng-sessiond/session.c
@@
-143,6
+143,8
@@
void session_unlock_list(void)
/*
* Allocate the ltt_sessions_ht_by_id HT.
/*
* Allocate the ltt_sessions_ht_by_id HT.
+ *
+ * The session list lock must be held.
*/
int ltt_sessions_ht_alloc(void)
{
*/
int ltt_sessions_ht_alloc(void)
{
@@
-161,8
+163,10
@@
end:
/*
* Destroy the ltt_sessions_ht_by_id HT.
/*
* Destroy the ltt_sessions_ht_by_id HT.
+ *
+ * The session list lock must be held.
*/
*/
-void ltt_sessions_ht_destroy(void)
+
static
void ltt_sessions_ht_destroy(void)
{
if (!ltt_sessions_ht_by_id) {
return;
{
if (!ltt_sessions_ht_by_id) {
return;
@@
-201,7
+205,7
@@
end:
* Return 1 if empty, 0 if not empty.
* The session list lock must be held.
*/
* Return 1 if empty, 0 if not empty.
* The session list lock must be held.
*/
-static int ltt_sessions_ht_empty()
+static int ltt_sessions_ht_empty(
void
)
{
int ret;
{
int ret;
@@
-294,17
+298,21
@@
struct ltt_session *session_find_by_id(uint64_t id)
struct lttng_ht_iter iter;
struct ltt_session *ls;
struct lttng_ht_iter iter;
struct ltt_session *ls;
+ if (!ltt_sessions_ht_by_id) {
+ goto end;
+ }
+
lttng_ht_lookup(ltt_sessions_ht_by_id, &id, &iter);
node = lttng_ht_iter_get_node_u64(&iter);
if (node == NULL) {
lttng_ht_lookup(ltt_sessions_ht_by_id, &id, &iter);
node = lttng_ht_iter_get_node_u64(&iter);
if (node == NULL) {
- goto e
rror
;
+ goto e
nd
;
}
ls = caa_container_of(node, struct ltt_session, node);
DBG3("Session %" PRIu64 " found by id.", id);
return ls;
}
ls = caa_container_of(node, struct ltt_session, node);
DBG3("Session %" PRIu64 " found by id.", id);
return ls;
-e
rror
:
+e
nd
:
DBG3("Session %" PRIu64 " NOT found by id", id);
return NULL;
}
DBG3("Session %" PRIu64 " NOT found by id", id);
return NULL;
}
@@
-320,7
+328,7
@@
int session_destroy(struct ltt_session *session)
/* Safety check */
assert(session);
/* Safety check */
assert(session);
- DBG("Destroying session %s
", session->name
);
+ DBG("Destroying session %s
(id %" PRIu64 ")", session->name, session->id
);
del_session_list(session);
pthread_mutex_destroy(&session->lock);
del_session_ht(session);
del_session_list(session);
pthread_mutex_destroy(&session->lock);
del_session_ht(session);
@@
-392,6
+400,10
@@
int session_create(char *name, uid_t uid, gid_t gid)
goto error;
}
goto error;
}
+ new_session->rotate_pending = false;
+ new_session->rotate_pending_relay = false;
+ new_session->rotate_relay_pending_timer_enabled = false;
+
/* Add new session to the session list */
session_lock_list();
new_session->id = add_session_list(new_session);
/* Add new session to the session list */
session_lock_list();
new_session->id = add_session_list(new_session);
This page took
0.025784 seconds
and
5
git commands to generate.