and pass skip_object_map as a flag instead of a bool param.
Signed-off-by: Mykola Golub <mgolub@suse.com>
m_image_ctx, "snap_create", exclusive_lock::OPERATION_REQUEST_TYPE_GENERAL,
true,
boost::bind(&Operations<I>::execute_snap_create, this, snap_namespace, snap_name,
- _1, 0, false, boost::ref(*prog_ctx)),
+ _1, 0, 0, boost::ref(*prog_ctx)),
boost::bind(&ImageWatcher<I>::notify_snap_create, m_image_ctx.image_watcher,
request_id, snap_namespace, snap_name, boost::ref(*prog_ctx),
_1),
const std::string &snap_name,
Context *on_finish,
uint64_t journal_op_tid,
- bool skip_object_map,
+ uint64_t flags,
ProgressContext &prog_ctx) {
ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
ceph_assert(m_image_ctx.exclusive_lock == nullptr ||
operation::SnapshotCreateRequest<I> *req =
new operation::SnapshotCreateRequest<I>(
m_image_ctx, new C_NotifyUpdate<I>(m_image_ctx, on_finish),
- snap_namespace, snap_name, journal_op_tid, skip_object_map, prog_ctx);
+ snap_namespace, snap_name, journal_op_tid, flags, prog_ctx);
req->send();
}
void snap_create(const cls::rbd::SnapshotNamespace &snap_namespace,
const std::string& snap_name, Context *on_finish);
void execute_snap_create(const cls::rbd::SnapshotNamespace &snap_namespace,
- const std::string &snap_name,
- Context *on_finish,
- uint64_t journal_op_tid, bool skip_object_map,
+ const std::string &snap_name, Context *on_finish,
+ uint64_t journal_op_tid, uint64_t flags,
ProgressContext &prog_ctx);
int snap_rollback(const cls::rbd::SnapshotNamespace& snap_namespace,
IMAGE_READ_ONLY_FLAG_NON_PRIMARY = 1 << 1,
};
+enum SnapCreateFlag {
+ SNAP_CREATE_FLAG_SKIP_OBJECT_MAP = 1 << 0,
+};
+
struct MigrationInfo {
int64_t pool_id = -1;
std::string pool_namespace;
finish_op_ctx->complete(0);
});
std::shared_lock owner_locker{m_dst_image_ctx->owner_lock};
- m_dst_image_ctx->operations->execute_snap_create(m_snap_namespace,
- m_snap_name.c_str(), ctx, 0U,
- true, m_prog_ctx);
+ m_dst_image_ctx->operations->execute_snap_create(
+ m_snap_namespace, m_snap_name.c_str(), ctx, 0U,
+ SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, m_prog_ctx);
}
template <typename I>
image_ctx.operations->execute_snap_create(event.snap_namespace,
event.snap_name,
on_op_complete,
- event.op_tid, false,
+ event.op_tid, 0,
no_op_progress_callback);
}
const cls::rbd::SnapshotNamespace &snap_namespace,
const std::string &snap_name,
uint64_t journal_op_tid,
- bool skip_object_map,
+ uint64_t flags,
ProgressContext &prog_ctx)
: Request<I>(image_ctx, on_finish, journal_op_tid),
m_snap_namespace(snap_namespace), m_snap_name(snap_name),
- m_skip_object_map(skip_object_map), m_prog_ctx(prog_ctx) {
+ m_skip_object_map(flags & SNAP_CREATE_FLAG_SKIP_OBJECT_MAP),
+ m_prog_ctx(prog_ctx) {
}
template <typename I>
SnapshotCreateRequest(ImageCtxT &image_ctx, Context *on_finish,
const cls::rbd::SnapshotNamespace &snap_namespace,
const std::string &snap_name, uint64_t journal_op_tid,
- bool skip_object_map, ProgressContext &prog_ctx);
+ uint64_t flags, ProgressContext &prog_ctx);
protected:
void send_op() override;
void expect_snap_create(librbd::MockTestImageCtx &mock_image_ctx,
const std::string &snap_name, uint64_t snap_id, int r) {
EXPECT_CALL(*mock_image_ctx.operations,
- execute_snap_create(_, StrEq(snap_name), _, 0, true, _))
+ execute_snap_create(_, StrEq(snap_name), _, 0,
+ SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, _))
.WillOnce(DoAll(InvokeWithoutArgs([&mock_image_ctx, snap_id, snap_name]() {
inject_snap(mock_image_ctx, snap_id, snap_name);
}),
Context **on_finish, const char *snap_name,
uint64_t op_tid) {
EXPECT_CALL(*mock_image_ctx.operations, execute_snap_create(_, StrEq(snap_name), _,
- op_tid, false, _))
+ op_tid, 0, _))
.WillOnce(DoAll(SaveArg<2>(on_finish),
NotifyInvoke(&m_invoke_lock, &m_invoke_cond)));
}
const std::string &snap_name,
Context *on_finish,
uint64_t journal_op_tid,
- bool skip_object_map,
+ uint64_t flags,
ProgressContext &prog_ctx));
MOCK_METHOD3(snap_remove, void(const cls::rbd::SnapshotNamespace &snap_namespace,
const std::string &snap_name,
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
librbd::NoOpProgressContext prog_ctx;
MockSnapshotCreateRequest *req = new MockSnapshotCreateRequest(
mock_image_ctx, &cond_ctx, cls::rbd::UserSnapshotNamespace(),
- "snap1", 0, true, prog_ctx);
+ "snap1", 0, SNAP_CREATE_FLAG_SKIP_OBJECT_MAP, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();
mock_image_ctx, &cond_ctx,
cls::rbd::MirrorSnapshotNamespace{
cls::rbd::MIRROR_SNAPSHOT_STATE_PRIMARY, {}, "", CEPH_NOSNAP},
- "snap1", 0, false, prog_ctx);
+ "snap1", 0, 0, prog_ctx);
{
std::shared_lock owner_locker{mock_image_ctx.owner_lock};
req->send();