so that the same file path is stored only once in the cache file.
After this change, the cache file measured on the fedora:{38,39,40}
images is in average ~6% smaller.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
use a bloom filter to speed up lookup of digests in a cache file.
The biggest advantage is that it reduces page faults with the mmap'ed
cache file.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
The getString() function was used to extract string values, but it
doesn't handle escaped characters. Replace it with iter.ReadString()
that is slower but handles escaped characters correctly.
Closes: https://github.com/containers/storage/issues/1878
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
reduce memory usage for the process by not loading entirely in memory
any cache file for the layers.
The memory mapped files can be shared among multiple instances of
Podman, as well as not being fully loaded in memory.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
include the chunk length in the generated file location format,
This enhancement is designed to facilitate the use of the cache by external
tools which may not have knowledge of the chunk size.
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Go 1.18's testing package is adamant that it doesn't support the %w
specifier for wrapping errors, which makes sense because it outputs
text rather than producing an error object like fmt.Errorf() does.
Change attempts to use %w to %v.
Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>