return -ENOENT;
}
- uint64_t ImageCtx::get_copyup_snap_id() const
- {
- assert(snap_lock.is_locked());
- // copyup requires the largest possible parent overlap,
- // which is always the oldest snapshot (if any).
- if (!snaps.empty()) {
- return snaps.back();
- }
- return CEPH_NOSNAP;
- }
-
void ImageCtx::aio_read_from_cache(object_t o, uint64_t object_no,
bufferlist *bl, size_t len,
uint64_t off, Context *onfinish,
uint64_t get_parent_snap_id(librados::snap_t in_snap_id) const;
int get_parent_overlap(librados::snap_t in_snap_id,
uint64_t *overlap) const;
- uint64_t get_copyup_snap_id() const;
void aio_read_from_cache(object_t o, uint64_t object_no, bufferlist *bl,
size_t len, uint64_t off, Context *onfinish,
int fadvise_flags);
snapc = image_ctx.snapc;
has_snapshots = !image_ctx.snaps.empty();
- int r = image_ctx.get_parent_overlap(image_ctx.get_copyup_snap_id(),
- &parent_overlap);
+ int r = image_ctx.get_parent_overlap(CEPH_NOSNAP, &parent_overlap);
assert(r == 0);
}
librbd::ImageCtx *ictx2;
ASSERT_EQ(0, open_image(clone_name, &ictx2));
-
ASSERT_EQ(0, snap_create(*ictx2, "snap1"));
bufferptr read_ptr(bl.length());
librbd::NoOpProgressContext no_op;
ASSERT_EQ(0, ictx2->operations->resize(m_image_size - (1 << order) - 32,
no_op));
+ ASSERT_EQ(0, ictx2->operations->resize(m_image_size - (2 << order) - 32,
+ no_op));
ASSERT_EQ(0, librbd::snap_set(ictx2, "snap1"));
{