From: Baolin Liu <[email protected]>

Add ntfs3 tracepoints for namei operations.

This adds trace events for ntfs_lookup() and ntfs_rename()
to help observe directory lookup and rename activity.

Signed-off-by: Baolin Liu <[email protected]>
---
 fs/ntfs3/namei.c             |  5 ++++
 include/trace/events/ntfs3.h | 47 ++++++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+)

diff --git a/fs/ntfs3/namei.c b/fs/ntfs3/namei.c
index c59de5f2fa97..c1523decee32 100644
--- a/fs/ntfs3/namei.c
+++ b/fs/ntfs3/namei.c
@@ -13,6 +13,7 @@
 #include "debug.h"
 #include "ntfs.h"
 #include "ntfs_fs.h"
+#include <trace/events/ntfs3.h>
 
 /*
  * fill_name_de - Format NTFS_DE in @buf.
@@ -72,6 +73,8 @@ static struct dentry *ntfs_lookup(struct inode *dir, struct 
dentry *dentry,
        struct inode *inode;
        int err;
 
+       trace_ntfs3_lookup(dir, dentry);
+
        if (!uni)
                inode = ERR_PTR(-ENOMEM);
        else {
@@ -275,6 +278,8 @@ static int ntfs_rename(struct mnt_idmap *idmap, struct 
inode *dir,
        if (unlikely(ntfs3_forced_shutdown(sb)))
                return -EIO;
 
+       trace_ntfs3_rename(dir, dentry, new_dir, new_dentry);
+
        if (flags & ~RENAME_NOREPLACE)
                return -EINVAL;
 
diff --git a/include/trace/events/ntfs3.h b/include/trace/events/ntfs3.h
index d00f66e42ba8..ba27531d889e 100644
--- a/include/trace/events/ntfs3.h
+++ b/include/trace/events/ntfs3.h
@@ -80,6 +80,53 @@ TRACE_EVENT(ntfs3_log_replay,
                  __entry->size, __entry->initialized, __entry->err)
 );
 
+TRACE_EVENT(ntfs3_lookup,
+       TP_PROTO(struct inode *dir, struct dentry *dentry),
+       TP_ARGS(dir, dentry),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __field(unsigned long, parent_ino)
+               __string(name, dentry->d_name.name)
+               __field(unsigned int, name_len)
+       ),
+       TP_fast_assign(
+               __entry->dev = dir->i_sb->s_dev;
+               __entry->parent_ino = dir->i_ino;
+               __assign_str(name);
+               __entry->name_len = dentry->d_name.len;
+       ),
+       TP_printk("dev=(%d,%d) parent=%lu name=%s len=%u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->parent_ino, __get_str(name),
+                 __entry->name_len)
+);
+
+TRACE_EVENT(ntfs3_rename,
+       TP_PROTO(struct inode *dir, struct dentry *dentry,
+                struct inode *new_dir, struct dentry *new_dentry),
+       TP_ARGS(dir, dentry, new_dir, new_dentry),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __field(unsigned long, dir_ino)
+               __field(unsigned long, new_dir_ino)
+               __field(unsigned long, ino)
+               __string(old_name, dentry->d_name.name)
+               __string(new_name, new_dentry->d_name.name)
+       ),
+       TP_fast_assign(
+               __entry->dev = dir->i_sb->s_dev;
+               __entry->dir_ino = dir->i_ino;
+               __entry->new_dir_ino = new_dir->i_ino;
+               __entry->ino = d_inode(dentry)->i_ino;
+               __assign_str(old_name);
+               __assign_str(new_name);
+       ),
+       TP_printk("dev=(%d,%d) dir=%lu new_dir=%lu ino=%lu old=%s new=%s",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->dir_ino, __entry->new_dir_ino, __entry->ino,
+                 __get_str(old_name), __get_str(new_name))
+);
+
 #endif /* _TRACE_NTFS3_H */
 
 #include <trace/define_trace.h>
-- 
2.51.0


Reply via email to