From: Baolin Liu <liubaolin12138@163.com>
To: almaz.alexandrovich@paragon-software.com, rostedt@goodmis.org,
mhiramat@kernel.org, mathieu.desnoyers@efficios.com
Cc: linux-kernel@vger.kernel.org, ntfs3@lists.linux.dev,
linux-trace-kernel@vger.kernel.org, liubaolin12138@163.com,
liubaolin12138@gmail.com, Baolin Liu <liubaolin@kylinos.cn>
Subject: [PATCH v4 4/7] ntfs3: add directory index tracepoints
Date: Thu, 20 Aug 2026 17:05:01 +0800 [thread overview]
Message-ID: <20260820090504.950475-5-liubaolin12138@163.com> (raw)
In-Reply-To: <20260820090504.950475-1-liubaolin12138@163.com>
From: Baolin Liu <liubaolin@kylinos.cn>
Add ntfs3 tracepoints for directory index operations.
This adds trace events for dir_search_u(), indx_find(),
indx_insert_entry(), and indx_delete_entry() to help observe
directory index lookup, insert, and delete activity.
Signed-off-by: Baolin Liu <liubaolin@kylinos.cn>
---
fs/ntfs3/dir.c | 3 ++
fs/ntfs3/index.c | 8 ++++
include/trace/events/ntfs3.h | 81 ++++++++++++++++++++++++++++++++++++
3 files changed, 92 insertions(+)
diff --git a/fs/ntfs3/dir.c b/fs/ntfs3/dir.c
index 873d52233003..eb10e7ff45bc 100644
--- a/fs/ntfs3/dir.c
+++ b/fs/ntfs3/dir.c
@@ -14,6 +14,7 @@
#include "debug.h"
#include "ntfs.h"
#include "ntfs_fs.h"
+#include <trace/events/ntfs3.h>
/* Convert little endian UTF-16 to NLS string. */
int ntfs_utf16_to_nls(struct ntfs_sb_info *sbi, const __le16 *name, u32 len,
@@ -243,6 +244,8 @@ struct inode *dir_search_u(struct inode *dir, const struct cpu_str *uni,
struct inode *inode = NULL;
struct ntfs_fnd *fnd_a = NULL;
+ trace_ntfs3_dir_search_u(dir, uni ? uni->len : 0);
+
if (!fnd) {
fnd_a = fnd_get();
if (!fnd_a) {
diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c
index 2b439ac04356..d4ca7b1bb524 100644
--- a/fs/ntfs3/index.c
+++ b/fs/ntfs3/index.c
@@ -13,6 +13,7 @@
#include "debug.h"
#include "ntfs.h"
#include "ntfs_fs.h"
+#include <trace/events/ntfs3.h>
static const struct INDEX_NAMES {
const __le16 *name;
@@ -1179,6 +1180,8 @@ int indx_find(struct ntfs_index *indx, struct ntfs_inode *ni,
if (!root)
root = indx_get_root(&ni->dir, ni, NULL, NULL);
+ trace_ntfs3_indx_find(&ni->vfs_inode, indx->type, key_len);
+
if (!root) {
/* Should not happen. */
return -EINVAL;
@@ -2051,6 +2054,9 @@ int indx_insert_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
return -EINVAL;
}
+ trace_ntfs3_indx_insert_entry(&ni->vfs_inode, indx->type,
+ le16_to_cpu(new_de->key_size), undo);
+
if (fnd_is_empty(fnd)) {
/*
* Find the spot the tree where we want to
@@ -2409,6 +2415,8 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
return -EINVAL;
}
+ trace_ntfs3_indx_delete_entry(&ni->vfs_inode, indx->type, key_len);
+
/* Locate the entry to remove. */
err = indx_find(indx, ni, root, key, key_len, ctx, &diff, &e, fnd);
if (err)
diff --git a/include/trace/events/ntfs3.h b/include/trace/events/ntfs3.h
index 67a2bde0266d..4ac05ed29e49 100644
--- a/include/trace/events/ntfs3.h
+++ b/include/trace/events/ntfs3.h
@@ -142,6 +142,87 @@ TRACE_EVENT(ntfs3_create_inode,
__entry->parent_ino, __get_str(name))
);
+TRACE_EVENT(ntfs3_dir_search_u,
+ TP_PROTO(struct inode *dir, unsigned int name_len),
+ TP_ARGS(dir, name_len),
+ TP_STRUCT__entry(
+ __field(unsigned long, dir_ino)
+ __field(dev_t, dev)
+ __field(unsigned int, name_len)
+ ),
+ TP_fast_assign(
+ __entry->dir_ino = dir->i_ino;
+ __entry->dev = dir->i_sb->s_dev;
+ __entry->name_len = name_len;
+ ),
+ TP_printk("dev=(%d,%d) dir=%lu name_len=%u",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ __entry->dir_ino, __entry->name_len)
+);
+
+TRACE_EVENT(ntfs3_indx_find,
+ TP_PROTO(struct inode *inode, u8 type, size_t key_len),
+ TP_ARGS(inode, type, key_len),
+ TP_STRUCT__entry(
+ __field(unsigned long, ino)
+ __field(size_t, key_len)
+ __field(dev_t, dev)
+ __field(u8, type)
+ ),
+ TP_fast_assign(
+ __entry->ino = inode->i_ino;
+ __entry->key_len = key_len;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->type = type;
+ ),
+ TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%zu",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ __entry->ino, __entry->type, __entry->key_len)
+);
+
+TRACE_EVENT(ntfs3_indx_insert_entry,
+ TP_PROTO(struct inode *inode, u8 type, u16 key_len, bool undo),
+ TP_ARGS(inode, type, key_len, undo),
+ TP_STRUCT__entry(
+ __field(unsigned long, ino)
+ __field(dev_t, dev)
+ __field(u16, key_len)
+ __field(u8, type)
+ __field(bool, undo)
+ ),
+ TP_fast_assign(
+ __entry->ino = inode->i_ino;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->key_len = key_len;
+ __entry->type = type;
+ __entry->undo = undo;
+ ),
+ TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%u undo=%d",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ __entry->ino, __entry->type, __entry->key_len,
+ __entry->undo)
+);
+
+TRACE_EVENT(ntfs3_indx_delete_entry,
+ TP_PROTO(struct inode *inode, u8 type, u32 key_len),
+ TP_ARGS(inode, type, key_len),
+ TP_STRUCT__entry(
+ __field(unsigned long, ino)
+ __field(u32, key_len)
+ __field(dev_t, dev)
+ __field(u8, type)
+ ),
+ TP_fast_assign(
+ __entry->ino = inode->i_ino;
+ __entry->key_len = key_len;
+ __entry->dev = inode->i_sb->s_dev;
+ __entry->type = type;
+ ),
+ TP_printk("dev=(%d,%d) ino=%lu type=%u key_len=%u",
+ MAJOR(__entry->dev), MINOR(__entry->dev),
+ __entry->ino, __entry->type, __entry->key_len)
+);
+
#endif /* _TRACE_NTFS3_H */
#include <trace/define_trace.h>
--
2.51.0
next prev parent reply other threads:[~2026-08-20 9:06 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 9:04 [PATCH v4 0/7] ntfs3: add tracepoints for core filesystem paths Baolin Liu
2026-08-20 9:04 ` [PATCH v4 1/7] ntfs3: add mount and log replay tracepoints Baolin Liu
2026-08-20 9:04 ` [PATCH v4 2/7] ntfs3: add namei tracepoints Baolin Liu
2026-08-20 9:05 ` [PATCH v4 3/7] ntfs3: add create inode tracepoint Baolin Liu
2026-08-20 9:05 ` Baolin Liu [this message]
2026-08-20 9:17 ` [PATCH v4 4/7] ntfs3: add directory index tracepoints sashiko-bot
2026-08-20 9:05 ` [PATCH v4 5/7] ntfs3: add allocation tracepoints Baolin Liu
2026-08-20 9:05 ` [PATCH v4 6/7] ntfs3: add iomap tracepoints Baolin Liu
2026-08-20 9:19 ` sashiko-bot
2026-08-20 9:05 ` [PATCH v4 7/7] ntfs3: add file I/O tracepoints Baolin Liu
2026-08-20 9:19 ` sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260820090504.950475-5-liubaolin12138@163.com \
--to=liubaolin12138@163.com \
--cc=almaz.alexandrovich@paragon-software.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=liubaolin12138@gmail.com \
--cc=liubaolin@kylinos.cn \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=ntfs3@lists.linux.dev \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.