func MountVfs(databasePath string, mountPath string, options []string) (*FuseVfs, error) { fuseVfs := FuseVfs{} pathFs := pathfs.NewPathNodeFs(&fuseVfs, nil) conn := nodefs.NewFileSystemConnector(pathFs.Root(), nil) mountOptions := &fuse.MountOptions{Options: options} server, err := fuse.NewServer(conn.RawFS(), mountPath, mountOptions) if err != nil { return nil, fmt.Errorf("could not mount virtual filesystem at '%v': %v", mountPath, err) } store, err := storage.OpenAt(databasePath) if err != nil { return nil, fmt.Errorf("could not open database at '%v': %v", databasePath, err) } fuseVfs.store = store fuseVfs.mountPath = mountPath fuseVfs.server = server return &fuseVfs, nil }
func MountVfs(databasePath string, mountPath string, allowOther bool) (*FuseVfs, error) { fuseVfs := FuseVfs{} pathNodeFs := fuse.NewPathNodeFs(&fuseVfs, nil) conn := fuse.NewFileSystemConnector(pathNodeFs, nil) state := fuse.NewMountState(conn) mountOptions := fuse.MountOptions{AllowOther: allowOther} err := state.Mount(mountPath, &mountOptions) if err != nil { return nil, fmt.Errorf("could not mount virtual filesystem at '%v': %v", mountPath, err) } store, err := storage.OpenAt(databasePath) if err != nil { return nil, fmt.Errorf("could not open database at '%v': %v", databasePath, err) } fuseVfs.store = store fuseVfs.mountPath = mountPath fuseVfs.state = state return &fuseVfs, nil }