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