From: Jason Dillaman Date: Thu, 29 Sep 2016 12:36:53 +0000 (-0400) Subject: journal: delay moving overflowed buffers until quiesced X-Git-Tag: v11.1.0~709^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4483531aa3aa3d0f298778062e2b9a339ad05075;p=ceph.git journal: delay moving overflowed buffers until quiesced Signed-off-by: Jason Dillaman --- diff --git a/src/journal/ObjectRecorder.cc b/src/journal/ObjectRecorder.cc index f329c1fbed7..e4fe777e263 100644 --- a/src/journal/ObjectRecorder.cc +++ b/src/journal/ObjectRecorder.cc @@ -254,7 +254,6 @@ void ObjectRecorder::handle_append_flushed(uint64_t tid, int r) { if (r == -EOVERFLOW || m_overflowed) { if (iter != m_in_flight_appends.end()) { m_overflowed = true; - append_overflowed(tid); } else { // must have seen an overflow on a previous append op assert(r == -EOVERFLOW && m_overflowed); @@ -262,6 +261,7 @@ void ObjectRecorder::handle_append_flushed(uint64_t tid, int r) { // notify of overflow once all in-flight ops are complete if (m_in_flight_tids.empty() && !m_aio_scheduled) { + append_overflowed(); notify_handler(); } return; @@ -293,13 +293,12 @@ void ObjectRecorder::handle_append_flushed(uint64_t tid, int r) { m_in_flight_flushes_cond.Signal(); } -void ObjectRecorder::append_overflowed(uint64_t tid) { +void ObjectRecorder::append_overflowed() { ldout(m_cct, 10) << __func__ << ": " << m_oid << " append overflowed" << dendl; assert(m_lock->is_locked()); assert(!m_in_flight_appends.empty()); - assert(m_in_flight_appends.begin()->first == tid); cancel_append_task(); diff --git a/src/journal/ObjectRecorder.h b/src/journal/ObjectRecorder.h index 9b285f81908..ec1eb3647d0 100644 --- a/src/journal/ObjectRecorder.h +++ b/src/journal/ObjectRecorder.h @@ -160,7 +160,7 @@ private: bool append(const AppendBuffer &append_buffer, bool *schedule_append); bool flush_appends(bool force); void handle_append_flushed(uint64_t tid, int r); - void append_overflowed(uint64_t tid); + void append_overflowed(); void send_appends(AppendBuffers *append_buffers); void send_appends_aio();