X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fkernel.c;h=1fae30f0ad7372bdd2f439d10b1044181048f127;hb=68808f4e0bbb3adccff72ff9dab6ec9f3a9e6866;hp=faf35cc7fc8f8a42c927325a15a161bd69215148;hpb=15dc512ac8cf2f59c8779f442f116a23975c950c;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/kernel.c b/src/bin/lttng-sessiond/kernel.c index faf35cc7f..1fae30f0a 100644 --- a/src/bin/lttng-sessiond/kernel.c +++ b/src/bin/lttng-sessiond/kernel.c @@ -37,7 +37,7 @@ * Add context on a kernel channel. */ int kernel_add_channel_context(struct ltt_kernel_channel *chan, - struct lttng_kernel_context *ctx) + struct ltt_kernel_context *ctx) { int ret; @@ -45,7 +45,7 @@ int kernel_add_channel_context(struct ltt_kernel_channel *chan, assert(ctx); DBG("Adding context to channel %s", chan->channel->name); - ret = kernctl_add_context(chan->fd, ctx); + ret = kernctl_add_context(chan->fd, &ctx->ctx); if (ret < 0) { if (errno != EEXIST) { PERROR("add context ioctl"); @@ -56,13 +56,7 @@ int kernel_add_channel_context(struct ltt_kernel_channel *chan, goto error; } - chan->ctx = zmalloc(sizeof(struct lttng_kernel_context)); - if (chan->ctx == NULL) { - PERROR("zmalloc event context"); - goto error; - } - - memcpy(chan->ctx, ctx, sizeof(struct lttng_kernel_context)); + cds_list_add_tail(&ctx->list, &chan->ctx_list); return 0; @@ -201,6 +195,9 @@ int kernel_create_event(struct lttng_event *ev, case ENOSYS: WARN("Event type not implemented"); break; + case ENOENT: + WARN("Event %s not found!", ev->name); + break; default: PERROR("create event ioctl"); } @@ -826,13 +823,12 @@ void kernel_destroy_channel(struct ltt_kernel_channel *kchan) * Return 0 on success or else return a LTTNG_ERR code. */ int kernel_snapshot_record(struct ltt_kernel_session *ksess, - struct snapshot_output *output, int wait, unsigned int nb_streams) + struct snapshot_output *output, int wait, uint64_t max_size_per_stream) { int err, ret, saved_metadata_fd; struct consumer_socket *socket; struct lttng_ht_iter iter; struct ltt_kernel_metadata *saved_metadata; - uint64_t max_size_per_stream = 0; assert(ksess); assert(ksess->consumer); @@ -858,10 +854,6 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, goto error_open_stream; } - if (output->max_size > 0 && nb_streams > 0) { - max_size_per_stream = output->max_size / nb_streams; - } - /* Send metadata to consumer and snapshot everything. */ cds_lfht_for_each_entry(ksess->consumer->socks->ht, &iter.iter, socket, node.node) { @@ -888,17 +880,6 @@ int kernel_snapshot_record(struct ltt_kernel_session *ksess, /* For each channel, ask the consumer to snapshot it. */ cds_list_for_each_entry(chan, &ksess->channel_list.head, list) { - if (max_size_per_stream && - chan->channel->attr.subbuf_size > max_size_per_stream) { - ret = LTTNG_ERR_INVALID; - DBG3("Kernel snapshot record maximum stream size %" PRIu64 - " is smaller than subbuffer size of %" PRIu64, - max_size_per_stream, chan->channel->attr.subbuf_size); - (void) kernel_consumer_destroy_metadata(socket, - ksess->metadata); - goto error_consumer; - } - pthread_mutex_lock(socket->lock); ret = consumer_snapshot_channel(socket, chan->fd, output, 0, ksess->uid, ksess->gid,