using with_both_obc_func_t =
std::function<load_obc_iertr::future<> (ObjectContextRef, ObjectContextRef)>;
+ // Use this variant by default
template<RWState::State State>
load_obc_iertr::future<> with_obc(hobject_t oid,
with_obc_func_t&& func);
- template<RWState::State State>
- load_obc_iertr::future<> with_clone_obc(hobject_t oid,
- with_obc_func_t&& func);
-
// Use this variant in the case where the head object
- // obc is already locked. Avoid nesting
- // with_head_obc() as in using with_clone_obc().
+ // obc is already locked and only the clone obc is needed.
+ // Avoid nesting with_head_obc() calls by using with_clone_obc()
+ // with an already locked head.
template<RWState::State State>
load_obc_iertr::future<> with_clone_obc_only(ObjectContextRef head,
hobject_t oid,
hobject_t oid,
with_both_obc_func_t&& func);
+ load_obc_iertr::future<> reload_obc(ObjectContext& obc) const;
+
+ void notify_on_change(bool is_primary);
+
+private:
+ ObjectContextRegistry& obc_registry;
+ PGBackend& backend;
+ DoutPrefixProvider& dpp;
+ obc_accessing_list_t obc_set_accessing;
+
+ template<RWState::State State>
+ load_obc_iertr::future<> with_clone_obc(hobject_t oid,
+ with_obc_func_t&& func);
+
template<RWState::State State>
load_obc_iertr::future<> with_head_obc(ObjectContextRef obc,
bool existed,
load_obc_iertr::future<ObjectContextRef>
load_obc(ObjectContextRef obc);
-
- load_obc_iertr::future<> reload_obc(ObjectContext& obc) const;
-
- void notify_on_change(bool is_primary);
-
-private:
- ObjectContextRegistry& obc_registry;
- PGBackend& backend;
- DoutPrefixProvider& dpp;
- obc_accessing_list_t obc_set_accessing;
};
}