summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSrinivasaBharathKanta <61141011+SrinivasaBharath@users.noreply.github.com>2025-01-14 01:54:34 +0100
committerGitHub <noreply@github.com>2025-01-14 01:54:34 +0100
commit4a03c75b011ae2021b2dd26981ba6223cacad3b1 (patch)
tree32effd19cc2b507e5edeebe08e791a0ed17714ce
parentMerge pull request #61312 from adamemerson/wip-boost-1.86-fixes (diff)
parentosd/osd_types: perfect forwarding in pool_opts_t::set() (diff)
downloadceph-4a03c75b011ae2021b2dd26981ba6223cacad3b1.tar.xz
ceph-4a03c75b011ae2021b2dd26981ba6223cacad3b1.zip
Merge pull request #60215 from MaxKellermann/osd_optimizations
OSD: Small optimizations
-rw-r--r--src/osd/ExtentCache.h2
-rw-r--r--src/osd/Session.h2
-rw-r--r--src/osd/osd_types.h5
-rw-r--r--src/osdc/Objecter.cc2
4 files changed, 5 insertions, 6 deletions
diff --git a/src/osd/ExtentCache.h b/src/osd/ExtentCache.h
index 972228cd077..7dc1d4f7263 100644
--- a/src/osd/ExtentCache.h
+++ b/src/osd/ExtentCache.h
@@ -363,7 +363,7 @@ private:
extent,
boost::intrusive::list_member_hook<>,
&extent::pin_list_member>;
- using list = boost::intrusive::list<extent, list_member_options>;
+ using list = boost::intrusive::list<extent, boost::intrusive::constant_time_size<false>, list_member_options>;
list pin_list;
~pin_state() {
ceph_assert(pin_list.empty());
diff --git a/src/osd/Session.h b/src/osd/Session.h
index 9fa9c655456..05a0119d31e 100644
--- a/src/osd/Session.h
+++ b/src/osd/Session.h
@@ -136,7 +136,7 @@ struct Session : public RefCountedObject {
ceph::mutex session_dispatch_lock =
ceph::make_mutex("Session::session_dispatch_lock");
- boost::intrusive::list<OpRequest> waiting_on_map;
+ boost::intrusive::list<OpRequest, boost::intrusive::constant_time_size<false>> waiting_on_map;
ceph::spinlock projected_epoch_lock;
epoch_t projected_epoch = 0;
diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h
index 1e92d5cd3d6..485fddead7a 100644
--- a/src/osd/osd_types.h
+++ b/src/osd/osd_types.h
@@ -1151,9 +1151,8 @@ public:
bool is_set(key_t key) const;
template<typename T>
- void set(key_t key, const T &val) {
- value_t value = val;
- opts[key] = value;
+ void set(key_t key, T &&val) {
+ opts.insert_or_assign(key, std::forward<T>(val));
}
template<typename T>
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index 087b623333b..82d43bb3dde 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -1393,7 +1393,7 @@ void Objecter::handle_osd_map(MOSDMap *m)
for (auto& [c, ec] : p->second) {
asio::post(service.get_executor(), asio::append(std::move(c), ec));
}
- waiting_for_map.erase(p++);
+ p = waiting_for_map.erase(p);
}
monc->sub_got("osdmap", osdmap->get_epoch());