]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/object_data_handler: avoid reserving zero-length 67567/head
authorXuehan Xu <xuxuehan@qianxin.com>
Fri, 27 Feb 2026 07:18:19 +0000 (15:18 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Fri, 27 Feb 2026 07:18:19 +0000 (15:18 +0800)
regions

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/object_data_handler.cc

index 5c75d87a9b9d27ae0b065adba8fb7cf5102d1786..5a5774f0a44b690598c53b2e9ecfe2b038e5009e 100644 (file)
@@ -289,14 +289,16 @@ ObjectDataHandler::write_ret do_zero(
      (data.tailbl ? ctx.tm.get_block_size() : 0)
     ).checked_to_laddr();
   auto len = end.get_byte_distance<extent_len_t>(laddr);
-  zero_pos = co_await ctx.tm.reserve_region(ctx.t, std::move(zero_pos), laddr, len
-  ).handle_error_interruptible(
-    crimson::ct_error::enospc::assert_failure{"unexpected enospc"},
-    TransactionManager::get_pin_iertr::pass_further{}
-  ).handle_error_interruptible(
-    ObjectDataHandler::write_iertr::pass_further{},
-    crimson::ct_error::assert_all{"unexpected error"}
-  );
+  if (len != 0) {
+    zero_pos = co_await ctx.tm.reserve_region(ctx.t, std::move(zero_pos), laddr, len
+    ).handle_error_interruptible(
+      crimson::ct_error::enospc::assert_failure{"unexpected enospc"},
+      TransactionManager::get_pin_iertr::pass_further{}
+    ).handle_error_interruptible(
+      ObjectDataHandler::write_iertr::pass_further{},
+      crimson::ct_error::assert_all{"unexpected error"}
+    );
+  }
 
   if (data.headbl) {
     assert(data.headbl->length() < ctx.tm.get_block_size());