From: David Goulet Date: Mon, 12 Dec 2011 17:56:29 +0000 (-0500) Subject: Fix flush buffer after wait quiescent X-Git-Tag: v2.0-pre15~8 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=9d6c7d3f1d68c55b6722d4c08da9f9d3f281e61d Fix flush buffer after wait quiescent Signed-off-by: David Goulet --- diff --git a/lttng-sessiond/ust-app.c b/lttng-sessiond/ust-app.c index 73dc770c9..6de177564 100644 --- a/lttng-sessiond/ust-app.c +++ b/lttng-sessiond/ust-app.c @@ -1944,6 +1944,17 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app) goto error_rcu_unlock; } + /* This inhibits UST tracing */ + ret = ustctl_stop_session(app->key.sock, ua_sess->handle); + if (ret < 0) { + ERR("Error stopping tracing for app pid: %d", app->key.pid); + goto error_rcu_unlock; + } + + /* Quiescent wait after stopping trace */ + ustctl_wait_quiescent(app->key.sock); + + /* Flushing buffers */ cds_lfht_for_each_entry(ua_sess->channels, &iter, ua_chan, node) { ret = ustctl_sock_flush_buffer(app->key.sock, ua_chan->obj); if (ret < 0) { @@ -1955,18 +1966,6 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app) } } - /* This inhibits UST tracing */ - ret = ustctl_stop_session(app->key.sock, ua_sess->handle); - if (ret < 0) { - ERR("Error stopping tracing for app pid: %d", app->key.pid); - goto error_rcu_unlock; - } - - rcu_read_unlock(); - - /* Quiescent wait after stopping trace */ - ustctl_wait_quiescent(app->key.sock); - /* Flush all buffers before stopping */ ret = ustctl_sock_flush_buffer(app->key.sock, ua_sess->metadata->obj); if (ret < 0) { @@ -1974,6 +1973,8 @@ int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app) ERR("Ended with ret %d", ret); } + rcu_read_unlock(); + return 0; error_rcu_unlock: