Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ext4: add tracepoints for shutdown and file system errors

Signed-off-by: Theodore Ts'o <tytso@mit.edu>

+48
+1
fs/ext4/ioctl.c
··· 481 481 return 0; 482 482 483 483 ext4_msg(sb, KERN_ALERT, "shut down requested (%d)", flags); 484 + trace_ext4_shutdown(sb, flags); 484 485 485 486 switch (flags) { 486 487 case EXT4_GOING_FLAGS_DEFAULT:
+4
fs/ext4/super.c
··· 448 448 if (unlikely(ext4_forced_shutdown(EXT4_SB(sb)))) 449 449 return; 450 450 451 + trace_ext4_error(sb, function, line); 451 452 if (ext4_error_ratelimit(sb)) { 452 453 va_start(args, fmt); 453 454 vaf.fmt = fmt; ··· 473 472 if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) 474 473 return; 475 474 475 + trace_ext4_error(inode->i_sb, function, line); 476 476 es->s_last_error_ino = cpu_to_le32(inode->i_ino); 477 477 es->s_last_error_block = cpu_to_le64(block); 478 478 if (ext4_error_ratelimit(inode->i_sb)) { ··· 509 507 if (unlikely(ext4_forced_shutdown(EXT4_SB(inode->i_sb)))) 510 508 return; 511 509 510 + trace_ext4_error(inode->i_sb, function, line); 512 511 es = EXT4_SB(inode->i_sb)->s_es; 513 512 es->s_last_error_ino = cpu_to_le32(inode->i_ino); 514 513 if (ext4_error_ratelimit(inode->i_sb)) { ··· 722 719 if (unlikely(ext4_forced_shutdown(EXT4_SB(sb)))) 723 720 return; 724 721 722 + trace_ext4_error(sb, function, line); 725 723 es->s_last_error_ino = cpu_to_le32(ino); 726 724 es->s_last_error_block = cpu_to_le64(block); 727 725 __save_error_info(sb, function, line);
+43
include/trace/events/ext4.h
··· 2585 2585 DEFINE_GETFSMAP_EVENT(ext4_getfsmap_high_key); 2586 2586 DEFINE_GETFSMAP_EVENT(ext4_getfsmap_mapping); 2587 2587 2588 + TRACE_EVENT(ext4_shutdown, 2589 + TP_PROTO(struct super_block *sb, unsigned long flags), 2590 + 2591 + TP_ARGS(sb, flags), 2592 + 2593 + TP_STRUCT__entry( 2594 + __field( dev_t, dev ) 2595 + __field( unsigned, flags ) 2596 + ), 2597 + 2598 + TP_fast_assign( 2599 + __entry->dev = sb->s_dev; 2600 + __entry->flags = flags; 2601 + ), 2602 + 2603 + TP_printk("dev %d,%d flags %u", 2604 + MAJOR(__entry->dev), MINOR(__entry->dev), 2605 + __entry->flags) 2606 + ); 2607 + 2608 + TRACE_EVENT(ext4_error, 2609 + TP_PROTO(struct super_block *sb, const char *function, 2610 + unsigned int line), 2611 + 2612 + TP_ARGS(sb, function, line), 2613 + 2614 + TP_STRUCT__entry( 2615 + __field( dev_t, dev ) 2616 + __field( const char *, function ) 2617 + __field( unsigned, line ) 2618 + ), 2619 + 2620 + TP_fast_assign( 2621 + __entry->dev = sb->s_dev; 2622 + __entry->function = function; 2623 + __entry->line = line; 2624 + ), 2625 + 2626 + TP_printk("dev %d,%d function %s line %u", 2627 + MAJOR(__entry->dev), MINOR(__entry->dev), 2628 + __entry->function, __entry->line) 2629 + ); 2630 + 2588 2631 #endif /* _TRACE_EXT4_H */ 2589 2632 2590 2633 /* This part must be outside protection */