summaryrefslogtreecommitdiffstats
path: root/src/crimson/osd/pg_backend.h
diff options
context:
space:
mode:
authorXuehan Xu <xxhdx1985126@gmail.com>2021-03-11 06:21:31 +0100
committerXuehan Xu <xxhdx1985126@gmail.com>2021-05-16 08:47:56 +0200
commitf7181ab2f65803ecd8204f8f4f5aad4713b747f3 (patch)
treed6931c3a826fb1c170ab3d28be5fbc99390af246 /src/crimson/osd/pg_backend.h
parentcrimson/common: add new facilities to interruptible future (diff)
downloadceph-f7181ab2f65803ecd8204f8f4f5aad4713b747f3.tar.xz
ceph-f7181ab2f65803ecd8204f8f4f5aad4713b747f3.zip
crimson/osd: optimize crimson-osd's client requests process parallelism
Make client requests go to the concurrent pipeline stage "wait_repop" once they are "submitted" to the underlying objectstore, which means their on-disk order is guaranteed, so that successive client requests can go into the "process" pipeline stage. Signed-off-by: Xuehan Xu <xxhdx1985126@gmail.com>
Diffstat (limited to 'src/crimson/osd/pg_backend.h')
-rw-r--r--src/crimson/osd/pg_backend.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h
index 7f5a5275455..699bad16167 100644
--- a/src/crimson/osd/pg_backend.h
+++ b/src/crimson/osd/pg_backend.h
@@ -58,6 +58,9 @@ public:
using interruptible_future =
::crimson::interruptible::interruptible_future<
::crimson::osd::IOInterruptCondition, T>;
+ using rep_op_fut_t =
+ std::tuple<interruptible_future<>,
+ interruptible_future<crimson::osd::acked_peers_t>>;
PGBackend(shard_id_t shard, CollectionRef coll, crimson::os::FuturizedStore* store);
virtual ~PGBackend() = default;
static std::unique_ptr<PGBackend> create(pg_t pgid,
@@ -158,7 +161,7 @@ public:
const OSDOp& osd_op,
ceph::os::Transaction& trans,
osd_op_params_t& osd_op_params);
- interruptible_future<crimson::osd::acked_peers_t> mutate_object(
+ rep_op_fut_t mutate_object(
std::set<pg_shard_t> pg_shards,
crimson::osd::ObjectContextRef &&obc,
ceph::os::Transaction&& txn,
@@ -279,7 +282,7 @@ private:
uint32_t flags) = 0;
bool maybe_create_new_object(ObjectState& os, ceph::os::Transaction& txn);
- virtual interruptible_future<crimson::osd::acked_peers_t>
+ virtual rep_op_fut_t
_submit_transaction(std::set<pg_shard_t>&& pg_shards,
const hobject_t& hoid,
ceph::os::Transaction&& txn,