diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-12-06 00:39:14 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-12-06 00:39:14 +0900 |
| commit | 56c498bcbfa1b7645c75e39142ac9f6c6ca369c6 (patch) | |
| tree | a539d2585134ce545dcfcaee0ee4436e4049cd10 /src/BtPieceMessage.cc | |
| parent | 9ed8502e742452568695181014410fe924f45e26 (diff) | |
Clear write cache on Segment::clear and Piece::clearAllBlock
Diffstat (limited to 'src/BtPieceMessage.cc')
| -rw-r--r-- | src/BtPieceMessage.cc | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index f2e7dccd..108b39ce 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -253,10 +253,7 @@ bool BtPieceMessage::checkPieceHash(const SharedHandle<Piece>& piece) getPieceStorage()->getDiskAdaptor()) == downloadContext_->getPieceHash(piece->getIndex()); } catch(RecoverableException& e) { - piece->clearAllBlock(); - if(piece->getWrDiskCacheEntry()) { - piece->clearWrCache(getPieceStorage()->getWrDiskCache()); - } + piece->clearAllBlock(getPieceStorage()->getWrDiskCache()); throw; } } @@ -269,8 +266,7 @@ void BtPieceMessage::onNewPiece(const SharedHandle<Piece>& piece) piece->flushWrCache(getPieceStorage()->getWrDiskCache()); if(piece->getWrDiskCacheEntry()->getError() != WrDiskCacheEntry::CACHE_ERR_SUCCESS) { - piece->clearAllBlock(); - piece->clearWrCache(getPieceStorage()->getWrDiskCache()); + piece->clearAllBlock(getPieceStorage()->getWrDiskCache()); throw DOWNLOAD_FAILURE_EXCEPTION2 (fmt("Write disk cache flush failure index=%lu", static_cast<unsigned long>(piece->getIndex())), @@ -289,10 +285,7 @@ void BtPieceMessage::onWrongPiece(const SharedHandle<Piece>& piece) A2_LOG_INFO(fmt(MSG_GOT_WRONG_PIECE, getCuid(), static_cast<unsigned long>(piece->getIndex()))); - if(piece->getWrDiskCacheEntry()) { - piece->clearWrCache(getPieceStorage()->getWrDiskCache()); - } - piece->clearAllBlock(); + piece->clearAllBlock(getPieceStorage()->getWrDiskCache()); piece->destroyHashContext(); getBtRequestFactory()->removeTargetPiece(piece); } |
