projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: relayd vs consumerd compatibility
[lttng-tools.git]
/
src
/
common
/
kernel-consumer
/
kernel-consumer.c
diff --git
a/src/common/kernel-consumer/kernel-consumer.c
b/src/common/kernel-consumer/kernel-consumer.c
index 9e3540426620f64f89cf69c8bbefa3cbe08f8962..43a5d366348d98a1037ec4a9bef3024b0ba6a5e2 100644
(file)
--- a/
src/common/kernel-consumer/kernel-consumer.c
+++ b/
src/common/kernel-consumer/kernel-consumer.c
@@
-118,7
+118,6
@@
int lttng_kconsumer_snapshot_channel(uint64_t key, char *path,
struct lttng_consumer_local_data *ctx)
{
int ret;
struct lttng_consumer_local_data *ctx)
{
int ret;
- unsigned long consumed_pos, produced_pos;
struct lttng_consumer_channel *channel;
struct lttng_consumer_stream *stream;
struct lttng_consumer_channel *channel;
struct lttng_consumer_stream *stream;
@@
-143,6
+142,7
@@
int lttng_kconsumer_snapshot_channel(uint64_t key, char *path,
cds_list_for_each_entry(stream, &channel->streams.head, send_node) {
/* Are we at a position _before_ the first available packet ? */
bool before_first_packet = true;
cds_list_for_each_entry(stream, &channel->streams.head, send_node) {
/* Are we at a position _before_ the first available packet ? */
bool before_first_packet = true;
+ unsigned long consumed_pos, produced_pos;
health_code_update();
health_code_update();
@@
-969,18
+969,18
@@
int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
uint64_t id = msg.u.discarded_events.session_id;
uint64_t key = msg.u.discarded_events.channel_key;
uint64_t id = msg.u.discarded_events.session_id;
uint64_t key = msg.u.discarded_events.channel_key;
+ DBG("Kernel consumer discarded events command for session id %"
+ PRIu64 ", channel key %" PRIu64, id, key);
+
channel = consumer_find_channel(key);
if (!channel) {
ERR("Kernel consumer discarded events channel %"
PRIu64 " not found", key);
channel = consumer_find_channel(key);
if (!channel) {
ERR("Kernel consumer discarded events channel %"
PRIu64 " not found", key);
- ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+ ret = 0;
+ } else {
+ ret = channel->discarded_events;
}
}
- DBG("Kernel consumer discarded events command for session id %"
- PRIu64 ", channel key %" PRIu64, id, key);
-
- ret = channel->discarded_events;
-
health_code_update();
/* Send back returned value to session daemon */
health_code_update();
/* Send back returned value to session daemon */
@@
-999,18
+999,18
@@
int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
uint64_t id = msg.u.lost_packets.session_id;
uint64_t key = msg.u.lost_packets.channel_key;
uint64_t id = msg.u.lost_packets.session_id;
uint64_t key = msg.u.lost_packets.channel_key;
+ DBG("Kernel consumer lost packets command for session id %"
+ PRIu64 ", channel key %" PRIu64, id, key);
+
channel = consumer_find_channel(key);
if (!channel) {
ERR("Kernel consumer lost packets channel %"
PRIu64 " not found", key);
channel = consumer_find_channel(key);
if (!channel) {
ERR("Kernel consumer lost packets channel %"
PRIu64 " not found", key);
- ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+ ret = 0;
+ } else {
+ ret = channel->lost_packets;
}
}
- DBG("Kernel consumer lost packets command for session id %"
- PRIu64 ", channel key %" PRIu64, id, key);
-
- ret = channel->lost_packets;
-
health_code_update();
/* Send back returned value to session daemon */
health_code_update();
/* Send back returned value to session daemon */
@@
-1095,15
+1095,27
@@
static int get_index_values(struct ctf_packet_index *index, int infd)
ret = kernctl_get_instance_id(infd, &index->stream_instance_id);
if (ret < 0) {
ret = kernctl_get_instance_id(infd, &index->stream_instance_id);
if (ret < 0) {
- PERROR("kernctl_get_instance_id");
- goto error;
+ if (ret == -ENOTTY) {
+ /* Command not implemented by lttng-modules. */
+ index->stream_instance_id = -1ULL;
+ ret = 0;
+ } else {
+ PERROR("kernctl_get_instance_id");
+ goto error;
+ }
}
index->stream_instance_id = htobe64(index->stream_instance_id);
ret = kernctl_get_sequence_number(infd, &index->packet_seq_num);
if (ret < 0) {
}
index->stream_instance_id = htobe64(index->stream_instance_id);
ret = kernctl_get_sequence_number(infd, &index->packet_seq_num);
if (ret < 0) {
- PERROR("kernctl_get_sequence_number");
- goto error;
+ if (ret == -ENOTTY) {
+ /* Command not implemented by lttng-modules. */
+ index->packet_seq_num = -1ULL;
+ ret = 0;
+ } else {
+ PERROR("kernctl_get_sequence_number");
+ goto error;
+ }
}
index->packet_seq_num = htobe64(index->packet_seq_num);
}
index->packet_seq_num = htobe64(index->packet_seq_num);
@@
-1155,8
+1167,14
@@
int update_stream_stats(struct lttng_consumer_stream *stream)
ret = kernctl_get_sequence_number(stream->wait_fd, &seq);
if (ret < 0) {
ret = kernctl_get_sequence_number(stream->wait_fd, &seq);
if (ret < 0) {
- PERROR("kernctl_get_sequence_number");
- goto end;
+ if (ret == -ENOTTY) {
+ /* Command not implemented by lttng-modules. */
+ seq = -1ULL;
+ ret = 0;
+ } else {
+ PERROR("kernctl_get_sequence_number");
+ goto end;
+ }
}
/*
}
/*
@@
-1186,8
+1204,8
@@
int update_stream_stats(struct lttng_consumer_stream *stream)
}
if (discarded < stream->last_discarded_events) {
/*
}
if (discarded < stream->last_discarded_events) {
/*
- * Overflow has occured. We assume only one wrap-around
- * has occured.
+ * Overflow has occur
r
ed. We assume only one wrap-around
+ * has occur
r
ed.
*/
stream->chan->discarded_events += (1ULL << (CAA_BITS_PER_LONG - 1)) -
stream->last_discarded_events + discarded;
*/
stream->chan->discarded_events += (1ULL << (CAA_BITS_PER_LONG - 1)) -
stream->last_discarded_events + discarded;
@@
-1215,6
+1233,14
@@
int metadata_stream_check_version(int infd, struct lttng_consumer_stream *stream
ret = kernctl_get_metadata_version(infd, &cur_version);
if (ret < 0) {
ret = kernctl_get_metadata_version(infd, &cur_version);
if (ret < 0) {
+ if (ret == -ENOTTY) {
+ /*
+ * LTTng-modules does not implement this
+ * command.
+ */
+ ret = 0;
+ goto end;
+ }
ERR("Failed to get the metadata version");
goto end;
}
ERR("Failed to get the metadata version");
goto end;
}
@@
-1459,14
+1485,17
@@
int lttng_kconsumer_on_recv_stream(struct lttng_consumer_stream *stream)
stream->tracefile_size_current = 0;
if (!stream->metadata_flag) {
stream->tracefile_size_current = 0;
if (!stream->metadata_flag) {
- ret = index_create_file(stream->chan->pathname,
+ struct lttng_index_file *index_file;
+
+ index_file = lttng_index_file_create(stream->chan->pathname,
stream->name, stream->uid, stream->gid,
stream->chan->tracefile_size,
stream->name, stream->uid, stream->gid,
stream->chan->tracefile_size,
- stream->tracefile_count_current);
- if (ret < 0) {
+ stream->tracefile_count_current,
+ CTF_INDEX_MAJOR, CTF_INDEX_MINOR);
+ if (!index_file) {
goto error;
}
goto error;
}
- stream->index_f
d = ret
;
+ stream->index_f
ile = index_file
;
}
}
}
}
This page took
0.027293 seconds
and
4
git commands to generate.