Loading fs/f2fs/file.c +12 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include "gc.h" #include "trace.h" #include <trace/events/f2fs.h> #include <trace/events/android_fs.h> static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) { Loading Loading @@ -218,6 +219,15 @@ static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end, trace_f2fs_sync_file_enter(inode); if (trace_android_fs_fsync_start_enabled()) { char *path, pathbuf[MAX_TRACE_PATHBUF_LEN]; path = android_fstrace_get_pathname(pathbuf, MAX_TRACE_PATHBUF_LEN, inode); trace_android_fs_fsync_start(inode, current->pid, path, current->comm); } if (S_ISDIR(inode->i_mode)) goto go_write; Loading Loading @@ -323,6 +333,8 @@ static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end, out: trace_f2fs_sync_file_exit(inode, cp_reason, datasync, ret); f2fs_trace_ios(NULL, 1); trace_android_fs_fsync_end(inode, start, end - start); return ret; } Loading include/trace/events/android_fs.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,15 @@ DEFINE_EVENT(android_fs_data_end_template, android_fs_datawrite_end, TP_PROTO(struct inode *inode, loff_t offset, int bytes), TP_ARGS(inode, offset, bytes)); DEFINE_EVENT(android_fs_fsync_start_template, android_fs_fsync_start, TP_PROTO(struct inode *inode, pid_t pid, char *pathname, char *command), TP_ARGS(inode, pid, pathname, command)); DEFINE_EVENT(android_fs_data_end_template, android_fs_fsync_end, TP_PROTO(struct inode *inode, loff_t offset, int bytes), TP_ARGS(inode, offset, bytes)); #endif /* _TRACE_ANDROID_FS_H */ /* This part must be outside protection */ Loading include/trace/events/android_fs_template.h +34 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,38 @@ DECLARE_EVENT_CLASS(android_fs_data_end_template, __entry->offset, __entry->bytes) ); DECLARE_EVENT_CLASS(android_fs_fsync_start_template, TP_PROTO(struct inode *inode, pid_t pid, char *pathname, char *command), TP_ARGS(inode, pid, pathname, command), TP_STRUCT__entry( __string(pathbuf, pathname); __field(loff_t, i_size); __string(cmdline, command); __field(pid_t, pid); __field(ino_t, ino); ), TP_fast_assign( { /* * Replace the spaces in filenames and cmdlines * because this screws up the tooling that parses * the traces. */ __assign_str(pathbuf, pathname); (void)strreplace(__get_str(pathbuf), ' ', '_'); __entry->i_size = i_size_read(inode); __assign_str(cmdline, command); (void)strreplace(__get_str(cmdline), ' ', '_'); __entry->pid = pid; __entry->ino = inode->i_ino; } ), TP_printk("entry_name %s, cmdline %s," " pid %d, i_size %llu, ino %lu", __get_str(pathbuf), __get_str(cmdline), __entry->pid, __entry->i_size, (unsigned long) __entry->ino) ); #endif /* _TRACE_ANDROID_FS_TEMPLATE_H */ Loading
fs/f2fs/file.c +12 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ #include "gc.h" #include "trace.h" #include <trace/events/f2fs.h> #include <trace/events/android_fs.h> static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf) { Loading Loading @@ -218,6 +219,15 @@ static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end, trace_f2fs_sync_file_enter(inode); if (trace_android_fs_fsync_start_enabled()) { char *path, pathbuf[MAX_TRACE_PATHBUF_LEN]; path = android_fstrace_get_pathname(pathbuf, MAX_TRACE_PATHBUF_LEN, inode); trace_android_fs_fsync_start(inode, current->pid, path, current->comm); } if (S_ISDIR(inode->i_mode)) goto go_write; Loading Loading @@ -323,6 +333,8 @@ static int f2fs_do_sync_file(struct file *file, loff_t start, loff_t end, out: trace_f2fs_sync_file_exit(inode, cp_reason, datasync, ret); f2fs_trace_ios(NULL, 1); trace_android_fs_fsync_end(inode, start, end - start); return ret; } Loading
include/trace/events/android_fs.h +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,15 @@ DEFINE_EVENT(android_fs_data_end_template, android_fs_datawrite_end, TP_PROTO(struct inode *inode, loff_t offset, int bytes), TP_ARGS(inode, offset, bytes)); DEFINE_EVENT(android_fs_fsync_start_template, android_fs_fsync_start, TP_PROTO(struct inode *inode, pid_t pid, char *pathname, char *command), TP_ARGS(inode, pid, pathname, command)); DEFINE_EVENT(android_fs_data_end_template, android_fs_fsync_end, TP_PROTO(struct inode *inode, loff_t offset, int bytes), TP_ARGS(inode, offset, bytes)); #endif /* _TRACE_ANDROID_FS_H */ /* This part must be outside protection */ Loading
include/trace/events/android_fs_template.h +34 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,38 @@ DECLARE_EVENT_CLASS(android_fs_data_end_template, __entry->offset, __entry->bytes) ); DECLARE_EVENT_CLASS(android_fs_fsync_start_template, TP_PROTO(struct inode *inode, pid_t pid, char *pathname, char *command), TP_ARGS(inode, pid, pathname, command), TP_STRUCT__entry( __string(pathbuf, pathname); __field(loff_t, i_size); __string(cmdline, command); __field(pid_t, pid); __field(ino_t, ino); ), TP_fast_assign( { /* * Replace the spaces in filenames and cmdlines * because this screws up the tooling that parses * the traces. */ __assign_str(pathbuf, pathname); (void)strreplace(__get_str(pathbuf), ' ', '_'); __entry->i_size = i_size_read(inode); __assign_str(cmdline, command); (void)strreplace(__get_str(cmdline), ' ', '_'); __entry->pid = pid; __entry->ino = inode->i_ino; } ), TP_printk("entry_name %s, cmdline %s," " pid %d, i_size %llu, ino %lu", __get_str(pathbuf), __get_str(cmdline), __entry->pid, __entry->i_size, (unsigned long) __entry->ino) ); #endif /* _TRACE_ANDROID_FS_TEMPLATE_H */