Fix: add "flush empty" ioctl for stream intersection
[lttng-modules.git] / lib / ringbuffer / ring_buffer_vfs.c
index 274e976c974ecacf4edf293f648a428448bf8f55..97be835655a8c0f665526f8471aa1030e140b561 100644 (file)
@@ -191,15 +191,6 @@ 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_SAMPLE_POSITIONS:
@@ -282,6 +273,9 @@ long lib_ring_buffer_ioctl(struct file *filp, unsigned int cmd,
        case RING_BUFFER_FLUSH:
                lib_ring_buffer_switch_remote(buf);
                return 0;
+       case RING_BUFFER_FLUSH_EMPTY:
+               lib_ring_buffer_switch_remote_empty(buf);
+               return 0;
        default:
                return -ENOIOCTLCMD;
        }
@@ -332,15 +326,6 @@ 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_SAMPLE_POSITIONS:
@@ -439,6 +424,9 @@ long lib_ring_buffer_compat_ioctl(struct file *filp, unsigned int cmd,
        case RING_BUFFER_COMPAT_FLUSH:
                lib_ring_buffer_switch_remote(buf);
                return 0;
+       case RING_BUFFER_COMPAT_FLUSH_EMPTY:
+               lib_ring_buffer_switch_remote_empty(buf);
+               return 0;
        default:
                return -ENOIOCTLCMD;
        }
This page took 0.023296 seconds and 4 git commands to generate.