klient/mount: abstract mount types - #10133
Conversation
| // Mount stores information about a single local to remote machine mount. | ||
| type Mount struct { | ||
| Path string `json:"path"` // Mount point. | ||
| RPath string `json:"rpath"` // Remote directory path. |
There was a problem hiding this comment.
When I see rpath I think more about this than remote path. What about just RemotePath string?
|
f98f9c5 to
60e068c
Compare
All components not described here are already implemented.
The workflow is:
I want to fetch index first because it's basically the only thing I need to create FUSE mount(actually the directory view of not existing files that I can "lazy" fetch when requested(future performance improvements))
This will depend on Notifiers strategy. For now I'm working on two:
My initial goal is to create very extensible POC which will left us a window for numbers of improvements. There are too many use cases and I can't cover them all. That's why I'm using incremental approach. |
This PR adds
mountabstract types.Depends on: -
Description
This is an index-based machine mount architecture. It is intended to solve all(known) performance and stability problems with current implementation. It will allow for:
Architecture
Mount - abstract representation of single mount.
Local/remote Index - index of files stored in mounted directory.
Mounts - storage of mounts per machine.
Sync - type responsible for syncing remote and local indexes.
Syncer - interface responsible for transferring files between local and remote machine.
RSync - RSync process used for syncing files.
Notifier - interface responsible for creating index changes.
FUSE - real time FS notification system based on FUSE.
Poller - periodically checks remote and local index in order to keep them synced.
How Has This Been Tested?
Only data structures - nothing to test.
Screenshots (if appropriate):
none
Types of changes