From a8001931b27557b2918f83334ffc5f62b4d287c6 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Thu, 10 Jun 2021 16:09:06 +0900 Subject: [PATCH] seastore/rbm: fix wrong statement Signed-off-by: Myoungwon Oh --- src/crimson/os/seastore/randomblock_manager.cc | 6 +----- .../crimson/seastore/test_randomblock_manager.cc | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/crimson/os/seastore/randomblock_manager.cc b/src/crimson/os/seastore/randomblock_manager.cc index 1ccaa19024ffa..b2aec77bd3e6f 100644 --- a/src/crimson/os/seastore/randomblock_manager.cc +++ b/src/crimson/os/seastore/randomblock_manager.cc @@ -434,11 +434,7 @@ RandomBlockManager::write_ertr::future<> RandomBlockManager::complete_allocation } } logger().debug("complete_alloction: complete to allocate {} blocks", alloc_block_count); - if (alloc_block_count > 0) { - super.free_block_count -= alloc_block_count; - } else { - super.free_block_count += alloc_block_count; - } + super.free_block_count -= alloc_block_count; return write_ertr::now(); }); }); diff --git a/src/test/crimson/seastore/test_randomblock_manager.cc b/src/test/crimson/seastore/test_randomblock_manager.cc index 43ad88ef3a351..66339d22e3aee 100644 --- a/src/test/crimson/seastore/test_randomblock_manager.cc +++ b/src/test/crimson/seastore/test_randomblock_manager.cc @@ -331,5 +331,20 @@ TEST_F(rbm_test_t, check_free_blocks) rbm_manager->rbm_sync_block_bitmap_by_range(10, 12, bitmap_op_types_t::ALL_SET).unsafe_get0(); rbm_manager->check_bitmap_blocks().unsafe_get0(); ASSERT_TRUE(rbm_manager->get_free_blocks() == DEFAULT_TEST_SIZE/DEFAULT_BLOCK_SIZE - 5); + auto free = rbm_manager->get_free_blocks(); + interval_set alloc_ids; + auto t = tm->create_transaction(); + alloc_extent(*t, DEFAULT_BLOCK_SIZE * 4); + alloc_ids = get_allocated_blk_ids(*t); + ASSERT_TRUE(submit_transaction(*t)); + complete_allocation(*t); + ASSERT_TRUE(rbm_manager->get_free_blocks() == free - 4); + + free = rbm_manager->get_free_blocks(); + auto t2 = tm->create_transaction(); + free_extent(*t2, alloc_ids); + ASSERT_TRUE(submit_transaction(*t2)); + complete_allocation(*t2); + ASSERT_TRUE(rbm_manager->get_free_blocks() == free + 4); }); } -- 2.39.5