X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-consumer.c;h=8a3533ba10c360097a8fb2cb0099a4f3d986f324;hp=611b54dcdb17d392f14bd42dc98320a0cb098b61;hb=d7ba13889c8692b14f99238ddf2721ed78df89d2;hpb=90e7d72ff2b93752b8c81c49e9251a83b01703c6 diff --git a/src/bin/lttng-sessiond/ust-consumer.c b/src/bin/lttng-sessiond/ust-consumer.c index 611b54dcd..8a3533ba1 100644 --- a/src/bin/lttng-sessiond/ust-consumer.c +++ b/src/bin/lttng-sessiond/ust-consumer.c @@ -109,6 +109,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess, char *pathname = NULL; struct lttcomm_consumer_msg msg; struct ust_registry_channel *chan_reg; + char shm_path[PATH_MAX] = ""; assert(ua_sess); assert(ua_chan); @@ -136,10 +137,25 @@ static int ask_channel_creation(struct ust_app_session *ua_sess, if (ua_chan->attr.type == LTTNG_UST_CHAN_METADATA) { chan_id = -1U; + /* + * Metadata channels shm_path (buffers) are handled within + * session daemon. Consumer daemon should not try to create + * those buffer files. + */ } else { chan_reg = ust_registry_channel_find(registry, chan_reg_key); assert(chan_reg); chan_id = chan_reg->chan_id; + if (ua_sess->shm_path[0]) { + strncpy(shm_path, ua_sess->shm_path, sizeof(shm_path)); + shm_path[sizeof(shm_path) - 1] = '\0'; + strncat(shm_path, "/", + sizeof(shm_path) - strlen(shm_path) - 1); + strncat(shm_path, ua_chan->name, + sizeof(shm_path) - strlen(shm_path) - 1); + strncat(shm_path, "_", + sizeof(shm_path) - strlen(shm_path) - 1); + } } switch (ua_chan->attr.output) { @@ -171,7 +187,8 @@ static int ask_channel_creation(struct ust_app_session *ua_sess, ua_chan->tracefile_count, ua_sess->id, ua_sess->output_traces, - ua_sess->uid); + ua_sess->uid, + shm_path); health_code_update();