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) {
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 <class ImplT>
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
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);
}
TEST_F(LibRadosSnapshotsSelfManagedPP, RollbackPP) {
- SKIP_IF_CRIMSON();
std::vector<uint64_t> my_snaps;
IoCtx readioctx;
ASSERT_EQ(0, cluster.ioctx_create(pool_name.c_str(), readioctx));