diff --git a/src/apps/drivesetup/MainWindow.cpp b/src/apps/drivesetup/MainWindow.cpp index a6478f08a2..0761f6e76f 100644 --- a/src/apps/drivesetup/MainWindow.cpp +++ b/src/apps/drivesetup/MainWindow.cpp @@ -626,11 +626,14 @@ MainWindow::_Unmount(BDiskDevice* disk, partition_id selectedPartition) } if (partition->IsMounted()) { + BPath path; + partition->GetMountPoint(&path); status_t ret = partition->Unmount(); if (ret < B_OK) { _DisplayPartitionError("Could not unmount partition %s.", partition, ret); } else { + rmdir(path.Path()); // successful unmount, adapt to the changes _ScanDrives(); } diff --git a/src/kits/tracker/AutoMounter.cpp b/src/kits/tracker/AutoMounter.cpp index 460996b6c3..9b705f0003 100644 --- a/src/kits/tracker/AutoMounter.cpp +++ b/src/kits/tracker/AutoMounter.cpp @@ -232,18 +232,22 @@ AutoMounter::_UnmountAndEjectVolume(BMessage *message) BDiskDevice device; if (roster.GetPartitionWithID(id, &device, &partition) != B_OK) return; + BPath path; + if (partition->GetMountPoint(&path) == B_OK) + { + status_t status = partition->Unmount(); + if (status < B_OK) { + if (!_ForceUnmount(partition->ContentName(), status)) + return; - status_t status = partition->Unmount(); - if (status < B_OK) { - if (!_ForceUnmount(partition->ContentName(), status)) - return; + status = partition->Unmount(B_FORCE_UNMOUNT); + } - status = partition->Unmount(B_FORCE_UNMOUNT); + if (status < B_OK) + _ReportUnmountError(partition->ContentName(), status); + + rmdir(path.Path()); } - - if (status < B_OK) - _ReportUnmountError(partition->ContentName(), status); - return; }