From 4cc0dd2b6c75b430c31457a2bc6402c617dc9480 Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Fri, 3 Sep 2021 23:17:12 +0800 Subject: [PATCH] crimson/os/seastore: allow getting empty delta from omap extents there are chances that a transaction gets invalidated after some of its extents have their delta prepared. Signed-off-by: Xuehan Xu --- .../omap_manager/btree/omap_btree_node_impl.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h index 05819217c5db5..a26b9af9e8848 100644 --- a/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h +++ b/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h @@ -108,10 +108,11 @@ struct OMapInnerNode } ceph::bufferlist get_delta() final { - assert(!delta_buffer.empty()); ceph::bufferlist bl; - encode(delta_buffer, bl); - delta_buffer.clear(); + if (!delta_buffer.empty()) { + encode(delta_buffer, bl); + delta_buffer.clear(); + } return bl; } @@ -205,10 +206,11 @@ struct OMapLeafNode } ceph::bufferlist get_delta() final { - assert(!delta_buffer.empty()); ceph::bufferlist bl; - encode(delta_buffer, bl); - delta_buffer.clear(); + if (!delta_buffer.empty()) { + encode(delta_buffer, bl); + delta_buffer.clear(); + } return bl; } -- 2.39.5