projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow direct access to the dirfd of a directory handle
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
kernel.c
diff --git
a/src/bin/lttng-sessiond/kernel.c
b/src/bin/lttng-sessiond/kernel.c
index 4327db24bdb3291f575da0d90c143e280c7bdbfa..b4fc995ce118762630292f4a9623fcd78c5995cf 100644
(file)
--- a/
src/bin/lttng-sessiond/kernel.c
+++ b/
src/bin/lttng-sessiond/kernel.c
@@
-1233,17
+1233,18
@@
void kernel_destroy_channel(struct ltt_kernel_channel *kchan)
/*
* Take a snapshot for a given kernel session.
*
/*
* Take a snapshot for a given kernel session.
*
- * Return
0
on success or else return a LTTNG_ERR code.
+ * Return
LTTNG_OK
on success or else return a LTTNG_ERR code.
*/
*/
-
int
kernel_snapshot_record(struct ltt_kernel_session *ksess,
+
enum lttng_error_code
kernel_snapshot_record(struct ltt_kernel_session *ksess,
struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int err, ret, saved_metadata_fd;
struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int err, ret, saved_metadata_fd;
+ enum lttng_error_code status = LTTNG_OK;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_metadata *saved_metadata;
struct consumer_socket *socket;
struct lttng_ht_iter iter;
struct ltt_kernel_metadata *saved_metadata;
- struct ltt_session *session;
+ struct ltt_session *session
= NULL
;
uint64_t trace_archive_id;
assert(ksess);
uint64_t trace_archive_id;
assert(ksess);
@@
-1266,13
+1267,13
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
ret = kernel_open_metadata(ksess);
if (ret < 0) {
ret = kernel_open_metadata(ksess);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_META_FAIL;
+
status
= LTTNG_ERR_KERN_META_FAIL;
goto error;
}
ret = kernel_open_metadata_stream(ksess);
if (ret < 0) {
goto error;
}
ret = kernel_open_metadata_stream(ksess);
if (ret < 0) {
-
ret
= LTTNG_ERR_KERN_META_FAIL;
+
status
= LTTNG_ERR_KERN_META_FAIL;
goto error_open_stream;
}
goto error_open_stream;
}
@@
-1296,19
+1297,18
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
/* Put back the saved consumer output into the session. */
ksess->consumer = saved_output;
if (ret < 0) {
/* Put back the saved consumer output into the session. */
ksess->consumer = saved_output;
if (ret < 0) {
-
ret = LTTNG_ERR_KERN_CONSUMER
_FAIL;
+
status = LTTNG_ERR_KERN_META
_FAIL;
goto error_consumer;
}
/* For each channel, ask the consumer to snapshot it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
goto error_consumer;
}
/* For each channel, ask the consumer to snapshot it. */
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
-
ret
= consumer_snapshot_channel(socket, chan->key, output, 0,
+
status
= consumer_snapshot_channel(socket, chan->key, output, 0,
ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait,
nb_packets_per_stream,
trace_archive_id);
ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait,
nb_packets_per_stream,
trace_archive_id);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
+ if (status != LTTNG_OK) {
(void) kernel_consumer_destroy_metadata(socket,
ksess->metadata);
goto error_consumer;
(void) kernel_consumer_destroy_metadata(socket,
ksess->metadata);
goto error_consumer;
@@
-1316,12
+1316,11
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
}
/* Snapshot metadata, */
}
/* Snapshot metadata, */
-
ret
= consumer_snapshot_channel(socket, ksess->metadata->key, output,
+
status
= consumer_snapshot_channel(socket, ksess->metadata->key, output,
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0,
trace_archive_id);
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0,
trace_archive_id);
- if (ret < 0) {
- ret = LTTNG_ERR_KERN_CONSUMER_FAIL;
+ if (status != LTTNG_OK) {
goto error_consumer;
}
goto error_consumer;
}
@@
-1332,8
+1331,6
@@
int kernel_snapshot_record(struct ltt_kernel_session *ksess,
(void) kernel_consumer_destroy_metadata(socket, ksess->metadata);
}
(void) kernel_consumer_destroy_metadata(socket, ksess->metadata);
}
- ret = LTTNG_OK;
-
error_consumer:
/* Close newly opened metadata stream. It's now on the consumer side. */
err = close(ksess->metadata_stream_fd);
error_consumer:
/* Close newly opened metadata stream. It's now on the consumer side. */
err = close(ksess->metadata_stream_fd);
@@
-1347,9
+1344,11
@@
error:
/* Restore metadata state.*/
ksess->metadata = saved_metadata;
ksess->metadata_stream_fd = saved_metadata_fd;
/* Restore metadata state.*/
ksess->metadata = saved_metadata;
ksess->metadata_stream_fd = saved_metadata_fd;
-
+ if (session) {
+ session_put(session);
+ }
rcu_read_unlock();
rcu_read_unlock();
- return
ret
;
+ return
status
;
}
/*
}
/*
@@
-1433,7
+1432,7
@@
enum lttng_error_code kernel_rotate_session(struct ltt_session *session)
chan->key, session->name);
ret = consumer_rotate_channel(socket, chan->key,
ksess->uid, ksess->gid, ksess->consumer,
chan->key, session->name);
ret = consumer_rotate_channel(socket, chan->key,
ksess->uid, ksess->gid, ksess->consumer,
- ksess->consumer->subdir,
+ ksess->consumer->
domain_
subdir,
/* is_metadata_channel */ false,
session->current_archive_id);
if (ret < 0) {
/* is_metadata_channel */ false,
session->current_archive_id);
if (ret < 0) {
@@
-1447,7
+1446,7
@@
enum lttng_error_code kernel_rotate_session(struct ltt_session *session)
*/
ret = consumer_rotate_channel(socket, ksess->metadata->key,
ksess->uid, ksess->gid, ksess->consumer,
*/
ret = consumer_rotate_channel(socket, ksess->metadata->key,
ksess->uid, ksess->gid, ksess->consumer,
- ksess->consumer->subdir,
+ ksess->consumer->
domain_
subdir,
/* is_metadata_channel */ true,
session->current_archive_id);
if (ret < 0) {
/* is_metadata_channel */ true,
session->current_archive_id);
if (ret < 0) {
This page took
0.026792 seconds
and
5
git commands to generate.