f2fs: trace f2fs_ioc_shutdown
authorChao Yu <yuchao0@huawei.com>
Tue, 26 Feb 2019 11:01:15 +0000 (19:01 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 13 Mar 2019 01:59:19 +0000 (18:59 -0700)
This patch supports to trace f2fs_ioc_shutdown.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/file.c
include/trace/events/f2fs.h

index 3a8c8eb0f549c368e890ef42f76cc79fe6dc29e6..807a97ad2430aacc4482e3d9c43da680ffc42328 100644 (file)
@@ -1987,6 +1987,9 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
 out:
        if (in != F2FS_GOING_DOWN_FULLSYNC)
                mnt_drop_write_file(filp);
+
+       trace_f2fs_shutdown(sbi, in, ret);
+
        return ret;
 }
 
index 8a28a2b1be74ddefa56381b43831d14229fa1b1a..0cb746fe6ae1274f13389c5c37db5265a67a0ebe 100644 (file)
@@ -149,6 +149,14 @@ TRACE_DEFINE_ENUM(CP_TRIMMED);
                { CP_SPEC_LOG_NUM,      "log type is 2" },              \
                { CP_RECOVER_DIR,       "dir needs recovery" })
 
+#define show_shutdown_mode(type)                                       \
+       __print_symbolic(type,                                          \
+               { F2FS_GOING_DOWN_FULLSYNC,     "full sync" },          \
+               { F2FS_GOING_DOWN_METASYNC,     "meta sync" },          \
+               { F2FS_GOING_DOWN_NOSYNC,       "no sync" },            \
+               { F2FS_GOING_DOWN_METAFLUSH,    "meta flush" },         \
+               { F2FS_GOING_DOWN_NEED_FSCK,    "need fsck" })
+
 struct f2fs_sb_info;
 struct f2fs_io_info;
 struct extent_info;
@@ -1619,6 +1627,30 @@ DEFINE_EVENT(f2fs_sync_dirty_inodes, f2fs_sync_dirty_inodes_exit,
        TP_ARGS(sb, type, count)
 );
 
+TRACE_EVENT(f2fs_shutdown,
+
+       TP_PROTO(struct f2fs_sb_info *sbi, unsigned int mode, int ret),
+
+       TP_ARGS(sbi, mode, ret),
+
+       TP_STRUCT__entry(
+               __field(dev_t,  dev)
+               __field(unsigned int, mode)
+               __field(int, ret)
+       ),
+
+       TP_fast_assign(
+               __entry->dev = sbi->sb->s_dev;
+               __entry->mode = mode;
+               __entry->ret = ret;
+       ),
+
+       TP_printk("dev = (%d,%d), mode: %s, ret:%d",
+               show_dev(__entry->dev),
+               show_shutdown_mode(__entry->mode),
+               __entry->ret)
+);
+
 #endif /* _TRACE_F2FS_H */
 
  /* This part must be outside protection */