]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: report filesystem shutdown via fserror
authorMiquel Sabaté Solà <mssola@mssola.com>
Mon, 16 Feb 2026 00:28:06 +0000 (01:28 +0100)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 Apr 2026 16:55:59 +0000 (18:55 +0200)
Commit 347b7042fb26 ("Merge patch series "fs: generic file IO error
reporting"") has introduced a common framework for reporting errors to
fsnotify in a standard way.

One of the functions being introduced is fserror_report_shutdown() that,
when combined with the experimental support for shutdown in btrfs, it
means that user-space can also easily detect whenever a btrfs filesystem
has been marked as shutdown.

Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/fs.h

index f2f4d5b747c5b9cf6b8274ec1ae50b8238967bf4..a4758d94b32e948b30476785366e67a1abc2335b 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/sched.h>
 #include <linux/rbtree.h>
 #include <linux/xxhash.h>
+#include <linux/fserror.h>
 #include <uapi/linux/btrfs.h>
 #include <uapi/linux/btrfs_tree.h>
 #include "extent-io-tree.h"
@@ -1199,8 +1200,10 @@ static inline void btrfs_force_shutdown(struct btrfs_fs_info *fs_info)
         * So here we only mark the fs error without flipping it RO.
         */
        WRITE_ONCE(fs_info->fs_error, -EIO);
-       if (!test_and_set_bit(BTRFS_FS_STATE_EMERGENCY_SHUTDOWN, &fs_info->fs_state))
+       if (!test_and_set_bit(BTRFS_FS_STATE_EMERGENCY_SHUTDOWN, &fs_info->fs_state)) {
                btrfs_crit(fs_info, "emergency shutdown");
+               fserror_report_shutdown(fs_info->sb, GFP_KERNEL);
+       }
 }
 
 /*