From 8199ece3e7c754ec8c4606824f928966b3492676 Mon Sep 17 00:00:00 2001 From: Aishwarya Mathuria Date: Mon, 3 Feb 2025 11:54:30 +0000 Subject: [PATCH] crimson/osd/pg: Add helper functions for PG splitting in Crimson This change adds functions that would perform the tasks of splitting stats and splitting collections during PG splitting in Crimson Signed-off-by: Aishwarya Mathuria --- src/crimson/osd/pg.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index 6384f93f72d..643b9ce58dd 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -598,6 +598,38 @@ public: void handle_activate_map(PeeringCtx &rctx); void handle_initialize(PeeringCtx &rctx); + void start_split_stats(const std::set& childpgs, std::vector *out) { + peering_state.start_split_stats(childpgs, out); + } + + void finish_split_stats(const object_stat_sum_t& stats, ObjectStore::Transaction &t) { + peering_state.finish_split_stats(stats, t); + } + + seastar::future<> split_colls( + spg_t child, + int split_bits, + int seed, + const pg_pool_t *pool, + ObjectStore::Transaction &t) { + coll_t target = coll_t(child); + create_pg_collection(t, child, split_bits); + coll_t parent_coll = coll_ref->get_cid(); + t.split_collection( + parent_coll, + split_bits, + seed, + target); + init_pg_ondisk(t, child, pool); + return shard_services.get_store().do_transaction( + coll_ref, std::move(t)); + } + + void split_into(pg_t child_pgid, Ref child, unsigned split_bits) { + peering_state.split_into(child_pgid, &child->peering_state, split_bits); + child->snap_trimq = snap_trimq; + } + static hobject_t get_oid(const hobject_t& hobj); static RWState::State get_lock_type(const OpInfo &op_info); -- 2.39.5