m_state(LIBRBD_AIO_WRITE_FLAT), m_snap_seq(snapc.seq.val),
m_entire_object(NULL)
{
- m_io_ctx.dup(ictx->data_ctx);
- m_io_ctx.snap_set_read(CEPH_NOSNAP);
-
m_object_image_extents = objectx;
m_parent_overlap = object_overlap;
}
return r;
}
+ RWLock::RLocker owner_locker(ictx->owner_lock);
+ RWLock::RLocker md_locker(ictx->md_lock);
+
ictx->snap_lock.get_read();
snapid_t snap_id = ictx->snap_id;
::SnapContext snapc = ictx->snapc;
c->get();
c->init_time(ictx, AIO_TYPE_WRITE);
- RWLock::RLocker l(ictx->owner_lock);
if (ictx->image_watcher->is_lock_supported() &&
!ictx->image_watcher->is_lock_owner()) {
c->put();
return r;
}
+ RWLock::RLocker owner_locker(ictx->owner_lock);
+ RWLock::RLocker md_locker(ictx->md_lock);
+
// TODO: check for snap
ictx->snap_lock.get_read();
snapid_t snap_id = ictx->snap_id;
c->get();
c->init_time(ictx, AIO_TYPE_DISCARD);
- RWLock::RLocker l(ictx->owner_lock);
if (ictx->image_watcher->is_lock_supported() &&
!ictx->image_watcher->is_lock_owner()) {
c->put();