Skip to content

Commit a55bff8

Browse files
committed
Add description of gvfs-fuse filesystem struct
1 parent 4fe58f2 commit a55bff8

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

clients/filesystem-fuse/src/main.rs

+48
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,51 @@ async fn main() {
3232
debug!("Shutdown filesystem...");
3333
exit(0);
3434
}
35+
36+
async fn create_gvfs_fuse_filesystem() {
37+
// Gvfs-fuse filesystem structure:
38+
// FuseApiHandle
39+
// ├─ SimpleFileSystem (RawFileSystem)
40+
// │ └─ FileSystemLog (PathFileSystem)
41+
// ├─ GravitinoComposedFileSystem (PathFileSystem)
42+
// │ ├─ GravitinoFilesetFileSystem (PathFileSystem)
43+
// │ │ └─ OpenDALFileSystem (PathFileSystem)
44+
// │ │ └─ S3FileSystem (PathFileSystem)
45+
// │ ├─ GravitinoFilesetFileSystem (PathFileSystem)
46+
// │ │ └─ OpenDALFileSystem (PathFileSystem)
47+
// │ │ └─ HDFSFileSystem (PathFileSystem)
48+
// │ ├─ GravitinoFilesetFileSystem (PathFileSystem)
49+
// │ │ └─ NasFileSystem (PathFileSystem)
50+
// │ │ └─ JuiceFileSystem (PathFileSystem)
51+
// │ ├─ GravitinoFilesetFileSystem (PathFileSystem)
52+
// │ │ └─ XXXFileSystem (PathFileSystem)
53+
//
54+
// `SimpleFileSystem` is a low-level filesystem designed to communicate with FUSE APIs.
55+
// It manages file and directory relationships, as well as file mappings.
56+
// It delegates file operations to the PathFileSystem
57+
//
58+
// `FileSystemLog` is a decorator that adds extra debug logging functionality to file system APIs.
59+
// Similar implementations include permissions, caching, and metrics.
60+
//
61+
// `GravitinoComposeFileSystem` is a composite file system that can combine multiple `GravitinoFilesetFileSystem`.
62+
// It translates the part of catalog and schema of fileset path to a signal GravitinoFilesetFileSystem path.
63+
// If the user only mounts a fileset, this layer is not present. There will only be one below layer.
64+
//
65+
// `GravitinoFilesetFileSystem` is a file system that can access a fileset.It translates the fileset path to the real storage path.
66+
// and delegate the operation to the real storage.
67+
//
68+
// `OpenDALFileSystem` is a file system that use the OpenDAL to access real storage.
69+
// it can assess the S3, HDFS, gcs, azblob and other storage.
70+
//
71+
// `S3FileSystem` is a file system that use to access S3 storage.
72+
//
73+
// `HDFSFileSystem` is a file system that use to access HDFS storage.
74+
75+
// `NasFileSystem` is a filesystem that uses a locally accessible path mounted by NAS tools, such as JuiceFS.
76+
77+
// `JuiceFileSystem` is a file system that use to manage juice mount and access JuiceFS storage.
78+
79+
// `XXXXFileSystem` is a file system that use implement access file by your extent.
80+
81+
todo!("Implement the createGvfsFuseFileSystem function");
82+
}

0 commit comments

Comments
 (0)