snap_lock needs to be taken during writeback.
This is still protected by md_lock. The altered snapc doesn't
affect in-flight ops, so it's safe to update it before flushing.
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
return r;
} // release parent_lock
- if (new_snap) {
- _flush(ictx);
- }
-
if (!new_snapc.is_valid()) {
lderr(cct) << "image snap context is invalid!" << dendl;
return -EIO;
ictx->data_ctx.selfmanaged_snap_set_write_ctx(ictx->snapc.seq, ictx->snaps);
} // release snap_lock
+ if (new_snap) {
+ _flush(ictx);
+ }
+
ictx->refresh_lock.Lock();
ictx->last_refresh = refresh_seq;
ictx->refresh_lock.Unlock();