From d293d5e7901b98c3f580b34e6b9fb477191f079f Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 26 Nov 2024 22:13:18 +0000 Subject: [PATCH] os, os/memstore: make the omap_iterate reentrant Signed-off-by: Radoslaw Zarzynski --- src/os/memstore/MemStore.cc | 2 +- src/os/memstore/MemStore.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/os/memstore/MemStore.cc b/src/os/memstore/MemStore.cc index 24f172898e7..0e7e19665df 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 fc0bc96db7b..358068fef47 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; -- 2.39.5