Conversation
a5a3acf to
967f281
Compare
There was a problem hiding this comment.
Pull request overview
Implements POSIX/WASI-like open_at behavior in the in-memory VFS so guests can open existing nodes and create/truncate files (a prerequisite for enabling host-side FS writes), and updates unit/integration tests to reflect the new semantics.
Changes:
- Refactors VFS path resolution and expands
VfsCtxView::open_atto handleCREATE,EXCLUSIVE,DIRECTORY, andTRUNCATE. - Adds extensive unit tests around
open_atbehavior and updates integration test expectations/snapshots. - Makes
Limiter::growtake&self(internally synchronized), simplifying ownership/mutability in component setup.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| host/src/vfs/mod.rs | Implements new open_at semantics, factors path traversal helper, and adds unit tests. |
| host/src/limiter.rs | Changes grow to &self to allow shared use behind a mutex. |
| host/src/component.rs | Adjusts limiter initialization to match the new Limiter::grow signature/usage. |
| host/tests/integration_tests/python/runtime/fs.rs | Updates Python FS integration test to exercise create-on-open behavior. |
| host/tests/integration_tests/evil/fs.rs | Updates large snapshot expectations for new VFS/open behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
d7bd5c4 to
adb81f9
Compare
…et_node_from_start
71e926e to
c750feb
Compare
6fdcfb6 to
efcb604
Compare
host/src/vfs/mod.rs
Outdated
| // Root directory is always at index 0, so we can check if it already | ||
| // exists before pushing a new descriptor | ||
| let res: Resource<VfsDescriptor> = Resource::new_own(1); |
There was a problem hiding this comment.
You cannot assume that. The resource table is used by all kinds of WASI things, e.g. the HTTP implementation too. Now if someone would call for example an HTTP method before using the VFS, this assumption will break. In general, hard-coding IDs like this isn't super robust. I would rather that you create add some Option<Resource<Descriptor>> to VfsState and fill it with the resource resource the first time this method is called.
There was a problem hiding this comment.
Oooof - yeah I do not intend to keep this, this was me playing around with get_directories to see how if it did anything for the BadDescriptor error, but we now know that's not the case.
There was a problem hiding this comment.
also re: creating a Option<Resource<Descriptor>> in VfsState - if we need to do that, I'd like to do so in a follow up; I really want to get this merged!
crepererum
left a comment
There was a problem hiding this comment.
Thank you for pushing this all the way over the finish line 🙏
Closes #336
I followed the specification described here. Given that we will eventually need to test this against the wasi test-suite, any differences between the aforementioned spec and the test-suite will favor the test-suite; so significant changes may need to be made in the future.
Describe your proposed changes here.