__fat_fs_error(sb, 1, fmt , ## args)
 #define fat_fs_error_ratelimit(sb, fmt, args...) \
        __fat_fs_error(sb, __ratelimit(&MSDOS_SB(sb)->ratelimit), fmt , ## args)
+
+#define FAT_PRINTK_PREFIX "%sFAT-fs (%s): "
+#define fat_msg(sb, level, fmt, args...)                               \
+do {                                                                   \
+       printk_index_subsys_emit(FAT_PRINTK_PREFIX, level, fmt, ##args);\
+       _fat_msg(sb, level, fmt, ##args);                               \
+} while (0)
 __printf(3, 4) __cold
-void fat_msg(struct super_block *sb, const char *level, const char *fmt, ...);
+void _fat_msg(struct super_block *sb, const char *level, const char *fmt, ...);
 #define fat_msg_ratelimit(sb, level, fmt, args...)     \
        do {    \
                        if (__ratelimit(&MSDOS_SB(sb)->ratelimit))      \
 
 EXPORT_SYMBOL_GPL(__fat_fs_error);
 
 /**
- * fat_msg() - print preformated FAT specific messages. Every thing what is
- * not fat_fs_error() should be fat_msg().
+ * _fat_msg() - Print a preformatted FAT message based on a superblock.
+ * @sb: A pointer to a &struct super_block
+ * @level: A Kernel printk level constant
+ * @fmt: The printf-style format string to print.
+ *
+ * Everything that is not fat_fs_error() should be fat_msg().
+ *
+ * fat_msg() wraps _fat_msg() for printk indexing.
  */
-void fat_msg(struct super_block *sb, const char *level, const char *fmt, ...)
+void _fat_msg(struct super_block *sb, const char *level, const char *fmt, ...)
 {
        struct va_format vaf;
        va_list args;
        va_start(args, fmt);
        vaf.fmt = fmt;
        vaf.va = &args;
-       printk("%sFAT-fs (%s): %pV\n", level, sb->s_id, &vaf);
+       _printk(FAT_PRINTK_PREFIX "%pV\n", level, sb->s_id, &vaf);
        va_end(args);
 }