X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fkernel-consumer%2Fkernel-consumer.c;h=f1c38ccbfa8c6ec5f18ca64fbe6d58dbb4442dbf;hb=19990ed538f86bf0f32193a378c3faf36ce4f467;hp=ec67e316d714bc1dc030dfb54b065f7e18352360;hpb=d88744a44aa5f2ca90ab87946692b9eed3120641;p=lttng-tools.git diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c index ec67e316d..f1c38ccbf 100644 --- a/src/common/kernel-consumer/kernel-consumer.c +++ b/src/common/kernel-consumer/kernel-consumer.c @@ -644,7 +644,8 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, msg.u.stream.cpu, &alloc_ret, channel->type, - channel->monitor); + channel->monitor, + msg.u.stream.trace_archive_id); if (new_stream == NULL) { switch (alloc_ret) { case -ENOMEM: @@ -1182,19 +1183,20 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, } case LTTNG_CONSUMER_ROTATE_PENDING_RELAY: { + int pending; uint32_t pending_reply; DBG("Consumer rotate pending on relay for session %" PRIu64, msg.u.rotate_pending_relay.session_id); - ret = lttng_consumer_rotate_pending_relay( + pending = lttng_consumer_rotate_pending_relay( msg.u.rotate_pending_relay.session_id, msg.u.rotate_pending_relay.relayd_id, msg.u.rotate_pending_relay.chunk_id); - if (ret < 0) { + if (pending < 0) { ERR("Rotate pending relay failed"); ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND; } else { - pending_reply = !!ret; + pending_reply = !!pending; } health_code_update(); @@ -1205,6 +1207,15 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx, goto end_nosignal; } + if (pending < 0) { + /* + * An error occured while running the command; + * don't send the 'pending' flag as the sessiond + * will not read it. + */ + break; + } + /* Send back returned value to session daemon */ ret = lttcomm_send_unix_sock(sock, &pending_reply, sizeof(pending_reply));