]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_rados: add guard assert in add_io()
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 6 Jan 2017 17:30:42 +0000 (12:30 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Sat, 7 Jan 2017 23:22:33 +0000 (18:22 -0500)
Use the iterator-returning insert operation in std::map, check
assert the insert case.  As a side effect, this makes use of the
inserted object record more clear.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_rados.cc

index 5ab827d7378313f5e9fda26ef4d84b567f3f6bf9..13afc5bc4454cea59b6e8db82025166a5d1e6e33 100644 (file)
@@ -9656,7 +9656,12 @@ struct get_obj_data : public RefCountedObject {
   void add_io(off_t ofs, off_t len, bufferlist **pbl, AioCompletion **pc) {
     Mutex::Locker l(lock);
 
-    get_obj_io& io = io_map[ofs];
+    const auto& io_iter = io_map.insert(
+      map<off_t, get_obj_io>::value_type(ofs, get_obj_io()));
+
+    assert(io_iter.second); // assert new insertion
+
+    get_obj_io& io = (io_iter.first)->second;
     *pbl = &io.bl;
 
     struct get_obj_aio_data aio;