Repository navigation
Conversation
mike-sul
force-pushed
the
feat/containerd-install-linkin
branch
from
October 22, 2026 10:06
0a4ae6e to
53034df
Compare
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 10:06
28a8006 to
30173f5
Compare
mike-sul
force-pushed
the
feat/containerd-install-linkin
branch
from
October 22, 2026 10:33
53034df to
f2f8ccf
Compare
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 10:33
30173f5 to
e37fba0
Compare
mike-sul
force-pushed
the
feat/containerd-install-linkin
branch
from
October 22, 2026 10:40
f2f8ccf to
e5d5677
Compare
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 10:40
e37fba0 to
00a2fbd
Compare
mike-sul
force-pushed
the
feat/containerd-install-linkin
branch
from
October 22, 2026 10:56
e5d5677 to
04de0df
Compare
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 11:08
00a2fbd to
13db147
Compare
mike-sul
force-pushed
the
feat/containerd-install-linkin
branch
from
October 22, 2026 11:09
04de0df to
d287b1d
Compare
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 11:09
13db147 to
5f36031
Compare
`check` compared the store and runtime sizes of the missing blobs with the free space of the store root only. With the install into containerd the bytes land on up to four paths: the store, the compose root, the content store (the compressed layers streamed during the install) and the snapshotter root (the unpacked snapshots), which may be on separate filesystems. The new sizing in pkg/compose computes the four terms, adds up the ones that share an st_dev and checks each filesystem against its own free space; `check --format json` reports them in a new `storage` array next to the unchanged fields, so aktualizr-lite can read it. On a `docker load` daemon the single term at the store root stays as before. An image whose manifest or config cannot be read (an interrupted fetch, checked locally) is sized from the layers in the app tree: every layer is counted as streamed and, since its chain ID is unknown, as a new snapshot, so the estimate never drops below the exact one. `check` keeps reporting the missing blob instead of failing. `update init` used the same calculation separately and added the store size to the runtime total; it now uses the shared sizing, counts only the bytes a partly fetched blob still needs in the store, and keeps the per-filesystem needs in the update record. The numbers are reported only: init still does not reject an update on size. The integration tests of the containerd install now cover the `storage` array of `check`, including an app whose image config is missing from the store. The design note gains the storage check: what is sized where, the merge per filesystem and the `storage` array. Assisted-by: Claude Code:claude-fable-5-1 Signed-off-by: Mike Sul <mike.sul@foundries.io>
mike-sul
force-pushed
the
feat/containerd-install-storage
branch
from
October 22, 2026 11:40
5f36031 to
3085c7f
Compare
Collaborator
Author
|
Closing: with the layers hardlinked (#148) and the store and containerd on one filesystem on devices, the existing single size check covers the install. Branch kept for reference. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
checkcompared the size of the missing blobs with the free space of the store root only. With the install into containerd the bytes land on up to four paths, the store, the compose root, the content store and the snapshotter root, which may be separate filesystems.The sizing now computes the four terms, adds up the ones that share a filesystem and checks each against its own free space.
check --format jsonreports them in a newstoragearray for aktualizr-lite, andupdate initkeeps the per-filesystem needs in the update record; the numbers are reported only, init still does not reject on size. An image whose manifest or config cannot be read is sized from the app tree so the estimate never drops below the exact one. On adocker loaddaemon the single term at the store root stays as before.Based on #148. Test:
pkg/compose/storage_test.go, andTestCtrdStorageCheck*in the e2e suite withCONTAINERD_SNAPSHOTTER=true.