Handle storage devices that are slow to mount
This commit is contained in:
@@ -249,6 +249,7 @@ bool TWPartition::Process_Fstab_Line(string Line, bool Display_Error) {
|
||||
Removable = true;
|
||||
#ifndef RECOVERY_SDCARD_ON_DATA
|
||||
Setup_AndSec();
|
||||
Mount_Storage_Retry();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -258,6 +259,7 @@ bool TWPartition::Process_Fstab_Line(string Line, bool Display_Error) {
|
||||
Storage_Path = EXPAND(TW_INTERNAL_STORAGE_PATH);
|
||||
#ifndef RECOVERY_SDCARD_ON_DATA
|
||||
Setup_AndSec();
|
||||
Mount_Storage_Retry();
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
@@ -266,6 +268,7 @@ bool TWPartition::Process_Fstab_Line(string Line, bool Display_Error) {
|
||||
Storage_Path = "/emmc";
|
||||
#ifndef RECOVERY_SDCARD_ON_DATA
|
||||
Setup_AndSec();
|
||||
Mount_Storage_Retry();
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -444,6 +447,18 @@ void TWPartition::Find_Real_Block_Device(string& Block, bool Display_Error) {
|
||||
}
|
||||
}
|
||||
|
||||
void TWPartition::Mount_Storage_Retry(void) {
|
||||
// On some devices, storage doesn't want to mount right away, retry and sleep
|
||||
if (!Mount(false)) {
|
||||
int retry_count = 5;
|
||||
while (retry_count > 0 && !Mount(false)) {
|
||||
usleep(500000);
|
||||
retry_count--;
|
||||
}
|
||||
Mount(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool TWPartition::Find_MTD_Block_Device(string MTD_Name) {
|
||||
FILE *fp = NULL;
|
||||
char line[255];
|
||||
|
||||
@@ -133,6 +133,7 @@ private:
|
||||
bool Make_Dir(string Path, bool Display_Error); // Creates a directory if it doesn't already exist
|
||||
bool Find_MTD_Block_Device(string MTD_Name); // Finds the mtd block device based on the name from the fstab
|
||||
void Recreate_AndSec_Folder(void); // Recreates the .android_secure folder
|
||||
void Mount_Storage_Retry(void); // Tries multiple times with a half second delay to mount a device in case storage is slow to mount
|
||||
|
||||
friend class TWPartitionManager;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user