Do not restore file system on data/media devices

Change-Id: I600e7e9ce89621400531bceb472387aafc0d6ed8
This commit is contained in:
Ethan Yonker
2014-06-11 12:22:55 -05:00
parent 0ea3be665a
commit 5eac222cfe
2 changed files with 21 additions and 3 deletions
+4
View File
@@ -117,6 +117,10 @@ int fixPermissions::fixDataInternalContexts(void) {
dir = "/data/media/0";
else
dir = "/data/media";
if (!TWFunc::Path_Exists(dir)) {
LOGINFO("fixDataInternalContexts: '%s' does not exist!\n", dir.c_str());
return 0;
}
LOGINFO("Fixing %s contexts\n", dir.c_str());
restorecon(dir, &sb);
d = opendir(dir.c_str());
+17 -3
View File
@@ -1081,7 +1081,7 @@ bool TWPartition::UnMount(bool Display_Error) {
}
bool TWPartition::Wipe(string New_File_System) {
bool wiped = false, update_crypt = false;
bool wiped = false, update_crypt = false, recreate_media = true;
int check;
string Layout_Filename = Mount_Point + "/.layout_version";
@@ -1107,6 +1107,7 @@ bool TWPartition::Wipe(string New_File_System) {
if (Has_Data_Media && Current_File_System == New_File_System) {
wiped = Wipe_Data_Without_Wiping_Media();
recreate_media = false;
} else {
DataManager::GetValue(TW_RM_RF_VAR, check);
@@ -1162,6 +1163,10 @@ bool TWPartition::Wipe(string New_File_System) {
}
}
}
if (Mount_Point == "/data" && Has_Data_Media && recreate_media) {
Recreate_Media_Folder();
}
}
return wiped;
}
@@ -1810,8 +1815,15 @@ bool TWPartition::Restore_Tar(string restore_folder, string Restore_File_System)
return false;
} else {
gui_print("Wiping %s...\n", Display_Name.c_str());
if (!Wipe(Restore_File_System))
return false;
if (Has_Data_Media && Mount_Point == "/data" && Restore_File_System != Current_File_System) {
gui_print("WARNING: This /data backup was made with %s file system!\n", Restore_File_System.c_str());
gui_print("The backup may not boot unless you change back to %s.\n", Restore_File_System.c_str());
if (!Wipe_Data_Without_Wiping_Media())
return false;
} else {
if (!Wipe(Restore_File_System))
return false;
}
}
TWFunc::GUI_Operation_Text(TW_RESTORE_TEXT, Backup_Display_Name, "Restoring");
gui_print("Restoring %s...\n", Backup_Display_Name.c_str());
@@ -1980,7 +1992,9 @@ void TWPartition::Recreate_Media_Folder(void) {
#ifdef HAVE_SELINUX
perms.fixDataInternalContexts();
#endif
// Toggle mount to ensure that "internal sdcard" gets mounted
PartitionManager.UnMount_By_Path(Symlink_Mount_Point, true);
PartitionManager.Mount_By_Path(Symlink_Mount_Point, true);
}
}