Fix "eject when unmounting".
It seems getting the device from the partition after it is unmounted does not work reliably. Get the device much earlier in the function, before actually unmounting it. Fixes #2630.
This commit is contained in:
@@ -616,11 +616,15 @@ void
|
||||
AutoMounter::_UnmountAndEjectVolume(BPartition* partition, BPath& mountPoint,
|
||||
const char* name)
|
||||
{
|
||||
BDiskDevice device;
|
||||
BDiskDevice deviceStorage;
|
||||
BDiskDevice* device;
|
||||
if (partition == NULL) {
|
||||
// Try to retrieve partition
|
||||
BDiskDeviceRoster().FindPartitionByMountPoint(mountPoint.Path(),
|
||||
&device, &partition);
|
||||
&deviceStorage, &partition);
|
||||
device = &deviceStorage;
|
||||
} else {
|
||||
device = partition->Device();
|
||||
}
|
||||
|
||||
status_t status;
|
||||
@@ -678,10 +682,10 @@ AutoMounter::_UnmountAndEjectVolume(BPartition* partition, BPath& mountPoint,
|
||||
bool fHasMounted;
|
||||
} visitor;
|
||||
|
||||
partition->Device()->VisitEachDescendant(&visitor);
|
||||
device->VisitEachDescendant(&visitor);
|
||||
|
||||
if (!visitor.HasMountedPartitions())
|
||||
partition->Device()->Eject();
|
||||
device->Eject();
|
||||
}
|
||||
|
||||
// remove the directory if it's a directory in rootfs
|
||||
|
||||
Reference in New Issue
Block a user