diff options
| author | Baolin Liu <liubaolin@kylinos.cn> | 2026-08-20 17:05:04 +0800 |
|---|---|---|
| committer | Konstantin Komarov <almaz.alexandrovich@paragon-software.com> | 2026-10-28 08:09:20 +0100 |
| commit | ee1cb3443cff5a800948b662756f75b17ca63fe2 (patch) | |
| tree | 7eb202cfdacfdbac016fc10cd1e2a9db90e9d348 | |
| parent | 7f7141354bedb7f0257b119768d8c3141dcb9453 (diff) | |
| download | linux-ee1cb3443cff5a800948b662756f75b17ca63fe2.tar.gz linux-ee1cb3443cff5a800948b662756f75b17ca63fe2.zip | |
ntfs3: add file I/O tracepoints
Add ntfs3 tracepoints for file I/O operations.
This adds trace events for ntfs_file_read_iter() and
ntfs_file_write_iter() to help observe file read and
write activity.
Signed-off-by: Baolin Liu <liubaolin@kylinos.cn>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
| -rw-r--r-- | fs/ntfs3/file.c | 5 | ||||
| -rw-r--r-- | include/trace/events/ntfs3.h | 33 |
2 files changed, 38 insertions, 0 deletions
diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index 95dfe6878860..c11da747270f 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -20,6 +20,7 @@ #include "debug.h" #include "ntfs.h" #include "ntfs_fs.h" +#include <trace/events/ntfs3.h> /* * cifx, btrfs, exfat, ext4, f2fs use this constant. @@ -827,6 +828,8 @@ static ssize_t ntfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) unsigned int dio_flags; ssize_t ret; + trace_ntfs3_file_read_iter(iocb, iter); + ret = check_read_restriction(inode); if (ret) return ret; @@ -1247,6 +1250,8 @@ static ssize_t ntfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) loff_t vbo, endbyte; ssize_t ret, err; + trace_ntfs3_file_write_iter(iocb, from); + if (!inode_trylock(inode)) { if (iocb->ki_flags & IOCB_NOWAIT) return -EAGAIN; diff --git a/include/trace/events/ntfs3.h b/include/trace/events/ntfs3.h index e0c0c44ce318..750300068984 100644 --- a/include/trace/events/ntfs3.h +++ b/include/trace/events/ntfs3.h @@ -351,6 +351,39 @@ TRACE_EVENT(ntfs3_iomap_end, __entry->written, __entry->flags) ); +DECLARE_EVENT_CLASS(ntfs3_file_class, + TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), + TP_ARGS(iocb, iter), + TP_STRUCT__entry( + __field(loff_t, size) + __field(loff_t, offset) + __field(size_t, count) + __field(unsigned long, ino) + __field(dev_t, dev) + ), + TP_fast_assign( + __entry->size = i_size_read(file_inode(iocb->ki_filp)); + __entry->offset = iocb->ki_pos; + __entry->count = iov_iter_count(iter); + __entry->ino = file_inode(iocb->ki_filp)->i_ino; + __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; + ), + TP_printk("dev=(%d,%d) ino=%lu size=%lld pos=%lld bytecount=%zu", + MAJOR(__entry->dev), MINOR(__entry->dev), + __entry->ino, __entry->size, __entry->offset, + __entry->count) +); + +DEFINE_EVENT(ntfs3_file_class, ntfs3_file_read_iter, + TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), + TP_ARGS(iocb, iter) +); + +DEFINE_EVENT(ntfs3_file_class, ntfs3_file_write_iter, + TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), + TP_ARGS(iocb, iter) +); + #endif /* _TRACE_NTFS3_H */ #include <trace/define_trace.h> |
