projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: only perform lttng_consumer_sync_trace_file() in local mode
[lttng-tools.git]
/
src
/
common
/
consumer
/
consumer.c
diff --git
a/src/common/consumer/consumer.c
b/src/common/consumer/consumer.c
index d57271c3a9d27222c72d95d20128a3fdd4788df6..e182c991f147baf89bcb482da2ff9b4936d775b6 100644
(file)
--- a/
src/common/consumer/consumer.c
+++ b/
src/common/consumer/consumer.c
@@
-1021,7
+1021,7
@@
struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
CDS_INIT_LIST_HEAD(&channel->streams.head);
CDS_INIT_LIST_HEAD(&channel->streams.head);
- DBG("Allocated channel (key %" PRIu64 ")", channel->key)
+ DBG("Allocated channel (key %" PRIu64 ")", channel->key)
;
end:
return channel;
end:
return channel;
@@
-1229,9
+1229,15
@@
void lttng_consumer_should_exit(struct lttng_consumer_local_data *ctx)
DBG("Consumer flag that it should quit");
}
DBG("Consumer flag that it should quit");
}
+
+/*
+ * Flush pending writes to trace output disk file.
+ */
+static
void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
off_t orig_offset)
{
void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
off_t orig_offset)
{
+ int ret;
int outfd = stream->out_fd;
/*
int outfd = stream->out_fd;
/*
@@
-1262,8
+1268,12
@@
void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
* defined. So it can be expected to lead to lower throughput in
* streaming.
*/
* defined. So it can be expected to lead to lower throughput in
* streaming.
*/
- posix_fadvise(outfd, orig_offset - stream->max_sb_size,
+
ret =
posix_fadvise(outfd, orig_offset - stream->max_sb_size,
stream->max_sb_size, POSIX_FADV_DONTNEED);
stream->max_sb_size, POSIX_FADV_DONTNEED);
+ if (ret && ret != -ENOSYS) {
+ errno = ret;
+ PERROR("posix_fadvise on fd %i", outfd);
+ }
}
/*
}
/*
@@
-1682,8
+1692,8
@@
ssize_t lttng_consumer_on_read_subbuffer_mmap(
lttng_sync_file_range(outfd, stream->out_fd_offset, len,
SYNC_FILE_RANGE_WRITE);
stream->out_fd_offset += len;
lttng_sync_file_range(outfd, stream->out_fd_offset, len,
SYNC_FILE_RANGE_WRITE);
stream->out_fd_offset += len;
+ lttng_consumer_sync_trace_file(stream, orig_offset);
}
}
- lttng_consumer_sync_trace_file(stream, orig_offset);
write_error:
/*
write_error:
/*
@@
-1912,7
+1922,9
@@
ssize_t lttng_consumer_on_read_subbuffer_splice(
stream->output_written += ret_splice;
written += ret_splice;
}
stream->output_written += ret_splice;
written += ret_splice;
}
- lttng_consumer_sync_trace_file(stream, orig_offset);
+ if (!relayd) {
+ lttng_consumer_sync_trace_file(stream, orig_offset);
+ }
goto end;
write_error:
goto end;
write_error:
@@
-2261,10
+2273,10
@@
restart:
DBG("Metadata poll return from wait with %d fd(s)",
LTTNG_POLL_GETNB(&events));
health_poll_exit();
DBG("Metadata poll return from wait with %d fd(s)",
LTTNG_POLL_GETNB(&events));
health_poll_exit();
- DBG("Metadata event ca
tched
in thread");
+ DBG("Metadata event ca
ught
in thread");
if (ret < 0) {
if (errno == EINTR) {
if (ret < 0) {
if (errno == EINTR) {
- ERR("Poll EINTR ca
tched
");
+ ERR("Poll EINTR ca
ught
");
goto restart;
}
if (LTTNG_POLL_GETNB(&events) == 0) {
goto restart;
}
if (LTTNG_POLL_GETNB(&events) == 0) {
@@
-2844,10
+2856,10
@@
restart:
DBG("Channel poll return from wait with %d fd(s)",
LTTNG_POLL_GETNB(&events));
health_poll_exit();
DBG("Channel poll return from wait with %d fd(s)",
LTTNG_POLL_GETNB(&events));
health_poll_exit();
- DBG("Channel event ca
tched
in thread");
+ DBG("Channel event ca
ught
in thread");
if (ret < 0) {
if (errno == EINTR) {
if (ret < 0) {
if (errno == EINTR) {
- ERR("Poll EINTR ca
tched
");
+ ERR("Poll EINTR ca
ught
");
goto restart;
}
if (LTTNG_POLL_GETNB(&events) == 0) {
goto restart;
}
if (LTTNG_POLL_GETNB(&events) == 0) {
This page took
0.028362 seconds
and
4
git commands to generate.