X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_vfs.c;fp=lib%2Fringbuffer%2Fring_buffer_vfs.c;h=71991ebb29554ba9b2df713a73750d6e79acc843;hb=53f7c057e722934b40599fa9d5daf0cda3bda671;hp=4389b5f6562ff9e03326cd1724f1b6086123ae79;hpb=e795690f41343b02cb6e78aa5edfe126c072a53c;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_vfs.c b/lib/ringbuffer/ring_buffer_vfs.c index 4389b5f6..71991ebb 100644 --- a/lib/ringbuffer/ring_buffer_vfs.c +++ b/lib/ringbuffer/ring_buffer_vfs.c @@ -191,6 +191,15 @@ long lib_ring_buffer_ioctl(struct file *filp, unsigned int cmd, switch (cmd) { case RING_BUFFER_SNAPSHOT: + /* + * First, ensure we perform a "final" flush onto the + * stream. This will ensure we create a packet of + * padding if we encounter an empty packet. This ensures + * the time-stamps right before the snapshot is used as + * end of packet timestamp. + */ + if (!buf->quiescent) + lib_ring_buffer_switch_remote_empty(buf); return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_SNAPSHOT_GET_CONSUMED: @@ -320,6 +329,15 @@ long lib_ring_buffer_compat_ioctl(struct file *filp, unsigned int cmd, switch (cmd) { case RING_BUFFER_COMPAT_SNAPSHOT: + /* + * First, ensure we perform a "final" flush onto the + * stream. This will ensure we create a packet of + * padding if we encounter an empty packet. This ensures + * the time-stamps right before the snapshot is used as + * end of packet timestamp. + */ + if (!buf->quiescent) + lib_ring_buffer_switch_remote_empty(buf); return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot, &buf->prod_snapshot); case RING_BUFFER_COMPAT_SNAPSHOT_GET_CONSUMED: