Open edsantiago opened 1 week ago
@edsantiago Thanks for tracking this down! A detailed reproducer is indeed unnecessary.
After https://github.com/containers/storage/pull/2118 , we now default to not falling back if a chunked pull fails.
Here, c/storage/pkg/chunked.GetDiffer
finds a valid chunked input, and returns a success, regardless of the current graph driver.
Afterwards, c/image calls PrepareStagedLayer
; that fails with the VFS driver with ErrNotSupported
because it does not implement DriverWithDiffer
. And because ErrNotSupported
is not ErrFallbackToOrdinaryLayerDownload
, this is a hard failure.
One way to handle this would be to return ErrFallbackToOrdinaryLayerDownload
from GetDiffer
if the graph driver does not support chunked pulls.
@giuseppe How will the planned options to always enforce composefs affect this? Would we just fail in GetDiffer
? Or, maybe, should storage.GetStore
immediately fail with an invalid composefs + graph driver combination?
https://github.com/containers/image/pull/2607 should improve the error message, but it does not actually allow things to work.
Confirmed by manual testing that this is indeed the code path from https://github.com/containers/image/pull/2607 .
RFC fix, at least to start the conversation: https://github.com/containers/storage/pull/2140 .
WHEW! It's vfs:
This is a highly hacked podman with all of @mtrmac's changes to c-s c-i c-c c. Full patch history available on request, but I suspect it will not be needed so I'm saving myself that time.