From: Or Ozeri Date: Thu, 24 Dec 2020 09:28:21 +0000 (+0200) Subject: librbd: fix missing lock acquire on SimpleSchedulerObjectDispatch X-Git-Tag: v16.1.0~87^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=679a1e341b5d9a49e760ef9abe86cfd56b51fc82;p=ceph.git librbd: fix missing lock acquire on SimpleSchedulerObjectDispatch This commit fixes a missing lock in SimpleSchedulerObjectDispatch when handling (exclusive create) / (assert version) writes Signed-off-by: Or Ozeri --- diff --git a/src/librbd/io/SimpleSchedulerObjectDispatch.cc b/src/librbd/io/SimpleSchedulerObjectDispatch.cc index 3f2b5bbe2b46..6b50c46ad528 100644 --- a/src/librbd/io/SimpleSchedulerObjectDispatch.cc +++ b/src/librbd/io/SimpleSchedulerObjectDispatch.cc @@ -269,6 +269,8 @@ bool SimpleSchedulerObjectDispatch::write( ldout(cct, 20) << data_object_name(m_image_ctx, object_no) << " " << object_off << "~" << data.length() << dendl; + std::lock_guard locker{m_lock}; + // don't try to batch assert version writes if (assert_version.has_value() || (write_flags & OBJECT_WRITE_FLAG_CREATE_EXCLUSIVE) != 0) { @@ -276,7 +278,6 @@ bool SimpleSchedulerObjectDispatch::write( return false; } - std::lock_guard locker{m_lock}; if (try_delay_write(object_no, object_off, std::move(data), io_context, op_flags, *object_dispatch_flags, on_dispatched)) {