mirror of
https://github.com/versity/scoutfs.git
synced 2026-09-05 23:56:58 +00:00
scoutfs: copy names in rename trace event
The rename trace event was recording and later dereferencing pointers to dentry names that could be long gone by the time the output is generated. We need to copy the name strings into the trace buffers. Signed-off-by: Zach Brown <zab@versity.com>
This commit is contained in:
@@ -1865,31 +1865,25 @@ TRACE_EVENT(scoutfs_rename,
|
||||
TP_STRUCT__entry(
|
||||
__field(__u64, fsid)
|
||||
__field(__u64, old_dir_ino)
|
||||
__field(char *, old_name)
|
||||
__field(unsigned int, old_name_len)
|
||||
__string(old_name, old_dentry->d_name.name)
|
||||
__field(__u64, new_dir_ino)
|
||||
__field(char *, new_name)
|
||||
__field(unsigned int, new_name_len)
|
||||
__string(new_name, new_dentry->d_name.name)
|
||||
__field(__u64, new_inode_ino)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->fsid = FSID_ARG(sb);
|
||||
__entry->old_dir_ino = scoutfs_ino(old_dir);
|
||||
__entry->old_name = (char *)old_dentry->d_name.name;
|
||||
__entry->old_name_len = old_dentry->d_name.len;
|
||||
__assign_str(old_name, old_dentry->d_name.name)
|
||||
__entry->new_dir_ino = scoutfs_ino(new_dir);
|
||||
__entry->new_name = (char *)new_dentry->d_name.name;
|
||||
__entry->new_name_len = new_dentry->d_name.len;
|
||||
__assign_str(new_name, new_dentry->d_name.name)
|
||||
__entry->new_inode_ino = new_dentry->d_inode ?
|
||||
scoutfs_ino(new_dentry->d_inode) : 0;
|
||||
),
|
||||
|
||||
TP_printk("fsid "FSID_FMT" old_dir_ino %llu old_name %.*s (len %u) new_dir_ino %llu new_name %.*s (len %u) new_inode_ino %llu",
|
||||
__entry->fsid, __entry->old_dir_ino, __entry->old_name_len,
|
||||
__entry->old_name, __entry->old_name_len,
|
||||
__entry->new_dir_ino, __entry->new_name_len,
|
||||
__entry->new_name, __entry->new_name_len,
|
||||
TP_printk("fsid "FSID_FMT" old_dir_ino %llu old_name %s new_dir_ino %llu new_name %s new_inode_ino %llu",
|
||||
__entry->fsid, __entry->old_dir_ino, __get_str(old_name),
|
||||
__entry->new_dir_ino, __get_str(new_name),
|
||||
__entry->new_inode_ino)
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user