Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Whiteout portability #18

Open
dmcgowan opened this issue Jan 15, 2016 · 7 comments
Open

Whiteout portability #18

dmcgowan opened this issue Jan 15, 2016 · 7 comments

Comments

@dmcgowan
Copy link
Member

Continuity has the potential to be used to store filesystem "diffs" in the same way tar files are used in Docker today. In order to support these diffs "whiteout" files should have first class support in the manifest. This will allow a portable way to use whiteouts between different copy on write file systems despite where it was originally generated. As a research item, how are whiteout files handled in the tar file diffs used by docker and are there any issues across filesystems (i.e export from AUFS import to overlay).

@AkihiroSuda
Copy link
Member

+1. Any update on this?
Can we implement this as just a single boolean field?

@stevvooe
Copy link
Member

I think one aspect that needs to be considered here is that a diff is very much contextual. So, not only does it require the ability whiteout files, but it should also provide the ability to specify the manifest to which it applies. Without that, it is not safe.

Can we implement this as just a single boolean field?

Do you have an example?

@AkihiroSuda
Copy link
Member

AkihiroSuda commented May 11, 2017

Do you have an example?

message Resource {
    repeated string path = 1;
    ...
    // If whiteout is true and the resource specified by path already exists, 
    // the resource will be removed on apply.}
    // Even when the file mode specified in the manifest and the actual file mode differs (e.g. regular file vs directory), 
    // the resource will be removed.
    bool whiteout = 14;
}

@stevvooe
Copy link
Member

@AkihiroSuda What about the issue with parentage?

I would also think that a whiteout would have no other fields set.

@AkihiroSuda
Copy link
Member

@stevvooe

WDYT about defining digest for directories, and requiring ParentDigest in Manifest?

If we can define digest for directories, it might be also useful for buildkit (moby/buildkit#38 cc @tonistiigi )

@AkihiroSuda
Copy link
Member

I want this feature for mixing up multiple https://github.com/AkihiroSuda/filegrain layers / OCI layers

@stevvooe
Copy link
Member

@AkihiroSuda Rather than propagate a hack, let's define a proper diff format in continuity. Whiteout is part of aufs/overlay. We can define the format to be whatever we want for diff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants