Repository navigation
Cache local mounts for filesystem access APIs - #6387
Merged
Merged
Conversation
jsternberg
approved these changes
Dec 3, 2025
tonistiigi
reviewed
Dec 3, 2025
| return cacheutil.ReadDir(ctx, m, newReq) | ||
|
|
||
| var rd []*fstypes.Stat | ||
| err = withMount(m, func(root string) error { |
Member
There was a problem hiding this comment.
why aren't these mounts cached the same way?
Member
Author
There was a problem hiding this comment.
added them in a new commit. originally didn't add them, since they're really only used for building dockerfiles which don't actually use this operation a lot.
In addition to being wasteful, without this, concurrent calls to `Mount` would have lost the previous `target` and so would never have been removed. Signed-off-by: Justin Chadwell <me@jedevc.com>
Previously, each call to `ReadFile`/`ReadDir`/`StatFile` would trigger an entire `Mount`+`Unmount` operation. This could result in terrible performance for repeated filesystem accesses - potentially worse that one `Mount`+`Unmount` per file, if the file is read in ranges. To resolve this, we now directly store the `localMounter` in the gateway, and rely on the fact that repeated calls to it return the same value. These mounts will only be removed when the gateway itself is released. Signed-off-by: Justin Chadwell <me@jedevc.com>
Signed-off-by: Justin Chadwell <me@jedevc.com>
jedevc
force-pushed
the
cache-mounts-over-session
branch
from
December 4, 2025 11:33
28e2d4d to
2485ab7
Compare
tonistiigi
approved these changes
Jan 6, 2026
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.
This PR adds optimizations for the issue described in #3037 (comment):
Without this, any implementation of #3037 that directly accesses the root filesystem (instead of using the content API) is going to encounter serious performance issues. AFAICT, this has just always been an issue? But few frontends actually perform lots of filesystem accesses which would make this appear.
Somewhat inspired by @jsternberg's work in #6262, which would have added this API for gateway containers.