]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Make new EC use non-const iterators 64795/head
authorAlex Ainscow <aainscow@uk.ibm.com>
Mon, 12 May 2025 17:46:49 +0000 (18:46 +0100)
committerAlex Ainscow <aainscow@uk.ibm.com>
Fri, 1 Aug 2025 10:12:42 +0000 (11:12 +0100)
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
(cherry picked from commit 9859e8dcfcc5defeb8650e192433fd35cc4d5d0d)

src/osd/ECUtil.h

index f6f21b05353c6005f29b3364fd2191df57b805c9..93c5e8b98499bd037197bd7e4c7cd06e4d02705e 100644 (file)
@@ -58,7 +58,7 @@ struct bl_split_merge {
 
 using extent_set = interval_set<uint64_t, boost::container::flat_map, false>;
 using extent_map = interval_map<uint64_t, ceph::buffer::list, bl_split_merge,
-                                boost::container::flat_map>;
+                                boost::container::flat_map, true>;
 
 /* Slice iterator.  This looks for contiguous buffers which are common
  * across all shards in the out_set.
@@ -74,8 +74,8 @@ class slice_iterator {
   uint64_t length = std::numeric_limits<uint64_t>::max();
   uint64_t start = std::numeric_limits<uint64_t>::max();
   uint64_t end = std::numeric_limits<uint64_t>::max();
-  shard_id_map<std::pair<extent_map::const_iterator,
-                         bufferlist::const_iterator>> iters;
+  shard_id_map<std::pair<extent_map::iterator,
+                         bufferlist::iterator>> iters;
   shard_id_map<bufferptr> in;
   shard_id_map<bufferptr> out;
   const shard_id_set &out_set;
@@ -992,10 +992,10 @@ public:
   size_t shard_count() { return extent_maps.size(); }
 
 
-  void assert_buffer_contents_equal(shard_extent_map_t other) const {
+  void assert_buffer_contents_equal(shard_extent_map_t other) {
     for (auto &&[shard, emap] : extent_maps) {
       for (auto &&i : emap) {
-        bufferlist bl = i.get_val();
+        bufferlist &bl = i.get_val();
         bufferlist otherbl;
         other.get_buffer(shard, i.get_off(), i.get_len(), otherbl);
         ceph_assert(bl.contents_equal(otherbl));