diff options
author | Xuehan Xu <xxhdx1985126@gmail.com> | 2021-03-11 06:21:31 +0100 |
---|---|---|
committer | Xuehan Xu <xxhdx1985126@gmail.com> | 2021-05-16 08:47:56 +0200 |
commit | f7181ab2f65803ecd8204f8f4f5aad4713b747f3 (patch) | |
tree | d6931c3a826fb1c170ab3d28be5fbc99390af246 /src/crimson/osd/pg_backend.h | |
parent | crimson/common: add new facilities to interruptible future (diff) | |
download | ceph-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.h | 7 |
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, |