Bug #63618 ยป a.patch
src/googletest | ||
---|---|---|
Subproject commit 389cb68b87193358358ae87cc56d257fd0d80189
|
||
Subproject commit 389cb68b87193358358ae87cc56d257fd0d80189-dirty
|
src/os/bluestore/fastbmap_allocator_impl.h | ||
---|---|---|
std::lock_guard l(lock);
|
||
auto allocated = l1._mark_alloc_l1(o, len);
|
||
std::cout << std::hex
|
||
<< allocated << " " << available << " " << o << "~" << len
|
||
<< std::dec << std::endl;
|
||
ceph_assert(available >= allocated);
|
||
available -= allocated;
|
||
_mark_l2_on_l1(l2_pos, l2_pos_end);
|
src/test/objectstore/Allocator_test.cc | ||
---|---|---|
}
|
||
}
|
||
TEST_P(AllocTest, test_alloc_bad_unit)
|
||
{
|
||
uint64_t block = 0x10000;
|
||
uint64_t size = 0x100000000ul;
|
||
init_alloc(size, block);
|
||
alloc->init_add_free(0, size);
|
||
EXPECT_EQ(alloc->get_free(), size);
|
||
|
||
alloc->init_rm_free(0x1000, 0x1000);
|
||
std::cout << std::hex
|
||
<< "remove 0x1000~1000, "
|
||
<< "free = " << alloc->get_free() << std::dec << std::endl;
|
||
alloc->foreach([](uint64_t offset, uint64_t length) {
|
||
std::cout << std::hex << offset << "~" << length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----------------" << std::endl;
|
||
}
|
||
TEST_P(AllocTest, test_alloc_bad_unit2)
|
||
{
|
||
uint64_t block = 0x10000;
|
||
uint64_t size = 0x100000000ul;
|
||
init_alloc(size, block);
|
||
alloc->init_add_free(0, size);
|
||
EXPECT_EQ(alloc->get_free(), size);
|
||
PExtentVector extents;
|
||
auto need = 0x10000;
|
||
int64_t got;
|
||
got = alloc->allocate(need, 0x10000, 0, (int64_t)0, &extents);
|
||
EXPECT_EQ(got, 0x10000);
|
||
std::cout << std::hex
|
||
<< "allocate 0x10000, "
|
||
<< "free = " << alloc->get_free() << std::dec << std::endl;
|
||
std::for_each(extents.begin(), extents.end(), [](bluestore_pextent_t& pe) {
|
||
std::cout << std::hex << pe.offset << "~" << pe.length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----" << std::endl;
|
||
alloc->foreach([](uint64_t offset, uint64_t length) {
|
||
std::cout << std::hex << offset << "~" << length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----------------" << std::endl;
|
||
extents.clear();
|
||
need = 0x1000;
|
||
got = alloc->allocate(need, 0x1000, 0, (int64_t)0, &extents);
|
||
EXPECT_EQ(got, 0x1000);
|
||
std::cout << std::hex
|
||
<< "allocate 0x1000, "
|
||
<< "free = " << alloc->get_free() << std::dec << std::endl;
|
||
std::for_each(extents.begin(), extents.end(), [](bluestore_pextent_t& pe) {
|
||
std::cout << std::hex << pe.offset << "~" << pe.length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----" << std::endl;
|
||
alloc->foreach([](uint64_t offset, uint64_t length) {
|
||
std::cout << std::hex << offset << "~" << length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----------------" << std::endl;
|
||
alloc->release(extents);
|
||
std::cout << std::hex
|
||
<< "release 0x1000, "
|
||
<< "free = " << alloc->get_free() << std::dec << std::endl;
|
||
alloc->foreach([](uint64_t offset, uint64_t length) {
|
||
std::cout << std::hex << offset << "~" << length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----------------" << std::endl;
|
||
alloc->init_add_free(0x0, 0x10000);
|
||
std::cout << std::hex
|
||
<< "add free 0x0~10000, "
|
||
<< "free = " << alloc->get_free() << std::dec << std::endl;
|
||
alloc->foreach([](uint64_t offset, uint64_t length) {
|
||
std::cout << std::hex << offset << "~" << length << std::dec << std::endl;
|
||
});
|
||
std::cout << "-----------------" << std::endl;
|
||
ASSERT_EQ(alloc->get_free(), size);
|
||
}
|
||
INSTANTIATE_TEST_SUITE_P(
|
||
Allocator,
|
||
AllocTest,
|