-
Notifications
You must be signed in to change notification settings - Fork 261
Description
See coreos/rpm-ostree#5386 (comment)
The default overlay driver is a "layer store", it doesn't identify individual files. When zstd:chunked is enabled, files can be identified by their individual sha256 digest and also deduplicated across layers.
However, in neither case is the underlying storage model exposed to higher levels at all to what can be reached from podman|buildah
build or really even Go clients AFAIK.
An object store as a socket API
Imagine that inside a default podman build
there was something like a socket /run/objectstore
that speaks DBus|varlink|whatever and has just two core primitives:
(queue bikeshed for $digest; fsverity or full-file sha256|sha512 etc)
- Put an object by $digest (any space limitations would be restricted based on any limits in place for writing to the layer)
- Link an object named by $digest into a specific place in the target filesystem tree (and gracefully returns an ENOENT equivalent if the object isn't present)
The latter operation is the key one - it would operate underneath the overlayfs mount, and that would allow avoiding copying and re-checksumming.