kfs代码研究(六、ChunkManager分析)
来源:互联网 发布:it业务范围 编辑:程序博客网 时间:2024/05/18 00:45
ChunkManager.cc:
ChunkManager主要是对chunk操作的具体实现。
ChunkManager::WriteChunk:
1、计算要写的数据长度+chunk已经使用的量是否超过了一个chunk的大小,如果超过则截断
2、如果要写入的长度大于64k,则写入的长度必须有64k的整数倍
3、如果写入长度小于64k,则读取从当前偏移量开始64k的数据,计算校验和。(这个逻辑有点怪,没搞明白)
4、写入文件
ChunkManager::ReadChunk:
1、读取没有什么复杂的逻辑,只是对读取的偏移量offset和数据量numbytes按64k做圆整
2、读取chunk文件
ChunkManager::AllocChunk:
1、根据chunkid到mChunkTable查找chunk,如果存在则修改chunk版本号。
2、如果不存在,则分配ChunkInfoHandle对象插入到mChunkTable。
ChunkManager::DeleteChunk:
1、在mChunkTable中查找chunk信息。
2、在mChunkTable中删除chunk信息。
3、更新剩余空间信息。
ChunkManager主要是对chunk操作的具体实现。
ChunkManager::WriteChunk:
1、计算要写的数据长度+chunk已经使用的量是否超过了一个chunk的大小,如果超过则截断
2、如果要写入的长度大于64k,则写入的长度必须有64k的整数倍
3、如果写入长度小于64k,则读取从当前偏移量开始64k的数据,计算校验和。(这个逻辑有点怪,没搞明白)
4、写入文件
ChunkManager::ReadChunk:
1、读取没有什么复杂的逻辑,只是对读取的偏移量offset和数据量numbytes按64k做圆整
2、读取chunk文件
ChunkManager::AllocChunk:
1、根据chunkid到mChunkTable查找chunk,如果存在则修改chunk版本号。
2、如果不存在,则分配ChunkInfoHandle对象插入到mChunkTable。
ChunkManager::DeleteChunk:
1、在mChunkTable中查找chunk信息。
2、在mChunkTable中删除chunk信息。
3、更新剩余空间信息。
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(六、ChunkManager分析)
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(四、LayoutManager分析)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(写操作流程图)
- kfs代码研究(七、网络部分)
- kfs代码研究(磁盘异步IO)
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(二、meta server处理流程)
- kfs代码研究(三、meta server具体消息处理)
- kfs代码研究(五、chunk server处理流程)
- kfs代码研究(一、kfs代码目录结构)
- kfs代码研究(一、kfs代码目录结构)
- kfs 简要分析
- 编译器对const char*的态度转变
- 收集struts2各种版本下载地址
- Android:用户定位User Localtion和利用HTTP解析地址--GeoCoding
- 程序员面试100题之三:不用+、-、×、÷数字运算符做加法
- 指针以及内存分配(转载自:http://blog.csdn.net/bizhu12/article/details/6532235)
- kfs代码研究(六、ChunkManager分析)
- C++的内存管理(转载自:http://blog.csdn.net/bizhu12/article/details/6668834)
- ubuntu 下进入root 命令
- 程序员面试100题之四:求1+2+...+n
- win7
- DVCon (Design and Verification Conference)
- 指针
- IMF android input method 输入法研究
- linux下sqlplus中回退键乱码