public inbox for linux-unionfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Gao Xiang <hsiangkao@linux.alibaba.com>
To: Giuseppe Scrivano <gscrivan@redhat.com>,
	Amir Goldstein <amir73il@gmail.com>
Cc: Alexander Larsson <alexl@redhat.com>,
	Miklos Szeredi <miklos@szeredi.hu>,
	linux-unionfs@vger.kernel.org
Subject: Re: [PATCH v2 00/13] Overlayfs lazy lookup of lowerdata
Date: Fri, 26 May 2023 01:27:46 +0800	[thread overview]
Message-ID: <c16e331e-601a-51b7-f209-2fa73389bd35@linux.alibaba.com> (raw)
In-Reply-To: <87h6s0z6rf.fsf@redhat.com>

Hi Giuseppe,

On 2023/5/26 09:59, Giuseppe Scrivano wrote:
> Hi Amir,
> 
> Amir Goldstein <amir73il@gmail.com> writes:
> 
>> On Thu, May 25, 2023 at 6:21 PM Alexander Larsson <alexl@redhat.com> wrote:
>>>
>>> Something that came up about this in a discussion recently was
>>> multi-layer composefs style images. For example, this may be a useful
>>> approach for multi-layer container images.
>>>
>>> In such a setup you would have one lowerdata layer, but two real
>>> lowerdirs, like lowerdir=A:B::C. In this situation a file in B may
>>> accidentally have the same name as a file on C, causing a redirect
>>> from A to end up in B instead of C.
>>>
>>
>> I was under the impression that the names of the data blobs in C
>> are supposed to be content derived names (hash).
>> Is this not the case or is the concern about hash conflicts?
>>
>>> Would it be possible to have a syntax for redirects that mean "only
>>> lookup in lowerdata layers. For example a double-slash path
>>> //some/file.
>>>
>>
>> Anything is possible if we can define the problem that needs to be solved.
>> In this case, I did not understand why the problem is limited to finding a file
>> by mistake in layer B.
>>
>> If there are several data layers A:B::C:D why wouldn't we have the same
>> problem with a file name collision between C and D?
> 
> the data layer is constructed in a way that files are stored by their
> hash and there is control from the container runtime on how this is
> built and maintained.  So a file name collision would happen only when
> on a hash collision.
> 
> Differently for the other layers we've no control on what files are in
> the image, unless we limit to mount only one EROFS as the first lower
> layer and then all the other lower layers are data layers.
> 
> Given your example above A:B::C:D, if both A and B are EROFS we are
> limited in the files/directories that can be in B.

If my understanding is correct (hopefully), I might ask if it's the
proposal to pass in multiple composefs manifests (rather than one)
all together to overlayfs in one shot?

> 
> e.g. we have A/foo with the following xattrs:
> 
> trusted.overlay.metacopy=""
> trusted.overlay.redirect="/1e/de1743e73b904f16924c04fbd0b7fbfb7e45b8640241e7a08779e8f38fc20d"
> 
> Now what would happen if /1e is present as a file in layer B?  It will
> just cause the lookup for `foo` to fail with EIO since the redirect
> didn't find any file in the layers below.

If my understanding is correct, alternative one way might one do
a merged manifest before mounting? (of course a new manifest is
generated, but I think if it could be acceptable since the whole
merging process is under control?)

My overall thought is that it seems another seperate new
enhancement (if it needs more discussion) and have we might need
to land this lazy lookup first upstream as the first step?
(since our internal overlayfs users benefit this optimization
  as well... I'd like to see it upstream)

If it's a pure use case discussion, ignore me. ;)

Many thanks,
Gao Xiang

> 
> 

  reply	other threads:[~2023-05-25 17:27 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-27 13:05 [PATCH v2 00/13] Overlayfs lazy lookup of lowerdata Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 01/13] ovl: update of dentry revalidate flags after copy up Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 02/13] ovl: use OVL_E() and OVL_E_FLAGS() accessors Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 03/13] ovl: use ovl_numlower() and ovl_lowerstack() accessors Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 04/13] ovl: factor out ovl_free_entry() and ovl_stack_*() helpers Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 05/13] ovl: move ovl_entry into ovl_inode Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 06/13] ovl: deduplicate lowerpath and lowerstack[] Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 07/13] ovl: deduplicate lowerdata " Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 08/13] ovl: remove unneeded goto instructions Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 09/13] ovl: introduce data-only lower layers Amir Goldstein
2023-05-14 19:13   ` Amir Goldstein
2023-05-16 10:18     ` Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 10/13] ovl: implement lookup in data-only layers Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 11/13] ovl: prepare to store lowerdata redirect for lazy lowerdata lookup Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 12/13] ovl: prepare for lazy lookup of lowerdata inode Amir Goldstein
2023-04-27 13:05 ` [PATCH v2 13/13] ovl: implement lazy lookup of lowerdata in data-only layers Amir Goldstein
2023-05-24 17:12 ` [PATCH v2 00/13] Overlayfs lazy lookup of lowerdata Amir Goldstein
2023-05-25 15:21 ` Alexander Larsson
2023-05-25 16:03   ` Amir Goldstein
2023-05-25 16:59     ` Giuseppe Scrivano
2023-05-25 17:27       ` Gao Xiang [this message]
2023-05-25 18:03         ` Gao Xiang
2023-05-26  5:12       ` Amir Goldstein
2023-05-26 11:36         ` Alexander Larsson
2023-05-26 18:27           ` Gao Xiang
2023-05-27 14:04             ` Amir Goldstein
2023-05-27 14:30               ` Gao Xiang
2023-05-29  7:22               ` Alexander Larsson
2023-05-30 14:08               ` Miklos Szeredi
2023-05-30 14:15                 ` Amir Goldstein
2023-06-09  7:24                   ` Miklos Szeredi
2023-06-09 10:54                     ` Amir Goldstein
2023-06-09 13:42                     ` Amir Goldstein
2023-06-09 13:52                       ` Miklos Szeredi
2023-06-17 17:40                         ` Amir Goldstein
2023-06-17 19:19                           ` Miklos Szeredi
2023-05-30 16:19                 ` Christian Brauner
2023-06-09  8:17                   ` Alexander Larsson
2023-06-09  9:44                     ` 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=c16e331e-601a-51b7-f209-2fa73389bd35@linux.alibaba.com \
    --to=hsiangkao@linux.alibaba.com \
    --cc=alexl@redhat.com \
    --cc=amir73il@gmail.com \
    --cc=gscrivan@redhat.com \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    /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