From: junxiang Mu <1948535941@qq.com> Date: Mon, 20 May 2024 10:00:53 +0000 (-0400) Subject: crimson/osd/ops_executer: LIST_SNAPS only on CEPH_SNAPDIR X-Git-Tag: testing/wip-pdonnell-testing-20240611.170412-debug~27^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=2e7482ebcf19ae066e2d7c2d297d4f0d3250dc63;p=ceph-ci.git crimson/osd/ops_executer: LIST_SNAPS only on CEPH_SNAPDIR fixes: https://tracker.ceph.com/issues/65663 Signed-off-by: junxiang Mu <1948535941@qq.com> --- diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 3c7e9c86b1c..b6f4dcf009c 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -489,6 +489,11 @@ OpsExecuter::list_snaps_iertr::future<> OpsExecuter::do_list_snaps( const ObjectState& os, const SnapSet& ss) { + if (msg->get_snapid() != CEPH_SNAPDIR) { + logger().debug("LIST_SNAPS with incorrect context"); + return crimson::ct_error::invarg::make(); + } + obj_list_snap_response_t resp; resp.clones.reserve(ss.clones.size() + 1); for (auto &clone: ss.clones) { diff --git a/src/crimson/osd/ops_executer.h b/src/crimson/osd/ops_executer.h index 92d7b89c4a4..834266ce68f 100644 --- a/src/crimson/osd/ops_executer.h +++ b/src/crimson/osd/ops_executer.h @@ -107,6 +107,7 @@ public: virtual uint64_t get_features() const = 0; virtual bool has_flag(uint32_t flag) const = 0; virtual entity_name_t get_source() const = 0; + virtual snapid_t get_snapid() const = 0; }; template @@ -144,6 +145,9 @@ public: uint64_t get_features() const final { return pimpl->get_features(); } + snapid_t get_snapid() const final { + return pimpl->get_snapid(); + } }; // because OpsExecuter is pretty heavy-weight object we want to ensure diff --git a/src/crimson/osd/pg.h b/src/crimson/osd/pg.h index d705a71bb78..cdfdb53735e 100644 --- a/src/crimson/osd/pg.h +++ b/src/crimson/osd/pg.h @@ -831,12 +831,17 @@ struct PG::do_osd_ops_params_t { return orig_source_inst.name; } + snapid_t get_snapid() const { + return snapid; + } + crimson::net::ConnectionXcoreRef &conn; osd_reqid_t reqid; utime_t mtime; epoch_t map_epoch; entity_inst_t orig_source_inst; uint64_t features; + snapid_t snapid; }; std::ostream& operator<<(std::ostream&, const PG& pg); diff --git a/src/test/librados/snapshots_cxx.cc b/src/test/librados/snapshots_cxx.cc index 3338b62056e..ab6ecdfbf01 100644 --- a/src/test/librados/snapshots_cxx.cc +++ b/src/test/librados/snapshots_cxx.cc @@ -153,7 +153,6 @@ TEST_F(LibRadosSnapshotsSelfManagedPP, SnapPP) { } TEST_F(LibRadosSnapshotsSelfManagedPP, RollbackPP) { - SKIP_IF_CRIMSON(); std::vector my_snaps; IoCtx readioctx; ASSERT_EQ(0, cluster.ioctx_create(pool_name.c_str(), readioctx));