Re: [PATCH RFC 0/8] fs: support freeze/thaw/mark_dead/sync with shared devices
Gao Xiang <[email protected]>
| Newsgroups | org.ozlabs.lists.linux-erofs,org.kernel.vger.linux-block,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-xfs |
|---|---|
| Message-ID | <[email protected]> |
Hi, On 2026/6/2 18:10, Christian Brauner wrote: > Note, this is on the border between RFC/POC and so I haven't pushed this > through testing yet. But I don't want to waste more time on this before > showing it. > > I surveyed various fs implementations because I want the ability to > extend userspace the ability to manage what devices can be onlined in a > centralized way without having to force every fs to care about this. > > I realized that erofs allows sharing block devices with multiple > superblocks. Any freeze, thaw, removal, or sync on those devices will > not be communicated to the superblocks using it and our current > infrastructure is unable to deal with this. > > This attempts to add the ability to go from device number to all the > superblock using that device, iterate through them one-by-one and > perform actions on them. For most fses this is a 1:1 mapping but for > erofs its a 1:many mapping. > > This is not unreasonable infastructure to support in my opinion. I > played around with some ideas for this and I want to send out an RFC to > gather some early input. Yes, just a side note: On the erofs side, since we apply immutable model to each filesystems rather than writable filesystem approaches so inode data (in devices or files) can be shared among multiple different filesystems without any reference count needs for example (in the similar models: any write needs to be COWed using overlayfs for example.), so blob devices are 1:many shared mapping by design. One typical example is that we could convert each OCI tar layer into an erofs blob, and use a metadata-only erofs to index these converted erofs blobs so there is only one filesystem instead of per-layer filesystems (it's called fsmerge in the containerd implementation.), but each converted erofs blob can be shared among different filesystems. Another example is incremental diff updates, the primary device can only contain incremental data and refer to the base image for the remaining data; and base image can be shared too. Thanks, Gao Xiang