@@ -32,3 +32,51 @@ async fn main() {
32
32
debug ! ( "Shutdown filesystem..." ) ;
33
33
exit ( 0 ) ;
34
34
}
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