X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=903dfd36defb5f8591aa7532f7b0a202d8be863d;hp=60a4ef2fbd95a9a5d5af29e6b509902ca801a29f;hb=af706bb7e9bda5d6b95414165681abe422f1541e;hpb=16f6f82061de8b2a778e7c2a082d07c79ed8a790 diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 60a4ef2fb..903dfd36d 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -2254,27 +2254,6 @@ int cmd_snapshot_add_output(struct ltt_session *session, goto free_error; } - /* - * Copy sockets so the snapshot output can use them on destroy. - */ - - if (session->ust_session) { - ret = consumer_copy_sockets(new_output->consumer, - session->ust_session->consumer); - if (ret < 0) { - goto free_error; - } - new_output->ust_sockets_copied = 1; - } - if (session->kernel_session) { - ret = consumer_copy_sockets(new_output->consumer, - session->kernel_session->consumer); - if (ret < 0) { - goto free_error; - } - new_output->kernel_sockets_copied = 1; - } - rcu_read_lock(); snapshot_add_output(&session->snapshot, new_output); if (id) { @@ -2478,24 +2457,28 @@ static int record_kernel_snapshot(struct ltt_kernel_session *ksess, goto error; } - if (!output->kernel_sockets_copied) { - ret = consumer_copy_sockets(output->consumer, ksess->consumer); - if (ret < 0) { - goto error; - } - output->kernel_sockets_copied = 1; + /* + * Copy kernel session sockets so we can communicate with the right + * consumer for the snapshot record command. + */ + ret = consumer_copy_sockets(output->consumer, ksess->consumer); + if (ret < 0) { + goto error; } ret = set_relayd_for_snapshot(ksess->consumer, output, session); if (ret < 0) { - goto error; + goto error_snapshot; } ret = kernel_snapshot_record(ksess, output, wait); if (ret < 0) { - goto error; + goto error_snapshot; } +error_snapshot: + /* Clean up copied sockets so this output can use some other later on. */ + consumer_destroy_output_sockets(output->consumer); error: return ret; } @@ -2522,24 +2505,28 @@ static int record_ust_snapshot(struct ltt_ust_session *usess, goto error; } - if (!output->ust_sockets_copied) { - ret = consumer_copy_sockets(output->consumer, usess->consumer); - if (ret < 0) { - goto error; - } - output->ust_sockets_copied = 1; + /* + * Copy kernel session sockets so we can communicate with the right + * consumer for the snapshot record command. + */ + ret = consumer_copy_sockets(output->consumer, usess->consumer); + if (ret < 0) { + goto error; } ret = set_relayd_for_snapshot(usess->consumer, output, session); if (ret < 0) { - goto error; + goto error_snapshot; } ret = ust_app_snapshot_record(usess, output, wait); if (ret < 0) { - goto error; + goto error_snapshot; } +error_snapshot: + /* Clean up copied sockets so this output can use some other later on. */ + consumer_destroy_output_sockets(output->consumer); error: return ret; }