X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fviewer-stream.c;h=8a3b09a92060ef25e9f9f8f50b2d36d15c2de159;hb=e9404c27e7cc9d841785e6c4292c1add19fbc1cc;hp=333246afb3f4d312874cca9cfc144e6cc0fdf932;hpb=a44ca2ca85e4b64729f7b88b1919fd6737dfff8a;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/viewer-stream.c b/src/bin/lttng-relayd/viewer-stream.c index 333246afb..8a3b09a92 100644 --- a/src/bin/lttng-relayd/viewer-stream.c +++ b/src/bin/lttng-relayd/viewer-stream.c @@ -17,10 +17,10 @@ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE #define _LGPL_SOURCE #include #include +#include #include "lttng-relayd.h" #include "viewer-stream.h" @@ -51,12 +51,12 @@ struct relay_viewer_stream *viewer_stream_create(struct relay_stream *stream, goto error; } - vstream->path_name = strndup(stream->path_name, LTTNG_VIEWER_PATH_MAX); + vstream->path_name = lttng_strndup(stream->path_name, LTTNG_VIEWER_PATH_MAX); if (vstream->path_name == NULL) { PERROR("relay viewer path_name alloc"); goto error; } - vstream->channel_name = strndup(stream->channel_name, + vstream->channel_name = lttng_strndup(stream->channel_name, LTTNG_VIEWER_NAME_MAX); if (vstream->channel_name == NULL) { PERROR("relay viewer channel_name alloc"); @@ -116,29 +116,21 @@ struct relay_viewer_stream *viewer_stream_create(struct relay_stream *stream, * the opening of the index, otherwise open it right now. */ if (stream->index_received_seqcount == 0) { - vstream->index_fd = NULL; + vstream->index_file = NULL; } else { - int read_fd; - - read_fd = index_open(vstream->path_name, vstream->channel_name, + vstream->index_file = lttng_index_file_open(vstream->path_name, + vstream->channel_name, stream->tracefile_count, vstream->current_tracefile_id); - if (read_fd < 0) { - goto error_unlock; - } - vstream->index_fd = stream_fd_create(read_fd); - if (!vstream->index_fd) { - if (close(read_fd)) { - PERROR("close"); - } + if (!vstream->index_file) { goto error_unlock; } } - if (seek_t == LTTNG_VIEWER_SEEK_LAST && vstream->index_fd) { + if (seek_t == LTTNG_VIEWER_SEEK_LAST && vstream->index_file) { off_t lseek_ret; - lseek_ret = lseek(vstream->index_fd->fd, 0, SEEK_END); + lseek_ret = lseek(vstream->index_file->fd, 0, SEEK_END); if (lseek_ret < 0) { goto error_unlock; } @@ -192,9 +184,9 @@ static void viewer_stream_release(struct urcu_ref *ref) stream_fd_put(vstream->stream_fd); vstream->stream_fd = NULL; } - if (vstream->index_fd) { - stream_fd_put(vstream->index_fd); - vstream->index_fd = NULL; + if (vstream->index_file) { + lttng_index_file_put(vstream->index_file); + vstream->index_file = NULL; } if (vstream->stream) { stream_put(vstream->stream); @@ -305,29 +297,24 @@ int viewer_stream_rotate(struct relay_viewer_stream *vstream) vstream->index_sent_seqcount = seq_tail; } - if (vstream->index_fd) { - stream_fd_put(vstream->index_fd); - vstream->index_fd = NULL; + if (vstream->index_file) { + lttng_index_file_put(vstream->index_file); + vstream->index_file = NULL; } if (vstream->stream_fd) { stream_fd_put(vstream->stream_fd); vstream->stream_fd = NULL; } - ret = index_open(vstream->path_name, vstream->channel_name, + vstream->index_file = lttng_index_file_open(vstream->path_name, + vstream->channel_name, stream->tracefile_count, vstream->current_tracefile_id); - if (ret < 0) { + if (!vstream->index_file) { + ret = -1; goto end; - } - vstream->index_fd = stream_fd_create(ret); - if (vstream->index_fd) { - ret = 0; } else { - if (close(ret)) { - PERROR("close"); - } - ret = -1; + ret = 0; } end: return ret; @@ -338,6 +325,10 @@ void print_viewer_streams(void) struct lttng_ht_iter iter; struct relay_viewer_stream *vstream; + if (!viewer_streams_ht) { + return; + } + rcu_read_lock(); cds_lfht_for_each_entry(viewer_streams_ht->ht, &iter.iter, vstream, stream_n.node) {