github.com/rohankumardubey/proxyfs@v0.0.0-20210108201508-653efa9ab00e/docs/source/architecture/uml/file-write-new.uml (about) 1 @startuml 2 3 title File Write Path - New Model 4 5 participant fs 6 participant inode 7 participant serializer 8 participant sortedmap 9 participant swiftclient 10 participant swift 11 participant headhunter 12 13 fs->inode: Write(InodeNumber, Data) 14 inode->headhunter: GetInodeRec(InodeNumber) 15 headhunter->swift: Read "page" of InodeRec Table 16 swift->headhunter: returns "page" of InodeRec Table 17 headhunter->inode: returns JSON'd FileInode 18 inode->serializer: Do definiteWrite() 19 serializer->swiftclient: FetchObjectChunkedPutContext() 20 swiftclient->swift: HTTP PUT Transfer-Encoding: chunked 21 swiftclient->serializer: returns chunkedPutContext 22 serializer->swiftclient: SendChunk(Data) 23 swiftclient->swift: ChunkHeader...then Data 24 swiftclient->serializer: returns chunk sent status 25 serializer->sortedmap: Put(FileExtentStruct) 26 sortedmap->headhunter: GetB+TreeObject(cstruct'd B+Tree Node) 27 headhunter->swift: HTTP GET "page" of B+TreeObject Table 28 swift->headhunter: returns "page" of B+TreeObject Table 29 headhunter->sortedmap: returns cstruct'd B+Tree Node 30 sortedmap->serializer: returns insert status 31 serializer->serializer: Time To Flush 32 serializer->swiftclient: Close() 33 swiftclient->swift: Zero-length'd ChunkHeader 34 swift->swiftclient: returns HTTP Status 35 swiftclient->serializer: returns HTTP Status 36 serializer->sortedmap: Flush() 37 sortedmap->headhunter: PutB+TreeObject(cstruct'd B+Tree Node) 38 headhunter->sortedmap: returns insert status 39 sortedmap->serializer: returns flush status 40 serializer->inode: returns definiteWrite() status 41 inode->fs: returns Write() status 42 43 @enduml