From e6393525cfbadcd441c4e686a519ff315c4aeb9b Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Mon, 18 Apr 2011 14:34:14 -0700 Subject: [PATCH] journaler: check return code on _finish_write_head. If we get an error code and assume we successfully wrote the head, there are going to be all kinds of issues on replay! Signed-off-by: Greg Farnum --- src/osdc/Journaler.cc | 5 +++-- src/osdc/Journaler.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index 2cab77c402259..96182538686dd 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -309,7 +309,7 @@ public: Context *oncommit; C_WriteHead(Journaler *l, Header& h_, Context *c) : ls(l), h(h_), oncommit(c) {} void finish(int r) { - ls->_finish_write_head(h, oncommit); + ls->_finish_write_head(r, h, oncommit); } }; @@ -336,8 +336,9 @@ void Journaler::write_head(Context *oncommit) new C_WriteHead(this, last_written, oncommit)); } -void Journaler::_finish_write_head(Header &wrote, Context *oncommit) +void Journaler::_finish_write_head(int r, Header &wrote, Context *oncommit) { + assert(r >= 0); // we can't really recover from write errors here assert(!readonly); dout(10) << "_finish_write_head " << wrote << dendl; last_committed = wrote; diff --git a/src/osdc/Journaler.h b/src/osdc/Journaler.h index e3cf1d271fa87..637b06429c07c 100644 --- a/src/osdc/Journaler.h +++ b/src/osdc/Journaler.h @@ -138,7 +138,7 @@ private: // header utime_t last_wrote_head; - void _finish_write_head(Header &wrote, Context *oncommit); + void _finish_write_head(int r, Header &wrote, Context *oncommit); class C_WriteHead; friend class C_WriteHead; -- 2.39.5