X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fkernel-consumer%2Fkernel-consumer.c;h=74c6de399af9f260264eac8a01894f4a1487c599;hb=3654ed19aa453f4be063784e215cab81441e8962;hp=9bed7b55b8114357382f983ecd4ff2ebb63aaa31;hpb=a9577b7628a85b064c3f249c3504bad989848b49;p=lttng-tools.git diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c index 9bed7b55b..74c6de399 100644 --- a/src/common/kernel-consumer/kernel-consumer.c +++ b/src/common/kernel-consumer/kernel-consumer.c @@ -129,8 +129,10 @@ int lttng_kconsumer_get_consumed_snapshot(struct lttng_consumer_stream *stream, * * Returns 0 on success, < 0 on error */ -int lttng_kconsumer_snapshot_channel(struct lttng_consumer_channel *channel, - uint64_t key, char *path, uint64_t relayd_id, uint64_t nb_packets_per_stream, +static int lttng_kconsumer_snapshot_channel( + struct lttng_consumer_channel *channel, + uint64_t key, char *path, uint64_t relayd_id, + uint64_t nb_packets_per_stream, struct lttng_consumer_local_data *ctx) { int ret; @@ -142,7 +144,8 @@ int lttng_kconsumer_snapshot_channel(struct lttng_consumer_channel *channel, /* Splice is not supported yet for channel snapshot. */ if (channel->output != CONSUMER_CHANNEL_MMAP) { - ERR("Unsupported output %d", channel->output); + ERR("Unsupported output type for channel \"%s\": mmap output is required to record a snapshot", + channel->name); ret = -1; goto end; } @@ -234,7 +237,7 @@ int lttng_kconsumer_snapshot_channel(struct lttng_consumer_channel *channel, produced_pos, nb_packets_per_stream, stream->max_sb_size); - while (consumed_pos < produced_pos) { + while ((long) (consumed_pos - produced_pos) < 0) { ssize_t read_len; unsigned long len, padded_len; @@ -1257,6 +1260,19 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, } break; } + case LTTNG_CONSUMER_INIT: + { + ret_code = lttng_consumer_init_command(ctx, + msg.u.init.sessiond_uuid); + + health_code_update(); + ret = consumer_send_status_msg(sock, ret_code); + if (ret < 0) { + /* Somehow, the session daemon is not responding anymore. */ + goto end_nosignal; + } + break; + } default: goto end_nosignal; }