]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: enable shutdown ioctl for non-experimental builds
authorQu Wenruo <wqu@suse.com>
Tue, 14 Apr 2026 02:21:15 +0000 (11:51 +0930)
committerDavid Sterba <dsterba@suse.com>
Tue, 21 Apr 2026 02:01:31 +0000 (04:01 +0200)
Although commit 304076527c38 ("btrfs: move shutdown and remove_bdev
callbacks out of experimental features") tries to move both shutdown and
remove_bdev out of experimental features, that commit has only addressed
the super block operation callback, the ioctl one is left untouched.

Fix that missing aspect by also moving shutdown ioctl out of
experimental features.

Since we're here, also add unknown flag detection to reject any
unsupported shutdown flags.

Fixes: 304076527c38 ("btrfs: move shutdown and remove_bdev callbacks out of experimental features")
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/ioctl.c

index b2e447f5005c167e5fb27251a8016d39b0fb5f72..a39460bf68a778037bfb024fbd8b8fd5e9d49ba6 100644 (file)
@@ -5102,7 +5102,6 @@ static int btrfs_ioctl_subvol_sync(struct btrfs_fs_info *fs_info, void __user *a
        return 0;
 }
 
-#ifdef CONFIG_BTRFS_EXPERIMENTAL
 static int btrfs_ioctl_shutdown(struct btrfs_fs_info *fs_info, unsigned long arg)
 {
        int ret = 0;
@@ -5134,10 +5133,12 @@ static int btrfs_ioctl_shutdown(struct btrfs_fs_info *fs_info, unsigned long arg
        case BTRFS_SHUTDOWN_FLAGS_NOLOGFLUSH:
                btrfs_force_shutdown(fs_info);
                break;
+       default:
+               ret = -EINVAL;
+               break;
        }
        return ret;
 }
-#endif
 
 long btrfs_ioctl(struct file *file, unsigned int
                cmd, unsigned long arg)
@@ -5294,10 +5295,8 @@ long btrfs_ioctl(struct file *file, unsigned int
 #endif
        case BTRFS_IOC_SUBVOL_SYNC_WAIT:
                return btrfs_ioctl_subvol_sync(fs_info, argp);
-#ifdef CONFIG_BTRFS_EXPERIMENTAL
        case BTRFS_IOC_SHUTDOWN:
                return btrfs_ioctl_shutdown(fs_info, arg);
-#endif
        }
 
        return -ENOTTY;