diff --git a/FUSE-Mount.md b/FUSE-Mount.md index 4d3d0f2..d5a075a 100644 --- a/FUSE-Mount.md +++ b/FUSE-Mount.md @@ -44,7 +44,8 @@ There are no network round trip to lookup the volume id location. For reads: 1. Client Reads File Metadata => Weed Filer => Weed Filer database (LevelDB, Cassandra, Redis, Mysql, Postgres, etc) -2. Client Reads File Chunks => Weed Volume Servers +2. Client optionally lookup volume Id => Weed Filer => Weed Master +3. Client Reads File Chunks => Weed Volume Servers ![](MountRead.png) diff --git a/MountRead.png b/MountRead.png index e5d8fec..ad28871 100644 Binary files a/MountRead.png and b/MountRead.png differ diff --git a/MountWrite.png b/MountWrite.png index 2053368..47d2464 100644 Binary files a/MountWrite.png and b/MountWrite.png differ diff --git a/zenuml.txt b/zenuml.txt new file mode 100644 index 0000000..494c3de --- /dev/null +++ b/zenuml.txt @@ -0,0 +1,32 @@ +fileContent = WeedMount.ReadFile{ + metadata = WeedFiler.ReadMetaData{ + metadata = FilerStore.ReadMetaData{} + } + location = WeedFiler.LookupVolumeId{ + location = Master.LookupVolumeId{} + } + chunks = VolumeServer.ReadChunks(){} +} + +success = WeedMount.WriteFile{ + fileIds = WeedFiler.Assign{ + fileIds = Master.Assign{} + } + success = VolumeServer.WriteChunks(fileId){} + success = WeedFiler.WriteMetaData{ + success = FilerStore.SaveMetaData{} + VolumeServer.PurgeOldChunks{} + } +} + +metadata = Filer.Read(path){ + metadata = FilerStore.Lookup(path) +} +volumeServerLocation = WeedMaster.Lookup(volumdId) +content = VolumeServer.Read(fileId) { +} + +fileContent = WeedMount.ReadFile{ + metadata = WeedFiler.ReadMetaData{} + chunks = VolumeServer.ReadChunks(){} +}