]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
journal: prevent race injecting new records into overflowed object 8220/head
authorJason Dillaman <dillaman@redhat.com>
Fri, 18 Mar 2016 23:18:30 +0000 (19:18 -0400)
committerJason Dillaman <dillaman@redhat.com>
Fri, 18 Mar 2016 23:18:30 +0000 (19:18 -0400)
The recorded added after the overflow will not have been detached
from the object recorder.

Fixes: #15202
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/journal/ObjectRecorder.cc

index ba8ff4befbf184bf273670833a8fc29640bd1650..c7f62b4c37a8ab60d3f112fbfe5873fa73649a4a 100644 (file)
@@ -47,6 +47,12 @@ bool ObjectRecorder::append(const AppendBuffers &append_buffers) {
   bool schedule_append = false;
   {
     Mutex::Locker locker(m_lock);
+    if (m_overflowed) {
+      m_append_buffers.insert(m_append_buffers.end(),
+                              append_buffers.begin(), append_buffers.end());
+      return false;
+    }
+
     for (AppendBuffers::const_iterator iter = append_buffers.begin();
          iter != append_buffers.end(); ++iter) {
       if (append(*iter, &schedule_append)) {