Skip to content

Cleanup async interface and map 1:1 with Filesystem trait#663

Closed
mhambre wants to merge 2 commits intocberner:masterfrom
mhambre:feat/async-expansion
Closed

Cleanup async interface and map 1:1 with Filesystem trait#663
mhambre wants to merge 2 commits intocberner:masterfrom
mhambre:feat/async-expansion

Conversation

@mhambre
Copy link
Copy Markdown

@mhambre mhambre commented Mar 14, 2026

This PR takes the experimental async interface and cleans it up such that expansion can start to easily add new methods by mapping 1:1 with the Filesystem trait. This adds a call_fut! macro that sends the task to the tokio runtime, and automatically clones the request and a reference to the runtime to reduce boilerplate.

This is made with the goal in mind of next steps being expansion to include more mutation oriented operations, and orienting the async capabilities in a way that even further down the line this can be backed with AsyncFD, setting up an Async-oriented EventLoop, etc for full end-to-end async.

If this is accepted I can also take the initiative of starting to add the other missing FUSE methods to the async trait and building up a simple_async.rs example FS + tests.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2343ac1881

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@mhambre mhambre force-pushed the feat/async-expansion branch from 076c96c to 8d8897e Compare March 17, 2026 00:17
@mhambre
Copy link
Copy Markdown
Author

mhambre commented Mar 17, 2026

#164

@mhambre
Copy link
Copy Markdown
Author

mhambre commented Mar 17, 2026

@cberner Any thoughts on this when you get some time would be appreciated :)

@cberner
Copy link
Copy Markdown
Owner

cberner commented Mar 17, 2026

I don't like this interface for async. One of my goals with the experimental async interface is to remove the need for Reply objects

@cberner
Copy link
Copy Markdown
Owner

cberner commented Mar 17, 2026

I don't like this interface. I intentionally removed the Reply objects in the experimental async interface

@mhambre
Copy link
Copy Markdown
Author

mhambre commented Mar 17, 2026

I don't like this interface. I intentionally removed the Reply objects in the experimental async interface

I appreciate your response and clarification. What would your thoughts be then on biting the bullet and decoupling it from the current Filesystem trait pretty much entirely (since as it stands, regardless of where it is Reply, will be blocking) and moving to the Result based approach for AsyncFD. I can also keep it the more minimal interface you were going for in the initial implementation. I know this is a bit of a step away from libfuse and a significant addition, but if we add async, I agree with the sentiment of being more rustic with Results since we aren't dealing with the same limitations. I'd obviously keep it as tightly scoped as possible for the initial PoC.

@cberner
Copy link
Copy Markdown
Owner

cberner commented Mar 18, 2026

Ya, that sounds like it's aligned with the direction I want to take it. However, that's going to be a very large change, and I don't have time to review that right now. I'd encourage you to make a fork instead, and then circle back once you have it working and benchmark the performance

@cberner cberner closed this Mar 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants