projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into benchmark
[lttng-tools.git]
/
lttng-sessiond
/
ust-app.c
diff --git
a/lttng-sessiond/ust-app.c
b/lttng-sessiond/ust-app.c
index 2ed9d002d49f444df38662f3cf26e335d10f0b41..616a7ae2f50c04ebf1365bc20d218d3ec28b256e 100644
(file)
--- a/
lttng-sessiond/ust-app.c
+++ b/
lttng-sessiond/ust-app.c
@@
-565,6
+565,8
@@
static int open_ust_metadata(struct ust_app *app,
goto error;
}
goto error;
}
+ ua_sess->metadata->handle = ua_sess->metadata->obj->handle;
+
error:
return ret;
}
error:
return ret;
}
@@
-1160,6
+1162,7
@@
static int create_ust_app_metadata(struct ust_app_session *ua_sess,
char *pathname, struct ust_app *app)
{
int ret = 0;
char *pathname, struct ust_app *app)
{
int ret = 0;
+ mode_t old_umask;
if (ua_sess->metadata == NULL) {
/* Allocate UST metadata */
if (ua_sess->metadata == NULL) {
/* Allocate UST metadata */
@@
-1185,11
+1188,13
@@
static int create_ust_app_metadata(struct ust_app_session *ua_sess,
goto error;
}
goto error;
}
+ old_umask = umask(0);
ret = mkdir(ua_sess->path, S_IRWXU | S_IRWXG);
if (ret < 0) {
PERROR("mkdir UST metadata");
goto error;
}
ret = mkdir(ua_sess->path, S_IRWXU | S_IRWXG);
if (ret < 0) {
PERROR("mkdir UST metadata");
goto error;
}
+ umask(old_umask);
ret = snprintf(ua_sess->metadata->pathname, PATH_MAX,
"%s/metadata", ua_sess->path);
ret = snprintf(ua_sess->metadata->pathname, PATH_MAX,
"%s/metadata", ua_sess->path);
@@
-1922,7
+1927,9
@@
error_rcu_unlock:
int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app)
{
int ret = 0;
int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app)
{
int ret = 0;
+ struct cds_lfht_iter iter;
struct ust_app_session *ua_sess;
struct ust_app_session *ua_sess;
+ struct ust_app_channel *ua_chan;
DBG("Stopping tracing for ust app pid %d", app->key.pid);
DBG("Stopping tracing for ust app pid %d", app->key.pid);
@@
-1934,21
+1941,23
@@
int ust_app_stop_trace(struct ltt_ust_session *usess, struct ust_app *app)
goto error_rcu_unlock;
}
goto error_rcu_unlock;
}
-#if 0 /* only useful when periodical flush will be supported */
- /* need to keep a handle on shm in session for this. */
/* Flush all buffers before stopping */
/* Flush all buffers before stopping */
- ret = ustctl_
flush_buffer(usess->sock, u
sess->metadata->obj);
+ ret = ustctl_
sock_flush_buffer(app->key.sock, ua_
sess->metadata->obj);
if (ret < 0) {
if (ret < 0) {
- ERR("UST metadata flush failed");
+ ERR("UST app PID %d metadata flush failed", app->key.pid);
+ ERR("Ended with ret %d", ret);
}
}
- cds_l
ist_for_each_entry(ustchan, &usess->channels.head, list
) {
- ret = ustctl_
flush_buffer(usess->sock, ust
chan->obj);
+ cds_l
fht_for_each_entry(ua_sess->channels, &iter, ua_chan, node
) {
+ ret = ustctl_
sock_flush_buffer(app->key.sock, ua_
chan->obj);
if (ret < 0) {
if (ret < 0) {
- ERR("UST flush buffer error");
+ ERR("UST app PID %d channel %s flush failed",
+ app->key.pid, ua_chan->name);
+ ERR("Ended with ret %d", ret);
+ /* Continuing flushing all buffers */
+ continue;
}
}
}
}
-#endif
/* This inhibits UST tracing */
ret = ustctl_stop_session(app->key.sock, ua_sess->handle);
/* This inhibits UST tracing */
ret = ustctl_stop_session(app->key.sock, ua_sess->handle);
This page took
0.034562 seconds
and
4
git commands to generate.