From: Radoslaw Zarzynski Date: Tue, 26 Nov 2024 22:13:18 +0000 (+0000) Subject: os, os/memstore: make the omap_iterate reentrant X-Git-Tag: v20.3.0~156^2~12 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d293d5e7901b98c3f580b34e6b9fb477191f079f;p=ceph.git os, os/memstore: make the omap_iterate reentrant Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/os/memstore/MemStore.cc b/src/os/memstore/MemStore.cc index 24f172898e7cc..0e7e19665df9a 100644 --- a/src/os/memstore/MemStore.cc +++ b/src/os/memstore/MemStore.cc @@ -631,7 +631,7 @@ int MemStore::omap_iterate( bool more = false; { - std::lock_guard lock{o->omap_mutex}; + std::shared_lock lock{o->omap_mutex}; // obtain seek the iterator decltype(o->omap)::iterator it; diff --git a/src/os/memstore/MemStore.h b/src/os/memstore/MemStore.h index fc0bc96db7bee..358068fef477d 100644 --- a/src/os/memstore/MemStore.h +++ b/src/os/memstore/MemStore.h @@ -33,7 +33,7 @@ class MemStore : public ObjectStore { public: struct Object : public RefCountedObject { ceph::mutex xattr_mutex{ceph::make_mutex("MemStore::Object::xattr_mutex")}; - ceph::mutex omap_mutex{ceph::make_mutex("MemStore::Object::omap_mutex")}; + ceph::shared_mutex omap_mutex{ceph::make_shared_mutex("MemStore::Object::omap_mutex")}; std::map> xattr; ceph::buffer::list omap_header; std::map omap;