Cleanup: attr is not used by open_ust_stream_fd()
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.c
index 6873273a3aa939ac166c97e939745238cce71ee5..5db2bb43d7903d47fb5e572e514f2ec9556ba47d 100644 (file)
@@ -407,9 +407,7 @@ error_shm_open:
        return -1;
 }
 
-static int open_ust_stream_fd(struct lttng_consumer_channel *channel,
-               struct ustctl_consumer_channel_attr *attr,
-               int cpu)
+static int open_ust_stream_fd(struct lttng_consumer_channel *channel, int cpu)
 {
        char shm_path[PATH_MAX];
        int ret;
@@ -464,7 +462,7 @@ static int create_ust_channel(struct lttng_consumer_channel *channel,
                goto error_alloc;
        }
        for (i = 0; i < nr_stream_fds; i++) {
-               stream_fds[i] = open_ust_stream_fd(channel, attr, i);
+               stream_fds[i] = open_ust_stream_fd(channel, i);
                if (stream_fds[i] < 0) {
                        ret = -1;
                        goto error_open;
@@ -540,11 +538,11 @@ error:
 }
 
 /*
- * Send channel to sessiond.
+ * Send channel to sessiond and relayd if applicable.
  *
  * Return 0 on success or else a negative value.
  */
-static int send_sessiond_channel(int sock,
+static int send_channel_to_sessiond_and_relayd(int sock,
                struct lttng_consumer_channel *channel,
                struct lttng_consumer_local_data *ctx, int *relayd_error)
 {
@@ -564,6 +562,8 @@ static int send_sessiond_channel(int sock,
                        health_code_update();
 
                        /* Try to send the stream to the relayd if one is available. */
+                       DBG("Sending stream %" PRIu64 " of channel \"%s\" to relayd",
+                                       stream->key, channel->name);
                        ret = consumer_send_relayd_stream(stream, stream->chan->pathname);
                        if (ret < 0) {
                                /*
@@ -1577,8 +1577,9 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
 
                health_code_update();
 
-               /* Send everything to sessiond. */
-               ret = send_sessiond_channel(sock, channel, ctx, &relayd_err);
+               /* Send the channel to sessiond (and relayd, if applicable). */
+               ret = send_channel_to_sessiond_and_relayd(sock, channel, ctx,
+                               &relayd_err);
                if (ret < 0) {
                        if (relayd_err) {
                                /*
@@ -2010,7 +2011,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                                msg.u.rotate_rename.relayd_id);
                if (ret < 0) {
                        ERR("Rotate rename failed");
-                       ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
                }
 
                health_code_update();
@@ -2022,6 +2023,37 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                }
                break;
        }
+       case LTTNG_CONSUMER_ROTATE_PENDING_RELAY:
+       {
+               uint32_t pending;
+
+               DBG("Consumer rotate pending on relay for session %" PRIu64,
+                               msg.u.rotate_pending_relay.session_id);
+               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 (pending < 0) {
+                       ERR("Rotate pending relay failed");
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
+               }
+
+               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;
+               }
+
+               /* Send back returned value to session daemon */
+               ret = lttcomm_send_unix_sock(sock, &pending, sizeof(pending));
+               if (ret < 0) {
+                       PERROR("send data pending ret code");
+                       goto error_fatal;
+               }
+               break;
+       }
        case LTTNG_CONSUMER_MKDIR:
        {
                DBG("Consumer mkdir %s in session %" PRIu64,
@@ -2033,7 +2065,7 @@ int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
                                msg.u.mkdir.relayd_id);
                if (ret < 0) {
                        ERR("consumer mkdir failed");
-                       ret_code = LTTCOMM_CONSUMERD_CHAN_NOT_FOUND;
+                       ret_code = LTTCOMM_CONSUMERD_RELAYD_FAIL;
                }
 
                health_code_update();
This page took 0.024896 seconds and 4 git commands to generate.