Keep the base directory of a relay session separate
[lttng-tools.git] / src / bin / lttng-sessiond / consumer.c
index ced965dee34aa435828eb7484aa8d058d56bb4d3..6351ebe32f47431c0f6490bd6edd23ba3b8a0c37 100644 (file)
@@ -715,11 +715,12 @@ int consumer_set_network_uri(struct consumer_output *obj,
                        goto error;
                }
 
-               if (lttng_strncpy(obj->subdir, tmp_path, sizeof(obj->subdir))) {
+               if (lttng_strncpy(obj->dst.net.base_dir, tmp_path,
+                               sizeof(obj->dst.net.base_dir))) {
                        ret = -LTTNG_ERR_INVALID;
                        goto error;
                }
-               DBG3("Consumer set network uri subdir path %s", tmp_path);
+               DBG3("Consumer set network uri base_dir path %s", tmp_path);
        }
 
        return 0;
@@ -731,6 +732,8 @@ error:
 
 /*
  * Send file descriptor to consumer via sock.
+ *
+ * The consumer socket lock must be held by the caller.
  */
 int consumer_send_fds(struct consumer_socket *sock, int *fds, size_t nb_fd)
 {
@@ -755,6 +758,8 @@ error:
 
 /*
  * Consumer send communication message structure to consumer.
+ *
+ * The consumer socket lock must be held by the caller.
  */
 int consumer_send_msg(struct consumer_socket *sock,
                struct lttcomm_consumer_msg *msg)
@@ -778,6 +783,8 @@ error:
 
 /*
  * Consumer send channel communication message structure to consumer.
+ *
+ * The consumer socket lock must be held by the caller.
  */
 int consumer_send_channel(struct consumer_socket *sock,
                struct lttcomm_consumer_msg *msg)
@@ -992,6 +999,8 @@ error:
 /*
  * Send relayd socket to consumer associated with a session name.
  *
+ * The consumer socket lock must be held by the caller.
+ *
  * On success return positive value. On error, negative value.
  */
 int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
@@ -1066,6 +1075,7 @@ int consumer_send_channel_monitor_pipe(struct consumer_socket *consumer_sock,
        memset(&msg, 0, sizeof(msg));
        msg.cmd_type = LTTNG_CONSUMER_SET_CHANNEL_MONITOR_PIPE;
 
+       pthread_mutex_lock(consumer_sock->lock);
        DBG3("Sending set_channel_monitor_pipe command to consumer");
        ret = consumer_send_msg(consumer_sock, &msg);
        if (ret < 0) {
@@ -1081,6 +1091,7 @@ int consumer_send_channel_monitor_pipe(struct consumer_socket *consumer_sock,
 
        DBG2("Channel monitoring pipe successfully sent");
 error:
+       pthread_mutex_unlock(consumer_sock->lock);
        return ret;
 }
 
@@ -1407,8 +1418,11 @@ int consumer_snapshot_channel(struct consumer_socket *socket, uint64_t key,
                msg.u.snapshot_channel.use_relayd = 1;
                ret = snprintf(msg.u.snapshot_channel.pathname,
                                sizeof(msg.u.snapshot_channel.pathname),
-                               "%s/%s-%s-%" PRIu64 "%s", output->consumer->subdir,
-                               output->name, output->datetime, output->nb_snapshot,
+                               "%s/%s/%s-%s-%" PRIu64 "%s",
+                               output->consumer->dst.net.base_dir,
+                               output->consumer->subdir,
+                               output->name, output->datetime,
+                               output->nb_snapshot,
                                session_path);
                if (ret < 0) {
                        ret = -LTTNG_ERR_NOMEM;
@@ -1417,8 +1431,10 @@ int consumer_snapshot_channel(struct consumer_socket *socket, uint64_t key,
        } else {
                ret = snprintf(msg.u.snapshot_channel.pathname,
                                sizeof(msg.u.snapshot_channel.pathname),
-                               "%s/%s-%s-%" PRIu64 "%s", output->consumer->dst.trace_path,
-                               output->name, output->datetime, output->nb_snapshot,
+                               "%s/%s-%s-%" PRIu64 "%s",
+                               output->consumer->dst.session_root_path,
+                               output->name, output->datetime,
+                               output->nb_snapshot,
                                session_path);
                if (ret < 0) {
                        ret = -LTTNG_ERR_NOMEM;
@@ -1438,7 +1454,9 @@ int consumer_snapshot_channel(struct consumer_socket *socket, uint64_t key,
        }
 
        health_code_update();
+       pthread_mutex_lock(socket->lock);
        ret = consumer_send_msg(socket, &msg);
+       pthread_mutex_unlock(socket->lock);
        if (ret < 0) {
                goto error;
        }
This page took 0.027854 seconds and 5 git commands to generate.