]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: allow getting empty delta from omap extents
authorXuehan Xu <xxhdx1985126@gmail.com>
Fri, 3 Sep 2021 15:17:12 +0000 (23:17 +0800)
committerXuehan Xu <xxhdx1985126@gmail.com>
Wed, 8 Sep 2021 03:03:01 +0000 (11:03 +0800)
there are chances that a transaction gets invalidated after some of
its extents have their delta prepared.

Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.h

index 05819217c5db5e5d50821c9c8a6dd18fad78d681..a26b9af9e8848f1ddf079e8374c7616499391255 100644 (file)
@@ -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;
   }