[RFC PATCH 0/5] Introduce erofs shared domain
Gao Xiang
hsiangkao at linux.alibaba.com
Thu Sep 1 13:21:31 AEST 2022
Hi Jia,
On Wed, Aug 31, 2022 at 08:31:20PM +0800, Jia Zhu wrote:
> [Kernel Patchset]
> ===============
> Git tree:
> https://github.com/userzj/linux.git zhujia/shared-domain-v1
> Git web:
> https://github.com/userzj/linux/tree/zhujia/shared-domain-v1
>
> [Background]
> ============
> In ondemand read mode, we use individual volume to present an erofs
> mountpoint, cookies to present bootstrap and data blobs.
>
> In which case, since cookies can't be shared between fscache volumes,
> even if the data blobs between different mountpoints are exactly same,
> they can't be shared.
>
> [Introduction]
> ==============
> Here we introduce erofs shared domain to resolve above mentioned case.
> Several erofs filesystems can belong to one domain, and data blobs can
> be shared among these erofs filesystems of same domain.
As we discussed in the previous community meeting, I agree that is useful
and it's the prerequisite of storage/page cache sharing between blocks
among different images (filesystems).
Thanks for your time and effort on this!
>
> [Usage]
> Users could specify 'domain_id' mount option to create or join into a
> domain which reuses the same cookies(blobs).
>
> [Design]
> ========
> 1. Use pseudo mnt to manage domain's lifecycle.
> 2. Use a linked list to maintain & traverse domains.
> 3. Use pseudo sb to create anonymous inode for recording cookie's info
> and manage cookies lifecycle.
>
> [Flow Path]
> ===========
> 1. User specify a new 'domain_id' in mount option.
> 1.1 Traverse domain list, compare domain_id with existing domain.[Miss]
> 1.2 Create a new domain(volume), add it to domain list.
> 1.3 Traverse pseudo sb's inode list, compare cookie name with
> existing cookies.[Miss]
> 1.4 Alloc new anonymous inodes and cookies.
>
> 2. User specify an existing 'domain_id' in mount option and the data
> blob is existed in domain.
> 2.1 Traverse domain list, compare domain_id with existing domain.[Hit]
> 2.2 Reuse the domain and increase its refcnt.
> 2.3 Traverse pseudo sb's inode list, compare cookie name with
> existing cookies.[Hit]
> 2.4 Reuse the cookie and increase its refcnt.
>
> [Test]
> ======
> Git web: (More test cases will be added.)
> https://github.com/userzj/demand-read-cachefilesd/tree/shared-domain
I'd suggest integrating to erofs-utils testcases directly, see
https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/log/?h=experimental-tests-fscache
Thanks,
Gao Xiang
More information about the Linux-erofs
mailing list