Crate fuse3_opendal

source ·
Expand description

fuse3_opendal is an fuse3 implementation using opendal.

This crate can help you to access ANY storage services by mounting locally by FUSE.

use fuse3::path::Session;
use fuse3::MountOptions;
use fuse3::Result;
use fuse3_opendal::Filesystem;
use opendal::services::Memory;
use opendal::Operator;

#[tokio::test]
async fn test() -> Result<()> {
    // Build opendal Operator.
    let op = Operator::new(Memory::default())?.finish();

    // Build fuse3 file system.
    let fs = Filesystem::new(op, 1000, 1000);

    // Configure mount options.
    let mount_options = MountOptions::default();

    // Start a fuse3 session and mount it.
    let mut mount_handle = Session::new(mount_options)
        .mount_with_unprivileged(fs, "/tmp/mount_test")
        .await?;
    let handle = &mut mount_handle;

    tokio::select! {
        res = handle => res?,
        _ = tokio::signal::ctrl_c() => {
            mount_handle.unmount().await?
        }
    }

    Ok(())
}

Structs§

  • Filesystem represents the filesystem that implements [PathFilesystem] by opendal.