projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: cmd_rotate_session() returns unexpected error codes
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
session.c
diff --git
a/src/bin/lttng-relayd/session.c
b/src/bin/lttng-relayd/session.c
index f76fb4a42e7606b8ebfea427033b00e3de192020..42c29aeb0b4816f5d83437f14aa6a4f3631762aa 100644
(file)
--- a/
src/bin/lttng-relayd/session.c
+++ b/
src/bin/lttng-relayd/session.c
@@
-69,7
+69,6
@@
struct relay_session *session_create(const char *session_name,
urcu_ref_init(&session->ref);
CDS_INIT_LIST_HEAD(&session->recv_list);
pthread_mutex_init(&session->lock, NULL);
urcu_ref_init(&session->ref);
CDS_INIT_LIST_HEAD(&session->recv_list);
pthread_mutex_init(&session->lock, NULL);
- pthread_mutex_init(&session->reflock, NULL);
pthread_mutex_init(&session->recv_list_lock, NULL);
session->live_timer = live_timer;
pthread_mutex_init(&session->recv_list_lock, NULL);
session->live_timer = live_timer;
@@
-86,16
+85,7
@@
error:
/* Should be called with RCU read-side lock held. */
bool session_get(struct relay_session *session)
{
/* Should be called with RCU read-side lock held. */
bool session_get(struct relay_session *session)
{
- bool has_ref = false;
-
- pthread_mutex_lock(&session->reflock);
- if (session->ref.refcount != 0) {
- has_ref = true;
- urcu_ref_get(&session->ref);
- }
- pthread_mutex_unlock(&session->reflock);
-
- return has_ref;
+ return urcu_ref_get_unless_zero(&session->ref);
}
/*
}
/*
@@
-178,9
+168,7
@@
void session_release(struct urcu_ref *ref)
void session_put(struct relay_session *session)
{
rcu_read_lock();
void session_put(struct relay_session *session)
{
rcu_read_lock();
- pthread_mutex_lock(&session->reflock);
urcu_ref_put(&session->ref, session_release);
urcu_ref_put(&session->ref, session_release);
- pthread_mutex_unlock(&session->reflock);
rcu_read_unlock();
}
rcu_read_unlock();
}
@@
-194,16
+182,8
@@
int session_close(struct relay_session *session)
pthread_mutex_lock(&session->lock);
DBG("closing session %" PRIu64 ": is conn already closed %d",
session->id, session->connection_closed);
pthread_mutex_lock(&session->lock);
DBG("closing session %" PRIu64 ": is conn already closed %d",
session->id, session->connection_closed);
- if (session->connection_closed) {
- ret = -1;
- goto unlock;
- }
session->connection_closed = true;
session->connection_closed = true;
-unlock:
pthread_mutex_unlock(&session->lock);
pthread_mutex_unlock(&session->lock);
- if (ret) {
- return ret;
- }
rcu_read_lock();
cds_lfht_for_each_entry(session->ctf_traces_ht->ht,
rcu_read_lock();
cds_lfht_for_each_entry(session->ctf_traces_ht->ht,
@@
-238,13
+218,7
@@
int session_abort(struct relay_session *session)
pthread_mutex_lock(&session->lock);
DBG("aborting session %" PRIu64, session->id);
pthread_mutex_lock(&session->lock);
DBG("aborting session %" PRIu64, session->id);
- if (session->aborted) {
- ERR("session %" PRIu64 " is already aborted", session->id);
- ret = -1;
- goto unlock;
- }
session->aborted = true;
session->aborted = true;
-unlock:
pthread_mutex_unlock(&session->lock);
return ret;
}
pthread_mutex_unlock(&session->lock);
return ret;
}
This page took
0.028216 seconds
and
4
git commands to generate.