ChunksMgr::WriteChunk流程
2017-03-30 19:44:52 0 举报
ChunksMgr::WriteChunk是一个用于将数据分块写入文件的函数。首先,它会检查输入的数据是否为空,如果为空则直接返回。接着,它会计算数据的大小和块大小,以确定需要多少个块来存储数据。然后,它会创建一个缓冲区,并将数据分成多个块,每个块的大小不超过指定的块大小。接下来,它会遍历这些块,并将它们逐个写入文件。在写入过程中,它还会更新一个内部变量,用于记录已写入的字节数。最后,当所有数据都写入文件后,它会关闭文件并返回成功。如果在写入过程中发生错误,它会抛出一个异常。
作者其他创作
大纲/内容
返回 YFS_ENOCHUNKSERVERS
是
否
该 chunk信息是否为空
将write操作上下文放入等待执行的操作列表
返回YFS_ECHUNKBUSY
更新该chunk优先级
根据该chunk的inode id、chunk 索引、chunk副本数、chunk信息、操作上下文等信息创建一个chunk
该chunk 信息不存在、该 chunk的OSS列表为空、该chunk的chunk id 为0 这3个条件有一个成立
检查该 chunk信息是否为空
删除该chunk信息,并释放该chunk占用的内存
结束
检查该chunk上的操作是否为 YfsChunk::CO_none
将对chunk的write操作上下文放入等待执行的操作列表
该chunk 信息非空
遍历该chunk所在的OSS 列表,找到该chunk的 chunk ID则退出遍历
根据该 chunk的chunk id 和 chunk index 得到该chunk的信息
开始
检查该操作上下文中包含的 chunk id 是否为0
检查该chunk 的mAPLiveID与操作上下文中的mLiveID是否一致
该chunk是否为一个新创建的 chunk
0 条评论
回复 删除
下一页