Re-arrange handling of settings storage partition

Sometimes we received an error about being unable to locate
storage partition because the DataManager would attempt to access
the PartitionManager before we finished adding the storage
partitions to the vector.

Change-Id: I0ce1778938d308b1eb17de46a192ecd52489cad3
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 73e2285..f094734 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -56,7 +56,7 @@
 int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error) {
 	FILE *fstabFile;
 	char fstab_line[MAX_FSTAB_LINE_LENGTH];
-	bool Found_Settings_Storage = false;
+	TWPartition* settings_partition = NULL;
 
 	fstabFile = fopen(Fstab_Filename.c_str(), "rt");
 	if (fstabFile == NULL) {
@@ -76,9 +76,8 @@
 		memset(fstab_line, 0, sizeof(fstab_line));
 
 		if (partition->Process_Fstab_Line(line, Display_Error)) {
-			if (!Found_Settings_Storage && partition->Is_Settings_Storage) {
-				Found_Settings_Storage = true;
-				Setup_Settings_Storage_Partition(partition);
+			if (!settings_partition && partition->Is_Settings_Storage) {
+				settings_partition = partition;
 			} else {
 				partition->Is_Settings_Storage = false;
 			}
@@ -88,15 +87,15 @@
 		}
 	}
 	fclose(fstabFile);
-	if (!Found_Settings_Storage) {
+	if (!settings_partition) {
 		std::vector<TWPartition*>::iterator iter;
 		for (iter = Partitions.begin(); iter != Partitions.end(); iter++) {
 			if ((*iter)->Is_Storage) {
-				Setup_Settings_Storage_Partition((*iter));
+				settings_partition = (*iter);
 				break;
 			}
 		}
-		if (!Found_Settings_Storage)
+		if (!settings_partition)
 			LOGERR("Unable to locate storage partition for storing settings file.\n");
 	}
 	if (!Write_Fstab()) {
@@ -107,6 +106,7 @@
 	}
 	Update_System_Details();
 	UnMount_Main_Partitions();
+	Setup_Settings_Storage_Partition(settings_partition);
 	return true;
 }