Skip to content

Commit f0c64a9

Browse files
authored
Merge pull request containerd#9859 from DataDog/jb/zstd-support
mediatypes: support zstd compression
2 parents dc0f1ae + d651cb7 commit f0c64a9

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

core/images/mediatypes.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const (
3434
MediaTypeDockerSchema2Layer = "application/vnd.docker.image.rootfs.diff.tar"
3535
MediaTypeDockerSchema2LayerForeign = "application/vnd.docker.image.rootfs.foreign.diff.tar"
3636
MediaTypeDockerSchema2LayerGzip = "application/vnd.docker.image.rootfs.diff.tar.gzip"
37+
MediaTypeDockerSchema2LayerZstd = "application/vnd.docker.image.rootfs.diff.tar.zstd"
3738
MediaTypeDockerSchema2LayerForeignGzip = "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip"
3839
MediaTypeDockerSchema2Config = "application/vnd.docker.container.image.v1+json"
3940
MediaTypeDockerSchema2Manifest = "application/vnd.docker.distribution.manifest.v2+json"
@@ -81,6 +82,12 @@ func DiffCompression(ctx context.Context, mediaType string) (string, error) {
8182
return "", nil
8283
}
8384
return "gzip", nil
85+
case MediaTypeDockerSchema2LayerZstd:
86+
if len(ext) > 0 {
87+
// Type is wrapped
88+
return "", nil
89+
}
90+
return "zstd", nil
8491
case ocispec.MediaTypeImageLayer, ocispec.MediaTypeImageLayerNonDistributable: //nolint:staticcheck // Non-distributable layers are deprecated
8592
if len(ext) > 0 {
8693
switch ext[len(ext)-1] {
@@ -132,7 +139,7 @@ func IsLayerType(mt string) bool {
132139
// Parse Docker media types, strip off any + suffixes first
133140
switch base, _ := parseMediaTypes(mt); base {
134141
case MediaTypeDockerSchema2Layer, MediaTypeDockerSchema2LayerGzip,
135-
MediaTypeDockerSchema2LayerForeign, MediaTypeDockerSchema2LayerForeignGzip:
142+
MediaTypeDockerSchema2LayerForeign, MediaTypeDockerSchema2LayerForeignGzip, MediaTypeDockerSchema2LayerZstd:
136143
return true
137144
}
138145
return false

0 commit comments

Comments
 (0)