@@ -5018,7 +5018,7 @@ static int show_traces_open(struct inode *inode, struct file *file)
50185018 return 0 ;
50195019}
50205020
5021- static int show_traces_release (struct inode * inode , struct file * file )
5021+ static int tracing_seq_release (struct inode * inode , struct file * file )
50225022{
50235023 struct trace_array * tr = inode -> i_private ;
50245024
@@ -5059,7 +5059,7 @@ static const struct file_operations show_traces_fops = {
50595059 .open = show_traces_open ,
50605060 .read = seq_read ,
50615061 .llseek = seq_lseek ,
5062- .release = show_traces_release ,
5062+ .release = tracing_seq_release ,
50635063};
50645064
50655065static ssize_t
@@ -6860,6 +6860,22 @@ tracing_total_entries_read(struct file *filp, char __user *ubuf,
68606860 return simple_read_from_buffer (ubuf , cnt , ppos , buf , r );
68616861}
68626862
6863+ static int tracing_buffer_meta_open (struct inode * inode , struct file * filp )
6864+ {
6865+ struct trace_array * tr = inode -> i_private ;
6866+ int cpu = tracing_get_cpu (inode );
6867+ int ret ;
6868+
6869+ ret = tracing_check_open_get_tr (tr );
6870+ if (ret )
6871+ return ret ;
6872+
6873+ ret = ring_buffer_meta_seq_init (filp , tr -> array_buffer .buffer , cpu );
6874+ if (ret < 0 )
6875+ __trace_array_put (tr );
6876+ return ret ;
6877+ }
6878+
68636879static ssize_t
68646880tracing_free_buffer_write (struct file * filp , const char __user * ubuf ,
68656881 size_t cnt , loff_t * ppos )
@@ -7436,6 +7452,13 @@ static const struct file_operations tracing_entries_fops = {
74367452 .release = tracing_release_generic_tr ,
74377453};
74387454
7455+ static const struct file_operations tracing_buffer_meta_fops = {
7456+ .open = tracing_buffer_meta_open ,
7457+ .read = seq_read ,
7458+ .llseek = seq_lseek ,
7459+ .release = tracing_seq_release ,
7460+ };
7461+
74397462static const struct file_operations tracing_total_entries_fops = {
74407463 .open = tracing_open_generic_tr ,
74417464 .read = tracing_total_entries_read ,
@@ -8668,6 +8691,9 @@ tracing_init_tracefs_percpu(struct trace_array *tr, long cpu)
86688691 trace_create_cpu_file ("buffer_size_kb" , TRACE_MODE_READ , d_cpu ,
86698692 tr , cpu , & tracing_entries_fops );
86708693
8694+ if (tr -> range_addr_start )
8695+ trace_create_cpu_file ("buffer_meta" , TRACE_MODE_READ , d_cpu ,
8696+ tr , cpu , & tracing_buffer_meta_fops );
86718697#ifdef CONFIG_TRACER_SNAPSHOT
86728698 if (!tr -> range_addr_start ) {
86738699 trace_create_cpu_file ("snapshot" , TRACE_MODE_WRITE , d_cpu ,
0 commit comments