From: Qu Wenruo <wqu@suse.com>
To: Christian Brauner <brauner@kernel.org>,
Anand Jain <anand.jain@oracle.com>
Cc: Josef Bacik <josef@toxicpanda.com>,
Qu Wenruo <quwenruo.btrfs@gmx.com>, Qu Wenruo <wqu@suse.de>,
linux-btrfs <linux-btrfs@vger.kernel.org>,
David Sterba <dsterba@suse.com>,
"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>
Subject: Re: Should seed device be allowed to be mounted multiple times?
Date: Wed, 6 Aug 2025 07:50:06 +0930 [thread overview]
Message-ID: <6a85c9c0-36ac-4a69-a0d5-4bc5846cd5c7@suse.com> (raw)
In-Reply-To: <20250805-tragweite-keule-31547b419bc3@brauner>
在 2025/8/5 22:13, Christian Brauner 写道:
> On Tue, Aug 05, 2025 at 10:22:49AM +0930, Qu Wenruo wrote:
>>
>>
>> 在 2025/8/5 10:06, Anand Jain 写道:
>>>
>>>
>>>>> Thanks for the comments.
>>>>> Our seed block device use-case doesn’t fall under the kind of risk that
>>>>> BLK_OPEN_RESTRICT_WRITES is meant to guard against—it’s not a typical
>>>>> multi-FS RW setup. Seed devices are readonly, so it might be reasonable
>>>>> to handle this at the block layer—or maybe it’s not feasible.
>>>
>>>
>>>> Read-only doesn't prevent the device from being removed suddenly.
>>>
>>> I don't see how this is related to the BLK_OPEN_RESTRICT_WRITES flag.
>>> Can you clarify?
>>
>> It's not related to that flag, I'm talking about the fs_bdev_mark_dead(),
>> and the remaining 3 callbacks.
>>
>> Those call backs are all depending on the bdev holder to grab a super block.
>>
>> Thus a block device should and can not have multiple super blocks.
>
> I'm pretty sure you can't just break the seed device sharing use-case
> without causing a lot of regressions...
It's not that widely affecting, we can still share the same seed device
for all different sprout fses, just only one of them can be mounted at
the same time.
And even with that limitation, it won't affect most (or any) real world
use cases.
Even the most complex case like using seed devices as rootfs, and we
want to sprout the rootfs again, just remove the seed device from the
current rootfs, then one can mount the seed device again.
>
> If you know what the seed devices are than you can change the code to
> simply use the btrfs filesystem type as the holder without any holder
> operations but just for seed devices. Then seed devices can be opened
> by/shared with any btrfs filesystem.
But we will lose all the bdev related events.
We still want to sync/freeze/thaw the real sprouted fs in the end.
>
> The only restriction is that you cannot use a device as a seed device
> that another btrfs filesystem uses as a non-seed device because then it
> will be fully owned by the other btrfs filesystem. But Josef tells me
> you can only use it as a seed device anyway.
>
> IOW, if you have a concept of shareable devices between different btrfs
> filesystems then it's fine to reflect that in the code. If really needed
> you can later add custom block holder ops for seed devices so you can
> e.g., iterate through all filesystems that share the device.
Sure it's possible, with a lot of extra code looking up where the seed
device belongs, and all the extra bdev event proxy.
But I'd say, the seed device specification is not well specified in the
very beginning, thus it results a lot of "creative" but not practical
use cases.
Yes, this will result some regression, but I'd prefer a more sounding
and simpler logic for the whole seed device, with minimal impact to the
most common existing use cases.
Thanks,
Qu
next prev parent reply other threads:[~2025-08-05 22:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <aef03da8-853a-4c9f-b77b-30cf050ec1a5@suse.de>
[not found] ` <4cdf6f5c-41e8-4943-9c8b-794e04aa47c5@suse.de>
[not found] ` <8daff5f7-c8e8-4e74-a56c-3d161d3bda1f@oracle.com>
[not found] ` <bddc796f-a0e0-4ab5-ab90-8cd10e20db23@suse.de>
[not found] ` <184c750a-ce86-4e08-9722-7aa35163c940@oracle.com>
[not found] ` <bc8ecf02-b1a1-4bc0-80e3-162e334db94a@gmx.com>
[not found] ` <a3db2131-37a8-469f-a20d-dc83b2b14475@oracle.com>
2025-08-05 0:52 ` Should seed device be allowed to be mounted multiple times? Qu Wenruo
2025-08-05 12:43 ` Christian Brauner
2025-08-05 22:20 ` Qu Wenruo [this message]
2025-08-08 14:14 ` Christian Brauner
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=6a85c9c0-36ac-4a69-a0d5-4bc5846cd5c7@suse.com \
--to=wqu@suse.com \
--cc=anand.jain@oracle.com \
--cc=brauner@kernel.org \
--cc=dsterba@suse.com \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=quwenruo.btrfs@gmx.com \
--cc=wqu@suse.de \
/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;
as well as URLs for NNTP newsgroup(s).