summaryrefslogtreecommitdiffstats
path: root/src/crimson/osd/pg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crimson/osd/pg.h')
-rw-r--r--src/crimson/osd/pg.h26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h
index 15aeec0e4f3..06038c0aa00 100644
--- a/src/crimson/osd/pg.h
+++ b/src/crimson/osd/pg.h
@@ -10,6 +10,7 @@
#include <seastar/core/shared_future.hh>
#include "common/dout.h"
+#include "common/ostream_temp.h"
#include "include/interval_set.h"
#include "crimson/net/Fwd.h"
#include "messages/MOSDRepOpReply.h"
@@ -77,7 +78,8 @@ class PG : public boost::intrusive_ref_counter<
using ec_profile_t = std::map<std::string,std::string>;
using cached_map_t = OSDMapService::cached_map_t;
- ClientRequest::PGPipeline request_pg_pipeline;
+ CommonPGPipeline request_pg_pipeline;
+ PGRepopPipeline repop_pipeline;
PGPeeringPipeline peering_request_pg_pipeline;
ClientRequest::Orderer client_request_orderer;
@@ -594,7 +596,13 @@ public:
using with_obc_func_t =
std::function<load_obc_iertr::future<> (ObjectContextRef, ObjectContextRef)>;
- interruptible_future<> handle_rep_op(Ref<MOSDRepOp> m);
+ using handle_rep_op_ret = std::tuple<
+ interruptible_future<>, // resolves upon commit
+ MURef<MOSDRepOpReply> // reply message
+ >;
+ // outer future resolves upon submission
+ using handle_rep_op_fut = interruptible_future<handle_rep_op_ret>;
+ handle_rep_op_fut handle_rep_op(Ref<MOSDRepOp> m);
void update_stats(const pg_stat_t &stat);
interruptible_future<> update_snap_map(
const std::vector<pg_log_entry_t> &log_entries,
@@ -663,6 +671,7 @@ private:
const OpInfo &op_info,
std::vector<OSDOp>& ops);
+ seastar::shared_mutex submit_lock;
using submit_executer_ret = std::tuple<
interruptible_future<>,
interruptible_future<>>;
@@ -675,6 +684,8 @@ private:
struct do_osd_ops_params_t;
interruptible_future<MURef<MOSDOpReply>> do_pg_ops(Ref<MOSDOp> m);
+
+public:
interruptible_future<
std::tuple<interruptible_future<>, interruptible_future<>>>
submit_transaction(
@@ -683,6 +694,8 @@ private:
ceph::os::Transaction&& txn,
osd_op_params_t&& oop,
std::vector<pg_log_entry_t>&& log_entries);
+
+private:
interruptible_future<> repair_object(
const hobject_t& oid,
eversion_t& v);
@@ -891,10 +904,11 @@ private:
const hobject_t &obj,
const eversion_t &v,
const std::vector<pg_shard_t> &peers);
- void mutate_object(
- ObjectContextRef& obc,
- ceph::os::Transaction& txn,
- osd_op_params_t& osd_op_p);
+ void enqueue_delete_for_backfill(
+ const hobject_t &obj,
+ const eversion_t &v,
+ const std::vector<pg_shard_t> &peers);
+
bool can_discard_replica_op(const Message& m, epoch_t m_map_epoch) const;
bool can_discard_op(const MOSDOp& m) const;
void context_registry_on_change();