diff --git a/data.cpp b/data.cpp
index cf9dd24..9225535 100755
--- a/data.cpp
+++ b/data.cpp
@@ -1043,6 +1043,11 @@
 	char version[255];
 
 	std::string cacheDir = TWFunc::get_cache_dir();
+	if (cacheDir.empty()) {
+		LOGINFO("Unable to find cache directory\n");
+		return;
+	}
+
 	std::string recoveryCacheDir = cacheDir + "recovery/";
 
 	if (cacheDir == NON_AB_CACHE_DIR) {
@@ -1053,7 +1058,7 @@
 	}
 	if (!TWFunc::Path_Exists(recoveryCacheDir)) {
 		LOGINFO("Recreating %s folder.\n", recoveryCacheDir.c_str());
-		if (mkdir(recoveryCacheDir.c_str(), S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP) != 0) {
+		if (!TWFunc::Create_Dir_Recursive(recoveryCacheDir.c_str(), S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP, 0, 0)) {
 			LOGERR("DataManager::Output_Version -- Unable to make %s: %s\n", recoveryCacheDir.c_str(), strerror(errno));
 			return;
 		}
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 26a48e5..34ba6ae 100755
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -2222,7 +2222,13 @@
 void TWPartitionManager::Output_Storage_Fstab(void) {
 	std::vector<TWPartition*>::iterator iter;
 	char storage_partition[255];
-	string Temp;
+	std::string Temp;
+	std::string cacheDir = TWFunc::get_cache_dir();
+
+	if (cacheDir.empty()) {
+		LOGINFO("Unable to find cache directory\n");
+		return;
+	}
 
 	std::string storageFstab = TWFunc::get_cache_dir() + "recovery/storage.fstab";
 	FILE *fp = fopen(storageFstab.c_str(), "w");
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 0730ca8..28a0f0c 100755
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -535,7 +535,7 @@
 
 	if (!TWFunc::Path_Exists(recoveryDir)) {
 		LOGINFO("Recreating %s folder.\n", recoveryDir.c_str());
-		if (mkdir(recoveryDir.c_str(),  S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP) != 0) {
+		if (!Create_Dir_Recursive(recoveryDir,  S_IRWXU | S_IRWXG | S_IWGRP | S_IXGRP, 0, 0)) {
 			LOGINFO("Unable to create %s folder.\n", recoveryDir.c_str());
 		}
 	}
@@ -1171,7 +1171,15 @@
 
 std::string TWFunc::get_cache_dir() {
 	if (PartitionManager.Find_Partition_By_Path(NON_AB_CACHE_DIR) == NULL) {
-		return AB_CACHE_DIR;
+		if (PartitionManager.Find_Partition_By_Path(NON_AB_CACHE_DIR) == NULL) {
+			if (PartitionManager.Find_Partition_By_Path(PERSIST_CACHE_DIR) == NULL) {
+				LOGINFO("Unable to find a directory to store TWRP logs.");
+				return "";
+			}
+			return PERSIST_CACHE_DIR;
+		} else {
+			return AB_CACHE_DIR;
+		}
 	}
 	else {
 		return NON_AB_CACHE_DIR;
diff --git a/twrp-functions.hpp b/twrp-functions.hpp
index 669a9e9..a892e75 100755
--- a/twrp-functions.hpp
+++ b/twrp-functions.hpp
@@ -28,6 +28,7 @@
 
 #define NON_AB_CACHE_DIR "/cache/"
 #define AB_CACHE_DIR "/data/cache/"
+#define PERSIST_CACHE_DIR "/persist/cache/"
 
 typedef enum
 {
