One possibility is to use the 9P client of the kernel and implements a 9P 
server in Go - there are a few 9P libraries for Go around.
I doubt it will be more efficient than FUSE though, and btw FUSE is largely 
based on the ideas promoted by 9P.

Another possibility is to use the ndb client of the kernel and implements a 
ndb server in Go. See Axel's ndb package at https://github.com/Merovius/nbd
Now ndb exposes a block device, not a filesystem. I think I would be quite 
difficult to emulate the format of one the filesystems supported by the 
kernel and implements it in this Go ndb server.

Regards,
Didier.




Le mercredi 25 novembre 2020 à 09:38:02 UTC+1, ChrisLu a écrit :

> Hi, Gophers (who are also good in C),
>
> Currently I am using FUSE to mount and write to remote storage. 
> The library I am using is Basil Fuse. The performance is good as far as 
> FUSE can go.
>
> User -> file.write() -> Linux Kernel -> Virtual File System -> libfuse -> 
> FUSE -> DFS Client(in Go) -> Remote Storage
>
> However, I am researching how to write directly through linux virtual file 
> system, skipping FUSE layer. Seems all similar libraries are in C. Is this 
> even possible in Go?
>
> User -> file.write() -> Linux Kernel -> Virtual File System -> DFS 
> Client(in Go) -> Remote Storage
>
> Thanks! 
>
> Chris
> https://github.com/chrislusf/seaweedfs
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/835bbe35-6845-4d44-98b9-83a07c86b79bn%40googlegroups.com.

Reply via email to