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、更新剩余空间信息。