]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/os/seastore/omap_manager/btree/omap_btree_node_impl.cc
update ceph source to reef 18.2.1
[ceph.git] / ceph / src / crimson / os / seastore / omap_manager / btree / omap_btree_node_impl.cc
index ee22b00b7a2c2e832a08c1d8d2e52f8441588d08..4db58414a6ec206a1303c84888054eb89300eef3 100644 (file)
@@ -235,11 +235,12 @@ OMapInnerNode::list(
       return trans_intr::repeat(
         [&, config, oc, this]() -> list_iertr::future<seastar::stop_iteration>
       {
-        if (iter == liter || result.size() == config.max_result_size) {
-          complete = iter == liter;
+        if (iter == liter) {
+          complete = true;
           return list_iertr::make_ready_future<seastar::stop_iteration>(
             seastar::stop_iteration::yes);
         }
+       assert(result.size() < config.max_result_size);
         auto laddr = iter->get_val();
         return omap_load_extent(
           oc, laddr,
@@ -278,8 +279,12 @@ OMapInnerNode::list(
              }
             }
             result.merge(std::move(child_result));
+           if (result.size() == config.max_result_size) {
+             return list_iertr::make_ready_future<seastar::stop_iteration>(
+               seastar::stop_iteration::yes);
+           }
             ++iter;
-            assert(child_complete || result.size() == config.max_result_size);
+            assert(child_complete);
             return list_iertr::make_ready_future<seastar::stop_iteration>(
               seastar::stop_iteration::no);
           });