From 01091769e7d9148c57ef1548ebfd6c7db2ab43bf Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Mon, 11 Jul 2022 17:02:20 +0000 Subject: [PATCH] osd, tools: read_log_and_missing of PGLog takes CephContext Will be needed for dealing with the conf. Signed-off-by: Radoslaw Zarzynski (cherry picked from commit fb746dd346f350e43ad1c35244dc3a1eb6bc22f3) (cherry picked from commit 145b331eb82e0b3acc619f54faf761c3d9f59a6f) Resolves: rhbz#2093106 --- src/osd/PGLog.h | 3 ++- src/tools/ceph_objectstore_tool.cc | 13 +++++++------ src/tools/ceph_objectstore_tool.h | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index 25c88217c51cc..9abfb3271e04d 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -1395,7 +1395,7 @@ public: bool debug_verify_stored_missing = false ) { return read_log_and_missing( - store, ch, pgmeta_oid, info, + cct, store, ch, pgmeta_oid, info, log, missing, oss, tolerate_divergent_missing_log, &clear_divergent_priors, @@ -1406,6 +1406,7 @@ public: template static void read_log_and_missing( + CephContext *cct, ObjectStore *store, ObjectStore::CollectionHandle &ch, ghobject_t pgmeta_oid, diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index 111147610f753..c12a741e97afa 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -437,7 +437,7 @@ static int get_fd_data(int fd, bufferlist &bl) return 0; } -int get_log(ObjectStore *fs, __u8 struct_ver, +int get_log(CephContext *cct, ObjectStore *fs, __u8 struct_ver, spg_t pgid, const pg_info_t &info, PGLog::IndexedLog &log, pg_missing_t &missing) { @@ -449,7 +449,7 @@ int get_log(ObjectStore *fs, __u8 struct_ver, ostringstream oss; ceph_assert(struct_ver > 0); PGLog::read_log_and_missing( - fs, ch, + cct, fs, ch, pgid.make_pgmeta_oid(), info, log, missing, oss, @@ -1078,7 +1078,8 @@ int add_osdmap(ObjectStore *store, metadata_section &ms) return get_osdmap(store, ms.map_epoch, ms.osdmap, ms.osdmap_bl); } -int ObjectStoreTool::do_export(ObjectStore *fs, coll_t coll, spg_t pgid, +int ObjectStoreTool::do_export( + CephContext *cct, ObjectStore *fs, coll_t coll, spg_t pgid, pg_info_t &info, epoch_t map_epoch, __u8 struct_ver, const OSDSuperblock& superblock, PastIntervals &past_intervals) @@ -1088,7 +1089,7 @@ int ObjectStoreTool::do_export(ObjectStore *fs, coll_t coll, spg_t pgid, cerr << "Exporting " << pgid << " info " << info << std::endl; - int ret = get_log(fs, struct_ver, pgid, info, log, missing); + int ret = get_log(cct, fs, struct_ver, pgid, info, log, missing); if (ret > 0) return ret; @@ -4521,7 +4522,7 @@ int main(int argc, char **argv) if (op == "export" || op == "export-remove") { ceph_assert(superblock != nullptr); - ret = tool.do_export(fs.get(), coll, pgid, info, map_epoch, struct_ver, *superblock, past_intervals); + ret = tool.do_export(cct.get(), fs.get(), coll, pgid, info, map_epoch, struct_ver, *superblock, past_intervals); if (ret == 0) { cerr << "Export successful" << std::endl; if (op == "export-remove") { @@ -4540,7 +4541,7 @@ int main(int argc, char **argv) } else if (op == "log") { PGLog::IndexedLog log; pg_missing_t missing; - ret = get_log(fs.get(), struct_ver, pgid, info, log, missing); + ret = get_log(cct.get(), fs.get(), struct_ver, pgid, info, log, missing); if (ret < 0) goto out; diff --git a/src/tools/ceph_objectstore_tool.h b/src/tools/ceph_objectstore_tool.h index aafe886ba6970..82aa83e5d2c3d 100644 --- a/src/tools/ceph_objectstore_tool.h +++ b/src/tools/ceph_objectstore_tool.h @@ -27,7 +27,7 @@ class ObjectStoreTool : public RadosDump int dump_export(Formatter *formatter); int do_import(ObjectStore *store, OSDSuperblock& sb, bool force, std::string pgidstr); - int do_export(ObjectStore *fs, coll_t coll, spg_t pgid, + int do_export(CephContext *cct, ObjectStore *fs, coll_t coll, spg_t pgid, pg_info_t &info, epoch_t map_epoch, __u8 struct_ver, const OSDSuperblock& superblock, PastIntervals &past_intervals); -- 2.39.5