From 154ee5c98da5f850a66167804dacbb479554704d Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Thu, 27 Jul 2017 11:53:06 +0900 Subject: [PATCH] Add forceCleanUp retrys when it sometimes fails Signed-off-by: Sungbae Yoo Change-Id: I800def0118b23e29ad3db513dfd507e55d0f064d --- server/engine/encryption/dmcrypt-engine.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/server/engine/encryption/dmcrypt-engine.cpp b/server/engine/encryption/dmcrypt-engine.cpp index c4cccfb..5cd3163 100644 --- a/server/engine/encryption/dmcrypt-engine.cpp +++ b/server/engine/encryption/dmcrypt-engine.cpp @@ -271,7 +271,15 @@ void DMCryptEngine::encrypt(const DMCryptEngine::data &key, unsigned int options { // Force filesystem check via fcsf might be able to avoid fail situation during encryption. Ext4Tool ext4Source(source); - ext4Source.forceCleanUp(); + + for (int retry = 0; retry < 32; retry++) { + try { + ext4Source.forceCleanUp(); + } catch (runtime::Exception &e) { + continue; + } + break; + } // create crypto type device mapping layer to mount the plain partition // should be encrypted here. @@ -308,7 +316,15 @@ void DMCryptEngine::decrypt(const DMCryptEngine::data &key, unsigned int options // Force filesystem check via fcsf might be able to avoid fail situation during decryption. Ext4Tool ext4CryptoBlkDev(cryptoBlkDev); - ext4CryptoBlkDev.forceCleanUp(); + + for (int retry = 0; retry < 32; retry++) { + try { + ext4CryptoBlkDev.forceCleanUp(); + } catch (runtime::Exception &e) { + continue; + } + break; + } std::function isTarget; if (!(options & OPTION_INCLUDE_UNUSED_REGION)) { -- 2.7.4