DriveSetup: propose to force unmount if umount failed
* Propose to repeat unmount attemp with force unmount flag in case the unmount attempt was unsuccsessful; * Fixes #8548; - GCI 2013
This commit is contained in:
committed by
Siarzhuk Zharski
parent
5ff76056f7
commit
93d99e8353
@@ -39,6 +39,7 @@
|
|||||||
#include <Volume.h>
|
#include <Volume.h>
|
||||||
#include <VolumeRoster.h>
|
#include <VolumeRoster.h>
|
||||||
|
|
||||||
|
#include <fs_volume.h>
|
||||||
#include <tracker_private.h>
|
#include <tracker_private.h>
|
||||||
|
|
||||||
#include "ChangeParametersPanel.h"
|
#include "ChangeParametersPanel.h"
|
||||||
@@ -864,6 +865,25 @@ MainWindow::_Unmount(BDiskDevice* disk, partition_id selectedPartition)
|
|||||||
BPath path;
|
BPath path;
|
||||||
partition->GetMountPoint(&path);
|
partition->GetMountPoint(&path);
|
||||||
status_t status = partition->Unmount();
|
status_t status = partition->Unmount();
|
||||||
|
if (status != B_OK) {
|
||||||
|
BString message = B_TRANSLATE("Could not unmount partition");
|
||||||
|
message << " \"" << partition->ContentName() << "\":\n\t"
|
||||||
|
<< strerror(status) << "\n\n"
|
||||||
|
<< B_TRANSLATE("Should unmounting be forced?\n\n"
|
||||||
|
"Note: If an application is currently writing to the volume, "
|
||||||
|
"unmounting it now might result in loss of data.\n");
|
||||||
|
|
||||||
|
BAlert* alert = new BAlert(B_TRANSLATE("Force unmount"), message,
|
||||||
|
B_TRANSLATE("Cancel"), B_TRANSLATE("Force unmount"), NULL,
|
||||||
|
B_WIDTH_AS_USUAL, B_WARNING_ALERT);
|
||||||
|
alert->SetShortcut(0, B_ESCAPE);
|
||||||
|
|
||||||
|
if (alert->Go() == 1)
|
||||||
|
status = partition->Unmount(B_FORCE_UNMOUNT);
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (status != B_OK) {
|
if (status != B_OK) {
|
||||||
_DisplayPartitionError(
|
_DisplayPartitionError(
|
||||||
B_TRANSLATE("Could not unmount partition %s."),
|
B_TRANSLATE("Could not unmount partition %s."),
|
||||||
|
|||||||
Reference in New Issue
Block a user