Re: [RFC] traceevent/block: Add REQ_ATOMIC flag to block trace events

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/04/2025 06:28, Ritesh Harjani (IBM) wrote:
Filesystems like XFS can implement atomic write I/O using either REQ_ATOMIC
flag set in the bio or via CoW operation. It will be useful if we have a
flag in trace events to distinguish between the two.

I suppose that this could be useful. So far I test with block driver traces, i.e. NVMe or SCSI internal traces, just to ensure that we see the requests sent as expected

This patch adds
char 'a' to rwbs field of the trace events if REQ_ATOMIC flag is set in
the bio.

All others use uppercase characters, so I suggest that you continue to use that. Since 'A' is already used, how about 'U' for untorn? Or 'T' for aTOMic :)


<W/ REQ_ATOMIC>
=================
xfs_io-1107    [002] .....   406.206441: block_rq_issue: 8,48 WSa 16384 () 768 + 32 none,0,0 [xfs_io]
<idle>-0       [002] ..s1.   406.209918: block_rq_complete: 8,48 WSa () 768 + 32 none,0,0 [0]

<W/O REQ_ATOMIC>
===============
xfs_io-1108    [002] .....   411.212317: block_rq_issue: 8,48 WS 16384 () 1024 + 32 none,0,0 [xfs_io]
<idle>-0       [002] ..s1.   411.215842: block_rq_complete: 8,48 WS () 1024 + 32 none,0,0 [0]

Signed-off-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx>
---
  include/trace/events/block.h | 2 +-
  kernel/trace/blktrace.c      | 2 ++
  2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/trace/events/block.h b/include/trace/events/block.h
index bd0ea07338eb..de538b110ea1 100644
--- a/include/trace/events/block.h
+++ b/include/trace/events/block.h
@@ -11,7 +11,7 @@
  #include <linux/tracepoint.h>
  #include <uapi/linux/ioprio.h>

-#define RWBS_LEN	8
+#define RWBS_LEN	9

  #define IOPRIO_CLASS_STRINGS \
  	{ IOPRIO_CLASS_NONE,	"none" }, \
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index 3679a6d18934..6badf296ab2b 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -1896,6 +1896,8 @@ void blk_fill_rwbs(char *rwbs, blk_opf_t opf)
  		rwbs[i++] = 'S';
  	if (opf & REQ_META)
  		rwbs[i++] = 'M';
+	if (opf & REQ_ATOMIC)
+		rwbs[i++] = 'a';

  	rwbs[i] = '\0';
  }
--
2.48.1






[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux