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
