Remove alloc_buffer_area
This commit is contained in:
@@ -150,45 +150,6 @@ bool multilist_alloc_t::is_free(uint32_t pos)
|
|||||||
return nexts[pos] > 0;
|
return nexts[pos] > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t multilist_alloc_t::allocate(uint32_t size)
|
|
||||||
{
|
|
||||||
assert(size > 0);
|
|
||||||
assert(size <= maxn);
|
|
||||||
for (uint32_t i = size-1; i < maxn; i++)
|
|
||||||
{
|
|
||||||
if (heads[i])
|
|
||||||
{
|
|
||||||
uint32_t res = heads[i]-1;
|
|
||||||
assert(nexts[res] >= 1);
|
|
||||||
heads[i] = nexts[res]-1;
|
|
||||||
uint32_t area = sizes[res];
|
|
||||||
assert(area >= size);
|
|
||||||
if (area == size)
|
|
||||||
{
|
|
||||||
nexts[res] = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
uint32_t ni = area-size;
|
|
||||||
ni = (ni < maxn ? ni : maxn)-1;
|
|
||||||
sizes[res+size-1] = -size;
|
|
||||||
sizes[res] = size;
|
|
||||||
sizes[res+size-1] = -area+size;
|
|
||||||
sizes[res+size] = area-size;
|
|
||||||
nexts[res+size] = heads[ni]+1;
|
|
||||||
prevs[heads[ni]-1] = res+size+1;
|
|
||||||
assert(!prevs[res+size]);
|
|
||||||
heads[ni] = res+size+1;
|
|
||||||
}
|
|
||||||
#ifdef MULTILIST_TEST
|
|
||||||
print();
|
|
||||||
#endif
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return UINT32_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t multilist_alloc_t::find(uint32_t size)
|
uint32_t multilist_alloc_t::find(uint32_t size)
|
||||||
{
|
{
|
||||||
assert(size > 0);
|
assert(size > 0);
|
||||||
@@ -1833,18 +1794,6 @@ bool blockstore_heap_t::is_buffer_area_free(uint64_t location, uint64_t size)
|
|||||||
return buffer_alloc->is_free(location / dsk->bitmap_granularity);
|
return buffer_alloc->is_free(location / dsk->bitmap_granularity);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t blockstore_heap_t::alloc_buffer_area(inode_t inode, uint64_t size)
|
|
||||||
{
|
|
||||||
assert(!(size % dsk->bitmap_granularity));
|
|
||||||
uint32_t res = buffer_alloc->allocate(size / dsk->bitmap_granularity);
|
|
||||||
if (res == UINT32_MAX)
|
|
||||||
{
|
|
||||||
return UINT64_MAX;
|
|
||||||
}
|
|
||||||
buffer_area_used_space += size;
|
|
||||||
return res * dsk->bitmap_granularity;
|
|
||||||
}
|
|
||||||
|
|
||||||
void blockstore_heap_t::use_buffer_area(inode_t inode, uint64_t location, uint64_t size)
|
void blockstore_heap_t::use_buffer_area(inode_t inode, uint64_t location, uint64_t size)
|
||||||
{
|
{
|
||||||
assert(!(size % dsk->bitmap_granularity));
|
assert(!(size % dsk->bitmap_granularity));
|
||||||
|
|||||||
@@ -104,7 +104,6 @@ struct multilist_alloc_t
|
|||||||
|
|
||||||
multilist_alloc_t(uint32_t count, uint32_t maxn);
|
multilist_alloc_t(uint32_t count, uint32_t maxn);
|
||||||
bool is_free(uint32_t pos);
|
bool is_free(uint32_t pos);
|
||||||
uint32_t allocate(uint32_t size);
|
|
||||||
uint32_t find(uint32_t size);
|
uint32_t find(uint32_t size);
|
||||||
void use_full(uint32_t pos);
|
void use_full(uint32_t pos);
|
||||||
void use(uint32_t pos, uint32_t size);
|
void use(uint32_t pos, uint32_t size);
|
||||||
@@ -238,7 +237,6 @@ public:
|
|||||||
// buffer device allocator functions
|
// buffer device allocator functions
|
||||||
uint64_t find_free_buffer_area(uint64_t size);
|
uint64_t find_free_buffer_area(uint64_t size);
|
||||||
bool is_buffer_area_free(uint64_t location, uint64_t size);
|
bool is_buffer_area_free(uint64_t location, uint64_t size);
|
||||||
uint64_t alloc_buffer_area(inode_t inode, uint64_t size);
|
|
||||||
void use_buffer_area(inode_t inode, uint64_t location, uint64_t size);
|
void use_buffer_area(inode_t inode, uint64_t location, uint64_t size);
|
||||||
void free_buffer_area(inode_t inode, uint64_t location, uint64_t size);
|
void free_buffer_area(inode_t inode, uint64_t location, uint64_t size);
|
||||||
uint64_t get_buffer_area_used_space();
|
uint64_t get_buffer_area_used_space();
|
||||||
|
|||||||
Reference in New Issue
Block a user