Command to make a directory on the consumer or relay
[lttng-tools.git] / src / bin / lttng-sessiond / consumer.c
index 5f551e31dd5a05d6283e0aca2cbe01ca660096b4..31f70434534cf56b3fd173242c1e5f3831e8c367 100644 (file)
@@ -1579,3 +1579,48 @@ end:
        rcu_read_unlock();
        return ret;
 }
+
+/*
+ * Ask the consumer to create a directory.
+ *
+ * Called with the consumer socket lock held.
+ */
+int consumer_mkdir(struct consumer_socket *socket, uint64_t session_id,
+               const struct consumer_output *output, const char *path,
+               uid_t uid, gid_t gid)
+{
+       int ret;
+       struct lttcomm_consumer_msg msg;
+
+       assert(socket);
+
+       DBG("Consumer mkdir %s in session %" PRIu64, path, session_id);
+
+       memset(&msg, 0, sizeof(msg));
+       msg.cmd_type = LTTNG_CONSUMER_MKDIR;
+       msg.u.mkdir.session_id = session_id;
+       msg.u.mkdir.uid = uid;
+       msg.u.mkdir.gid = gid;
+       ret = snprintf(msg.u.mkdir.path, sizeof(msg.u.mkdir.path), "%s", path);
+       if (ret < 0 || ret >= sizeof(msg.u.mkdir.path)) {
+               ERR("Format path");
+               ret = -1;
+               goto error;
+       }
+
+       if (output->type == CONSUMER_DST_NET) {
+               msg.u.mkdir.relayd_id = output->net_seq_index;
+       } else {
+               msg.u.mkdir.relayd_id = (uint64_t) -1ULL;
+       }
+
+       health_code_update();
+       ret = consumer_send_msg(socket, &msg);
+       if (ret < 0) {
+               goto error;
+       }
+
+error:
+       health_code_update();
+       return ret;
+}
This page took 0.024422 seconds and 5 git commands to generate.