eeze mount operations will now only retry up to 3 times when they fail before emitting an error event

SVN revision: 74736
This commit is contained in:
Mike Blumenkrantz 2012-08-01 12:43:55 +00:00
parent a0970878cc
commit 52c05aaa01
3 changed files with 30 additions and 9 deletions

View File

@ -114,3 +114,7 @@
2012-07-30 Mike Blumenkrantz
* Add EEZE_DISK_MOUNTOPT_NODEV option for disabling device nodes on mount
2012-07-31 Mike Blumenkrantz
* Prevent mount operations from retrying infinitely on failure

View File

@ -159,9 +159,17 @@ _eeze_disk_mount_result_handler(void *data __UNUSED__, int type __UNUSED__, Ecor
break;
default:
INF("Could not unmount disk, retrying");
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->unmount_cmd), disk);
eeze_events = eina_list_append(eeze_events, disk);
if (disk->mount_fail_count++ < 3)
{
INF("Could not unmount disk, retrying");
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->unmount_cmd), disk);
eeze_events = eina_list_append(eeze_events, disk);
}
else
{
disk->mount_fail_count = 0;
_eeze_disk_mount_error_handler(disk, "Maximimum number of mount-related failures reached");
}
return ECORE_CALLBACK_RENEW;
}
else
@ -184,12 +192,20 @@ _eeze_disk_mount_result_handler(void *data __UNUSED__, int type __UNUSED__, Ecor
break;
default:
INF("Could not eject disk, retrying");
if (disk->mount_status & EEZE_DISK_UNMOUNTING)
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->unmount_cmd), disk);
else
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->eject_cmd), disk);
eeze_events = eina_list_append(eeze_events, disk);
if (disk->mount_fail_count++ < 3)
{
INF("Could not eject disk, retrying");
if (disk->mount_status & EEZE_DISK_UNMOUNTING)
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->unmount_cmd), disk);
else
disk->mounter = ecore_exe_run(eina_strbuf_string_get(disk->eject_cmd), disk);
eeze_events = eina_list_append(eeze_events, disk);
}
else
{
disk->mount_fail_count = 0;
_eeze_disk_mount_error_handler(disk, "Maximimum number of mount-related failures reached");
}
return ECORE_CALLBACK_RENEW;
}
return ECORE_CALLBACK_RENEW;

View File

@ -52,6 +52,7 @@ struct _Eeze_Disk
Eina_Bool mounted : 1;
Ecore_Exe *mounter;
Ecore_Timer *mount_fail_delay;
unsigned int mount_fail_count;
int fail_pol_check;
const char *syspath;