Chunk
struct Chunk;
&& (((uint8*)this + Chunk::fSize == (uint8*)chunk)
chunk->fSize += Chunk::fSize;
Chunk::fSize += chunk->fSize;
class Chunk {
class FreeChunk : public Chunk, public FreeChunkData {
Chunk::fSize = size;
return (addr_t)this + Chunk::fSize - (addr_t)AllocatedAddress();
chunk->fSize = Chunk::fSize - newSize;
Chunk::fSize = newSize;
return Chunk(block >> 5) & HOST_ENDIAN_TO_BFS_INT32(1UL << (block % 32));
uint32 chunk = Chunk(offset >> 5);
T(BlockChange("b-alloc", block, Chunk(block),
Chunk(block++) |= HOST_ENDIAN_TO_BFS_INT32(mask);
T(BlockChange("b-free", block, Chunk(block),
Chunk(block++) &= HOST_ENDIAN_TO_BFS_INT32(~mask);
Chunk::Chunk(btrfs_chunk* chunk, fsblock_t offset)
Chunk::~Chunk()
Chunk::Size() const
Chunk::FindBlock(off_t logical, off_t& physical)
class Chunk {
Chunk(btrfs_chunk* chunk,
~Chunk();
fChunk = new(std::nothrow) Chunk(chunk, key->Offset());
Chunk _chunk(chunk, search_key.Offset());
class Chunk;
Chunk* SystemChunk() const { return fChunk; }
Chunk* fChunk;
fChunkParserState = Chunk;
case Chunk:
const Chunk& ChunkAt(ssize_t index) const
Chunk& chunk = fChunks[fNextReadIndex++];
Array<Chunk> fChunks;
const Chunk* decompressedChunk = NULL;
const Chunk& chunk = chunkBuffer.ChunkAt(segment.chunkIndex);
Chunk chunk;
uint32 chunkCount, MetaChunk*& _metaChunk, Chunk*& _chunk)
Chunk* firstChunk = metaChunk->chunks + metaChunk->firstFreeChunk;
Chunk* lastChunk = firstChunk + (chunkCount - 1);
Chunk** chunkPointer = &metaChunk->freeChunks;
Chunk* chunk = *chunkPointer;
MetaChunk*& _metaChunk, Chunk*& _chunk)
MemoryManager::_FreeChunk(Area* area, MetaChunk* metaChunk, Chunk* chunk,
Chunk* previousChunk = &metaChunk->chunks[firstFree - 1];
Chunk* nextChunk = &metaChunk->chunks[lastFree + 1];
for (Chunk* chunk = metaChunk->freeChunks; chunk != NULL;
const Chunk* chunk)
Chunk* freeChunk = metaChunk->freeChunks;
for (Chunk* chunk = metaChunk->freeChunks; chunk != NULL;
if ((addr_t)chunk % sizeof(Chunk) != 0 || chunk < metaChunk->chunks
Chunk* chunk = metaChunk->chunks + k;
Chunk* chunk = metaChunk->chunks + i;
AllocateChunk(size_t chunkSize, MetaChunk* metaChunk, Chunk* chunk)
Chunk* chunk)
FreeChunk(MetaChunk* metaChunk, Chunk* chunk)
Chunk* chunk;
Chunk* chunk = &metaChunk->chunks[chunkIndex];
Chunk* chunk;
Chunk* chunk = &metaChunk->chunks[chunkIndex];
Chunk* chunk = metaChunk->chunks + k;
Chunk* chunk = &metaChunk->chunks[chunkIndex];
uint32 flags, MetaChunk*& _metaChunk, Chunk*& _chunk)
MetaChunk*& _metaChunk, Chunk*& _chunk);
MetaChunk*& _metaChunk, Chunk*& _chunk);
Chunk*& _chunk);
Chunk* chunk, addr_t chunkAddress,
const Chunk* chunk);
const Chunk* chunk);
const Chunk* chunk);
MemoryManager::_ChunkAddress(const MetaChunk* metaChunk, const Chunk* chunk)
MemoryManager::_IsChunkFree(const MetaChunk* metaChunk, const Chunk* chunk)
Chunk* next;
Chunk chunks[SLAB_SMALL_CHUNKS_PER_META_CHUNK];
Chunk* freeChunks;