cloud-hypervisor / fuse-backend-rs

Rust crate for implementing FUSE backends
Apache License 2.0
129 stars 63 forks source link

Status of async support #188

Open cbrewster opened 3 months ago

cbrewster commented 3 months ago

Hello, I am working on a virtual filesystem using fuse-backend-rs for tvix, a Rust implementation of Nix. Most of the underlying filesystem is built on top of async Rust + tokio, so it would be great to be able to use the AsyncFileSystem trait. I've tried doing this but I've hit some issues figuring out how to drive the filesystem with both FUSE and virtiofs.

For FUSE it looks like there is some code to support driving async FUSE tasks: https://github.com/cloud-hypervisor/fuse-backend-rs/blob/839f5db88abb73b8b3f45be902015d85097adaae/src/transport/fusedev/linux_session.rs#L691-L868

However, this code is behind the async_io feature flag, even though the real feature flag is async-io. The code here also seems to refer to things that have been deleted like use crate::async_util::{AsyncDriver, AsyncExecutor}.

I was wondering if async is something that is supported or if its currently in a broken state and needs some more help to become functional again?

PlamenHristov commented 1 month ago

That one is not a type. It has been disabled intentionally, since there are some compilation issues (from what I remember). Once I have some more time in the coming weeks, I'll open a PR to fix them.