btrfs: move shutdown and remove_bdev callbacks out of experimental features

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>
This commit is contained in:
Qu Wenruo 2026-02-27 14:03:44 +10:30 committed by David Sterba
parent 973e57c726
commit 304076527c
2 changed files with 0 additions and 6 deletions

View 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

View 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 = {