btrfs: disable the seed feature for temp-fsid
authorAnand Jain <anand.jain@oracle.com>
Wed, 4 Oct 2023 15:00:25 +0000 (23:00 +0800)
committerDavid Sterba <dsterba@suse.com>
Thu, 12 Oct 2023 14:44:18 +0000 (16:44 +0200)
A seed device is an integral component of the sprout device, which
functions as a multi-device filesystem. Therefore, temp-fsid feature
is not supported.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index 81b735f4efc1a41e6f28d5cb2e8ffe8612e90f8c..1fdfa9153e30c55d6813a50b7c8e3ff5d74be887 100644 (file)
@@ -571,6 +571,14 @@ static struct btrfs_fs_devices *find_fsid_by_device(
        if (btrfs_super_num_devices(disk_super) != 1)
                return fsid_fs_devices;
 
+       /*
+        * A seed device is an integral component of the sprout device, which
+        * functions as a multi-device filesystem. So, temp-fsid feature is
+        * not supported.
+        */
+       if (btrfs_super_flags(disk_super) & BTRFS_SUPER_FLAG_SEEDING)
+               return fsid_fs_devices;
+
        /* Try to find a fs_devices by matching devt. */
        list_for_each_entry(devt_fs_devices, &fs_uuids, fs_list) {
                struct btrfs_device *device;