Qian Zhang created MESOS-6360:
---------------------------------

             Summary: The handling of whiteout files in provisioner is not 
correct
                 Key: MESOS-6360
                 URL: https://issues.apache.org/jira/browse/MESOS-6360
             Project: Mesos
          Issue Type: Bug
            Reporter: Qian Zhang
            Assignee: Qian Zhang


Currently when user launches a container from a Docker image via universal 
containerizer, we always handle the whiteout files in 
{{ProvisionerProcess::__provision()}} after the Docker image is pulled by 
puller/fetcher and the rootfs for the container is provisioned by backend.

However this is actually not correct, because the way to handle whiteout files 
is backend dependent, that means for different backends, we need to handle 
whiteout files in different ways, e.g.:
* AUFS backend: It seems the AUFS whiteout ({{.wh.<filename/dirname>}} and 
{{.wh..wh..opq}}) is the whiteout standard in Docker (see [this comment | 
https://github.com/docker/docker/blob/v1.12.1/pkg/archive/archive.go#L259:L262] 
for details), so that means after the Docker image is pulled, the whiteout 
files in the store in it are already in aufs format, then we do not need to do 
anything about whiteout file handling because the aufs mount done in 
{{AufsBackendProcess::provision()}} will handle it automatically.
* Overlay backend: Overlayfs has its own whiteout files (see [this doc | 
https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt] for 
details), so we need to convert the aufs whiteout files to overlayfs whiteout 
files before we do the overlay mount in {{OverlayBackendProcess::provision}} 
which will automatically handle the overlayfs whiteout files.
* Copy backend: We need to manually handle the aufs whiteout files when we copy 
each layer in {{CopyBackendProcess::_provision()}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to