This repository was archived by the owner on Feb 8, 2023. It is now read-only.
This repository was archived by the owner on Feb 8, 2023. It is now read-only.
FUSE interface design #131
Open
Description
As I am getting finally to split the fuse out of the main go-ipfs daemon here are my thoughts about the design and layout.
I think that using one mount instead of 2 (and possibly 3) is beneficial and that is why I propose following layout:
/mfs/
- mutable file system root/mfs/ipfs/
- ipfs root/mfs/ipns/
- ipns root/mfs/ipns/local
- symlink for local name which is mutable
/mfs/.pins/
- pined - only direct and roots of recursive - maybe symlinks that could be named (and act as labels - connected with Build-in notes for pins. kubo#2544) - top level is mutable but only allows symlinks to/mfs/ipfs/Qm...AAA
or/ipfs/Qm...AAA
/mfs/.local/
- locally available blocks/mfs/...
- user files and everything else
/ipfs/ -> /mfs/ipfs/
- symlink/ipns/ -> /mfs/ipns
- symlink
Only problem I see is that we won't be able to handle cp
command so it doesn't perform byte by byte copy. It would be possible if FUSE was allowing to implement reflink
syscall and the default cp
was compiled with --reflink=auto
instead of --relink=never
by default. So in short, the reflink
way won't happen. If anyone has any ideas how we can implement zero cost cp
command using FUSE, please share.
@whyrusleeping what do you think about general direction?
Metadata
Metadata
Assignees
Labels
No labels