From: David Sterba <dsterba@suse.cz>
To: Anand Jain <anand.jain@oracle.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] btrfs: reject device with CHANGING_FSID_V2
Date: Thu, 17 Aug 2023 14:04:24 +0200 [thread overview]
Message-ID: <20230817120424.GK2420@twin.jikos.cz> (raw)
In-Reply-To: <02d59bdd7a8b778deb17e300354558498db59376.1692178060.git.anand.jain@oracle.com>
On Wed, Aug 16, 2023 at 08:30:40PM +0800, Anand Jain wrote:
> The BTRFS_SUPER_FLAG_CHANGING_FSID_V2 flag indicates a transient state
> where the device in the userspace btrfstune -m|-M operation failed to
> complete changing the fsid.
>
> This flag makes the kernel to automatically determine the other
> partner devices to which a given device can be associated, based on the
> fsid, metadata_uuid and generation values.
>
> btrfstune -m|M feature is especially useful in virtual cloud setups, where
> compute instances (disk images) are quickly copied, fsid changed, and
> launched. Given numerous disk images with the same metadata_uuid but
> different fsid, there's no clear way a device can be correctly assembled
> with the proper partners when the CHANGING_FSID_V2 flag is set. So, the
> disk could be assembled incorrectly, as in the example below:
>
> Before this patch:
>
> Consider the following two filesystems:
> /dev/loop[2-3] are raw copies of /dev/loop[0-1] and the btrsftune -m
> operation fails.
>
> In this scenario, as the /dev/loop0's fsid change is interrupted, and the
> CHANGING_FSID_V2 flag is set as shown below.
>
> $ p="device|devid|^metadata_uuid|^fsid|^incom|^generation|^flags"
>
> $ btrfs inspect dump-super /dev/loop0 | egrep '$p'
> superblock: bytenr=65536, device=/dev/loop0
> flags 0x1000000001
> fsid 7d4b4b93-2b27-4432-b4e4-4be1fbccbd45
> metadata_uuid bb040a9f-233a-4de2-ad84-49aa5a28059b
> generation 9
> num_devices 2
> incompat_flags 0x741
> dev_item.devid 1
>
> $ btrfs inspect dump-super /dev/loop1 | egrep '$p'
> superblock: bytenr=65536, device=/dev/loop1
> flags 0x1
> fsid 11d2af4d-1b71-45a9-83f6-f2100766939d
> metadata_uuid bb040a9f-233a-4de2-ad84-49aa5a28059b
> generation 10
> num_devices 2
> incompat_flags 0x741
> dev_item.devid 2
>
> $ btrfs inspect dump-super /dev/loop2 | egrep '$p'
> superblock: bytenr=65536, device=/dev/loop2
> flags 0x1
> fsid 7d4b4b93-2b27-4432-b4e4-4be1fbccbd45
> metadata_uuid bb040a9f-233a-4de2-ad84-49aa5a28059b
> generation 8
> num_devices 2
> incompat_flags 0x741
> dev_item.devid 1
>
> $ btrfs inspect dump-super /dev/loop3 | egrep '$p'
> superblock: bytenr=65536, device=/dev/loop3
> flags 0x1
> fsid 7d4b4b93-2b27-4432-b4e4-4be1fbccbd45
> metadata_uuid bb040a9f-233a-4de2-ad84-49aa5a28059b
> generation 8
> num_devices 2
> incompat_flags 0x741
> dev_item.devid 2
>
>
> It is normal that some devices aren't instantly discovered during
> system boot or iSCSI discovery. The controlled scan below demonstrates
> this.
>
> $ btrfs device scan --forget
> $ btrfs device scan /dev/loop0
> Scanning for btrfs filesystems on '/dev/loop0'
> $ mount /dev/loop3 /btrfs
> $ btrfs filesystem show -m
> Label: none uuid: 7d4b4b93-2b27-4432-b4e4-4be1fbccbd45
> Total devices 2 FS bytes used 144.00KiB
> devid 1 size 300.00MiB used 48.00MiB path /dev/loop0
> devid 2 size 300.00MiB used 40.00MiB path /dev/loop3
>
> /dev/loop0 and /dev/loop3 are incorrectly partnered.
>
> This kernel patch removes functions and code connected to the
> CHANGING_FSID_V2 flag.
I didn't have a closer look but it seems you're removing all the logic
to make the metadata uuid robust and usable in case of interrupted
conversion, while finding another case where it does not work as you
expect. With this it would be change in behaviour, we need to check
the original use case. IIRC as the metadata uuid change is lightweight
we want to try harder to deal with the easy errors instead of rejecting
the filesystem mount.
next prev parent reply other threads:[~2023-08-17 12:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-16 12:30 [PATCH] btrfs: reject device with CHANGING_FSID_V2 Anand Jain
2023-08-17 12:04 ` David Sterba [this message]
2023-08-17 17:19 ` Anand Jain
2023-08-18 0:21 ` Qu Wenruo
2023-08-18 8:27 ` Anand Jain
2023-09-18 22:44 ` David Sterba
2023-09-19 11:40 ` Anand Jain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230817120424.GK2420@twin.jikos.cz \
--to=dsterba@suse.cz \
--cc=anand.jain@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox