[PATCH blktrace v2 03/22] blktrace: add definitions for BLKTRACESETUP2

Johannes Thumshirn posted 22 patches 6 days, 9 hours ago
[PATCH blktrace v2 03/22] blktrace: add definitions for BLKTRACESETUP2
Posted by Johannes Thumshirn 6 days, 9 hours ago
Add definitions for a new BLKTRACESETUP2 ioctl(2).

This new ioctl(2) will request a new, updated structure layout from the
kernel which enhances the storage size of the 'action' field in order to
store additional tracepoints.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
---
 blktrace_api.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/blktrace_api.h b/blktrace_api.h
index 172b4c2..9f435a5 100644
--- a/blktrace_api.h
+++ b/blktrace_api.h
@@ -139,9 +139,24 @@ struct blk_user_trace_setup {
 	__u32 pid;
 };
 
+/*
+ * User setup structure passed with BLKTRACESETUP2
+ */
+struct blk_user_trace_setup2 {
+	char name[32];			/* output */
+	__u64 act_mask;			/* input */
+	__u32 buf_size;			/* input */
+	__u32 buf_nr;			/* input */
+	__u64 start_lba;
+	__u64 end_lba;
+	__u32 pid;
+	__u32 reserved;			/* for futute use */
+};
+
 #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
 #define BLKTRACESTART _IO(0x12,116)
 #define BLKTRACESTOP _IO(0x12,117)
 #define BLKTRACETEARDOWN _IO(0x12,118)
+#define BLKTRACESETUP2 _IOWR(0x12, 142, struct blk_user_trace_setup2)
 
 #endif
-- 
2.51.0
Re: [PATCH blktrace v2 03/22] blktrace: add definitions for BLKTRACESETUP2
Posted by Damien Le Moal 17 hours ago
On 9/26/25 00:04, Johannes Thumshirn wrote:
> Add definitions for a new BLKTRACESETUP2 ioctl(2).
> 
> This new ioctl(2) will request a new, updated structure layout from the
> kernel which enhances the storage size of the 'action' field in order to
> store additional tracepoints.
> 
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> ---
>  blktrace_api.h | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/blktrace_api.h b/blktrace_api.h
> index 172b4c2..9f435a5 100644
> --- a/blktrace_api.h
> +++ b/blktrace_api.h
> @@ -139,9 +139,24 @@ struct blk_user_trace_setup {
>  	__u32 pid;
>  };
>  
> +/*
> + * User setup structure passed with BLKTRACESETUP2
> + */
> +struct blk_user_trace_setup2 {
> +	char name[32];			/* output */
> +	__u64 act_mask;			/* input */
> +	__u32 buf_size;			/* input */
> +	__u32 buf_nr;			/* input */
> +	__u64 start_lba;
> +	__u64 end_lba;
> +	__u32 pid;
> +	__u32 reserved;			/* for futute use */
> +};

Kernel side defined:

+struct blk_user_trace_setup2 {
+	char name[32];		/* output */
+	__u64 act_mask;		/* input */
+	__u32 buf_size;		/* input */
+	__u32 buf_nr;		/* input */
+	__u64 start_lba;
+	__u64 end_lba;
+	__u32 pid;
+	__u32 flags;		/* currently unused */
+	__u64 reserved[7];
+};

So not the same struct fields and size...

Why not use the definition in include/uapi/linux/blktrace_api.h ?

> +
>  #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
>  #define BLKTRACESTART _IO(0x12,116)
>  #define BLKTRACESTOP _IO(0x12,117)
>  #define BLKTRACETEARDOWN _IO(0x12,118)
> +#define BLKTRACESETUP2 _IOWR(0x12, 142, struct blk_user_trace_setup2)

Same here. This is in include/uapi/linux/fs.h, so why duplicate it ?

>  
>  #endif


-- 
Damien Le Moal
Western Digital Research