Signed-off-by: Jason Dillaman <dillaman@redhat.com>
ceph_assert(m_image_ctx->parent != nullptr);
m_lock.lock();
+ m_deep_copied = true;
m_flatten = is_copyup_required() ? true : m_image_ctx->migration_info.flatten;
m_lock.unlock();
ldout(cct, 20) << dendl;
- bool copy_on_read = m_pending_requests.empty();
+ bool copy_on_read = m_pending_requests.empty() && !m_deep_copied;
bool deep_copyup = !snapc.snaps.empty() && !m_copyup_is_zero;
if (m_copyup_is_zero) {
m_copyup_data.clear();
bool m_flatten = false;
bool m_copyup_required = true;
bool m_copyup_is_zero = true;
+ bool m_deep_copied = false;
std::map<uint64_t, uint64_t> m_copyup_extent_map;
ceph::bufferlist m_copyup_data;
expect_object_map_update(mock_image_ctx, CEPH_NOSNAP, 0, OBJECT_EXISTS, true,
0);
- expect_sparse_copyup(mock_image_ctx, CEPH_NOSNAP, ictx->get_object_name(0),
- {}, "", 0);
-
auto req = new MockCopyupRequest(&mock_image_ctx, 0,
{{0, 4096}}, {});
mock_image_ctx.copyup_list[0] = req;