]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: fix missing lock acquire on SimpleSchedulerObjectDispatch
authorOr Ozeri <oro@il.ibm.com>
Thu, 24 Dec 2020 09:28:21 +0000 (11:28 +0200)
committerOr Ozeri <oro@il.ibm.com>
Thu, 24 Dec 2020 09:43:14 +0000 (11:43 +0200)
This commit fixes a missing lock in SimpleSchedulerObjectDispatch
when handling (exclusive create) / (assert version) writes

Signed-off-by: Or Ozeri <oro@il.ibm.com>
src/librbd/io/SimpleSchedulerObjectDispatch.cc

index 3f2b5bbe2b46f6ed0a92211db380ac4d92743852..6b50c46ad528214ee20f4eb9c548b2437ad608b2 100644 (file)
@@ -269,6 +269,8 @@ bool SimpleSchedulerObjectDispatch<I>::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<I>::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)) {