From: Jason Dillaman Date: Fri, 18 Mar 2016 23:18:30 +0000 (-0400) Subject: journal: prevent race injecting new records into overflowed object X-Git-Tag: v10.1.0~26^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F8220%2Fhead;p=ceph.git journal: prevent race injecting new records into overflowed object The recorded added after the overflow will not have been detached from the object recorder. Fixes: #15202 Signed-off-by: Jason Dillaman --- diff --git a/src/journal/ObjectRecorder.cc b/src/journal/ObjectRecorder.cc index ba8ff4befbf1..c7f62b4c37a8 100644 --- a/src/journal/ObjectRecorder.cc +++ b/src/journal/ObjectRecorder.cc @@ -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)) {