]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: move shutdown and remove_bdev callbacks out of experimental features
authorQu Wenruo <wqu@suse.com>
Fri, 27 Feb 2026 03:33:44 +0000 (14:03 +1030)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 Apr 2026 16:56:05 +0000 (18:56 +0200)
These two new callbacks have been introduced in v6.19, and it has been
two releases in v7.1.

During that time we have not yet exposed bugs related that two features,
thus it's time to expose them for end users.

It's especially important to expose remove_bdev callback to end users.

That new callback makes btrfs automatically shutdown or go degraded
when a device is missing (depending on if the fs can maintain RW), which
is affecting end users.

We want some feedback from early adopters.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/Kconfig
fs/btrfs/super.c

index ede184b6eda161e65ee606a679e9f522c8bef6e2..5e75438e0b7382ad7b5d31341679d33e03cbd44b 100644 (file)
@@ -112,8 +112,6 @@ config BTRFS_EXPERIMENTAL
 
          - large folio and block size (> page size) support
 
-         - shutdown ioctl and auto-degradation support
-
          - asynchronous checksum generation for data writes
 
          - remap-tree - logical address remapping tree
index b4d26ca9220a239d0ab53d7abe4399415f1dd446..52137366b79becbf8b484759eb70e89d0b662452 100644 (file)
@@ -2423,7 +2423,6 @@ static long btrfs_free_cached_objects(struct super_block *sb, struct shrink_cont
        return 0;
 }
 
-#ifdef CONFIG_BTRFS_EXPERIMENTAL
 static int btrfs_remove_bdev(struct super_block *sb, struct block_device *bdev)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(sb);
@@ -2481,7 +2480,6 @@ static void btrfs_shutdown(struct super_block *sb)
 
        btrfs_force_shutdown(fs_info);
 }
-#endif
 
 static int btrfs_show_stats(struct seq_file *seq, struct dentry *root)
 {
@@ -2511,10 +2509,8 @@ static const struct super_operations btrfs_super_ops = {
        .nr_cached_objects = btrfs_nr_cached_objects,
        .free_cached_objects = btrfs_free_cached_objects,
        .show_stats     = btrfs_show_stats,
-#ifdef CONFIG_BTRFS_EXPERIMENTAL
        .remove_bdev    = btrfs_remove_bdev,
        .shutdown       = btrfs_shutdown,
-#endif
 };
 
 static const struct file_operations btrfs_ctl_fops = {