]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ext4: add tracepoints for shutdown and file system errors
authorTheodore Ts'o <tytso@mit.edu>
Mon, 19 Feb 2018 01:53:23 +0000 (20:53 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 19 Feb 2018 01:53:23 +0000 (20:53 -0500)
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/ioctl.c
fs/ext4/super.c
include/trace/events/ext4.h

index 7e99ad02f1baaca241a2d04c5b01d6d9eba7a12f..4d1b1575f8ac7d1f700c44fbfe659c16dfd3dda9 100644 (file)
@@ -481,6 +481,7 @@ static int ext4_shutdown(struct super_block *sb, unsigned long arg)
                return 0;
 
        ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags);
+       trace_ext4_shutdown(sb, flags);
 
        switch (flags) {
        case EXT4_GOING_FLAGS_DEFAULT:
index 39bf464c35f170c2e77171fc0422997921949883..756f515b762dc5a0cb44d698e708fa170a039e58 100644 (file)
@@ -448,6 +448,7 @@ void __ext4_error(struct super_block *sb, const char *function,
        if (unlikely(ext4_forced_shutdown(EXT4_SB(sb))))
                return;
 
+       trace_ext4_error(sb, function, line);
        if (ext4_error_ratelimit(sb)) {
                va_start(args, fmt);
                vaf.fmt = fmt;
@@ -472,6 +473,7 @@ void __ext4_error_inode(struct inode *inode, const char *function,
        if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
                return;
 
+       trace_ext4_error(inode->i_sb, function, line);
        es->s_last_error_ino = cpu_to_le32(inode->i_ino);
        es->s_last_error_block = cpu_to_le64(block);
        if (ext4_error_ratelimit(inode->i_sb)) {
@@ -507,6 +509,7 @@ void __ext4_error_file(struct file *file, const char *function,
        if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb))))
                return;
 
+       trace_ext4_error(inode->i_sb, function, line);
        es = EXT4_SB(inode->i_sb)->s_es;
        es->s_last_error_ino = cpu_to_le32(inode->i_ino);
        if (ext4_error_ratelimit(inode->i_sb)) {
@@ -719,6 +722,7 @@ __acquires(bitlock)
        if (unlikely(ext4_forced_shutdown(EXT4_SB(sb))))
                return;
 
+       trace_ext4_error(sb, function, line);
        es->s_last_error_ino = cpu_to_le32(ino);
        es->s_last_error_block = cpu_to_le64(block);
        __save_error_info(sb, function, line);
index 4d0e3af4e56174192c3d70a8e698e1b11b89c3b4..0e31eb136c5730d264a3fd7e7b99dcddd793ec14 100644 (file)
@@ -2585,6 +2585,49 @@ DEFINE_GETFSMAP_EVENT(ext4_getfsmap_low_key);
 DEFINE_GETFSMAP_EVENT(ext4_getfsmap_high_key);
 DEFINE_GETFSMAP_EVENT(ext4_getfsmap_mapping);
 
+TRACE_EVENT(ext4_shutdown,
+       TP_PROTO(struct super_block *sb, unsigned long flags),
+
+       TP_ARGS(sb, flags),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field(     unsigned,  flags                   )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = sb->s_dev;
+               __entry->flags  = flags;
+       ),
+
+       TP_printk("dev %d,%d flags %u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->flags)
+);
+
+TRACE_EVENT(ext4_error,
+       TP_PROTO(struct super_block *sb, const char *function,
+                unsigned int line),
+
+       TP_ARGS(sb, function, line),
+
+       TP_STRUCT__entry(
+               __field(        dev_t,  dev                     )
+               __field( const char *,  function                )
+               __field(     unsigned,  line                    )
+       ),
+
+       TP_fast_assign(
+               __entry->dev    = sb->s_dev;
+               __entry->function = function;
+               __entry->line   = line;
+       ),
+
+       TP_printk("dev %d,%d function %s line %u",
+                 MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __entry->function, __entry->line)
+);
+
 #endif /* _TRACE_EXT4_H */
 
 /* This part must be outside protection */