]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
seastore: add abort_allocation
authormyoungwon oh <ohmyoungwon@gmail.com>
Mon, 24 May 2021 15:36:58 +0000 (00:36 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Tue, 15 Jun 2021 02:09:06 +0000 (11:09 +0900)
when aborting uncommitted transaction, abort_allocation
should be called to cancel in-flight allocations in
in-memory allocator.

Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/randomblock_manager.cc
src/crimson/os/seastore/randomblock_manager.h

index acd2d4d82dd43fd42e84ec0f7583388d12a0ce6c..832f567f184ad03f2ed7d8459d2614428f332ddd 100644 (file)
@@ -393,6 +393,16 @@ RandomBlockManager::rbm_sync_block_bitmap_by_range(blk_id_t start, blk_id_t end,
        );
 }
 
+RandomBlockManager::abort_allocation_ertr::future<>
+RandomBlockManager::abort_allocation(Transaction &t)
+{
+  /*
+   * TODO: clear all allocation infos associated with transaction in in-memory allocator
+   */
+  t.clear_rbm_allocated_blocks();
+  return abort_allocation_ertr::now();
+}
+
 RandomBlockManager::write_ertr::future<>
 RandomBlockManager::complete_allocation(Transaction &t)
 {
index 85d521a1dcc2d62bfebcf51bddcd5b3ed2e09792..41112301bff7f6326cb3fe85524c5ba22507016f 100644 (file)
@@ -257,6 +257,12 @@ public:
    */
   free_block_ertr::future<> free_extent(Transaction &t, blk_paddr_t from, blk_paddr_t to); // TODO: will include trim if necessary
 
+  using abort_allocation_ertr = crimson::errorator<
+    crimson::ct_error::input_output_error,
+    crimson::ct_error::invarg
+    >;
+  abort_allocation_ertr::future<> abort_allocation(Transaction &t);
+
   using complete_allocation_ertr = crimson::errorator<
     crimson::ct_error::input_output_error,
     crimson::ct_error::invarg,