linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).