diff --git a/crypto/ext4crypt/Ext4CryptPie.cpp b/crypto/ext4crypt/Ext4CryptPie.cpp
index d76ca24..548e4e4 100644
--- a/crypto/ext4crypt/Ext4CryptPie.cpp
+++ b/crypto/ext4crypt/Ext4CryptPie.cpp
@@ -208,11 +208,11 @@
 }
 
 static bool is_wrapped_key_supported_common(const std::string& mount_point) {
-    LOG(DEBUG) << "Determining wrapped-key support for " << mount_point;
+    LOG(DEBUG) << "Determining wrapped-key support for " << mount_point << std::endl;
     std::string wrapped_key_supported = android::base::GetProperty("fbe.data.wrappedkey", "false");
-    LOG(DEBUG) << "fbe.data.wrappedkey = " << wrapped_key_supported;
+    LOG(DEBUG) << "fbe.data.wrappedkey = " << wrapped_key_supported << std::endl;
     if (mount_point == DATA_MNT_POINT && wrapped_key_supported == "true") {
-        LOG(DEBUG) << "Wrapped key supported on " << mount_point;
+        LOG(DEBUG) << "Wrapped key supported on " << mount_point << std::endl;
         return true;
     } else {
         return false;
diff --git a/crypto/ext4crypt/KeyStorage4.cpp b/crypto/ext4crypt/KeyStorage4.cpp
index b91d6e4..b086791 100644
--- a/crypto/ext4crypt/KeyStorage4.cpp
+++ b/crypto/ext4crypt/KeyStorage4.cpp
@@ -177,12 +177,12 @@
             return true;
         }
         if (ret != km::ErrorCode::KEY_REQUIRES_UPGRADE) return false;
-        LOG(DEBUG) << "Upgrading key";
+        LOG(DEBUG) << "Upgrading key" << std::endl;
         std::string kmKeyStr(reinterpret_cast<const char*>(kmKey.data()), kmKey.size());
         std::string newKey;
         if (!keymaster.upgradeKey(kmKeyStr, km::AuthorizationSet(), &newKey)) return false;
         memcpy(reinterpret_cast<void*>(kmKey.data()), newKey.c_str(), kmKey.size());
-        LOG(INFO) << "Key upgraded";
+        LOG(INFO) << "Key upgraded" << std::endl;
         export_again = true;
     }
     //Should never come here
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 85dc79d..41d8af2 100755
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -296,7 +296,14 @@
 				while (!Decrypt_Data->Mount(false) && --retry_count)
 					usleep(500);
 				if (Decrypt_Data->Mount(false)) {
-					Decrypt_Data->Decrypt_FBE_DE();
+					if (!Decrypt_Data->Decrypt_FBE_DE()) {
+						LOGINFO("Trying wrapped key.\n");
+						property_set("fbe.data.wrappedkey", "true");
+						if (!Decrypt_Data->Decrypt_FBE_DE()) {
+							LOGERR("Unable to decrypt FBE device\n");
+						}
+					}
+
 				} else {
 					LOGINFO("Failed to mount data after metadata decrypt\n");
 				}
