projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: allow get/put subbuf in loop for metadata stream
[lttng-modules.git]
/
lttng-events.c
diff --git
a/lttng-events.c
b/lttng-events.c
index 27a8f8644477be0bcf41c3732622e0e8c0f9fa57..567df65acea12345f51e46c937efa5f95cb15202 100644
(file)
--- a/
lttng-events.c
+++ b/
lttng-events.c
@@
-561,8
+561,16
@@
int lttng_metadata_output_channel(struct lttng_channel *chan,
int ret = 0;
size_t len, reserve_len;
int ret = 0;
size_t len, reserve_len;
+ /*
+ * Ensure we support mutiple get_next / put sequences followed
+ * by put_next.
+ */
+ WARN_ON(stream->metadata_in < stream->metadata_out);
+ if (stream->metadata_in != stream->metadata_out)
+ return 0;
+
len = stream->metadata_cache->metadata_written -
len = stream->metadata_cache->metadata_written -
- stream->metadata_
cache_read
;
+ stream->metadata_
in
;
if (!len)
return 0;
reserve_len = min_t(size_t,
if (!len)
return 0;
reserve_len = min_t(size_t,
@@
-579,10
+587,10
@@
int lttng_metadata_output_channel(struct lttng_channel *chan,
goto end;
}
chan->ops->event_write(&ctx,
goto end;
}
chan->ops->event_write(&ctx,
- stream->metadata_cache->data + stream->metadata_
cache_read
,
+ stream->metadata_cache->data + stream->metadata_
in
,
reserve_len);
chan->ops->event_commit(&ctx);
reserve_len);
chan->ops->event_commit(&ctx);
- stream->metadata_
cache_read
+= reserve_len;
+ stream->metadata_
in
+= reserve_len;
ret = reserve_len;
end:
ret = reserve_len;
end:
This page took
0.023965 seconds
and
4
git commands to generate.