A bit more information:
It would appear that the problems I am having are related to the way
that MacFuse integrates with the disk arbitration framework.
Logs for 3 separate scenarios follow:
I tested 3 separate scenarios, and have quoted the logs from disktool
below.
------------------------------------------------------------------------
--------
First, with the ping_diskarb option set, and the disk being ejected
using diskutil. This scenario works, for the most part.
Insert disk:
> ***Disk Appeared ('disk1',Mountpoint = '/Volumes/UDF_102', fsType =
> 'SAI_udf', volName = 'UDF_102')
> ***Notifications Complete for type 1
> ***Disk Appeared ('/Volumes/UDF_102?owner=0',Mountpoint = '/Volumes/
> UDF_102', fsType = '', volName = '')
> ***Notifications Complete for type 1
You can see that 2 separate "Disk Appeared" events are being logged.
One showing /Volumes/UDF_102 associated with disk1, and a second with
no device association.
At this point, I ejected the disk using diskutil.
> The-Dark-Side:~ rona$ diskutil eject disk1
> ***Responding yes to unmount - disk1
> ***Disk Unmounted('disk1')
> ***Notifications Complete for type 4
> ***Disk Unmounted('/Volumes/UDF_102?owner=0')
> ***Disk Ejected('/Volumes/UDF_102?owner=0')
> ***Notifications Complete for type 4
> ***Notifications Complete for type 16
> ***Responding yes to eject - disk1
> ***Disk NOT Ejected('disk1'), errorCode(16), dissenter(-1)
> ***Notifications Complete for type 16
> ***Disk Ejected('disk1')
> ***Notifications Complete for type 16
The volume was unmounted, and the disk was ejected. However, the
mount point (/Volumes/UDF_102) was not deleted.
------------------------------------------------------------------------
--------
Second, with the ping_diskarb option set, but this time using Finder
to eject the volume.
Insert disk:
> ***Disk Appeared ('disk1',Mountpoint = '/Volumes/UDF_102 1', fsType
> = 'SAI_udf', volName = 'UDF_102')
> ***Notifications Complete for type 1
> ***Disk Appeared ('/Volumes/UDF_102 1?owner=0',Mountpoint = '/
> Volumes/UDF_102 1', fsType = '', volName = '')
> ***Notifications Complete for type 1
Again, 2 separate "Disk Appeared" events.
At this point, I selected the volume's icon in finder, and ejected it
using the icon's contextual menu.
> ***Responding yes to unmount - /Volumes/UDF_102 1?owner=0
> ***Disk Unmounted('/Volumes/UDF_102 1?owner=0')
> ***Disk Ejected('/Volumes/UDF_102 1?owner=0')
> ***Notifications Complete for type 4
> ***Notifications Complete for type 16
The volume was unmounted, but the disk was not ejected. Also, the
mount point (/Volumes/UDF_102 1) was not deleted.
If I then eject the disk using diskutil, it is ejected after a 5-10
second wait, and the "Device Removal" error dialog is displayed.
> ***Responding yes to unmount - disk1
> ***Disk NOT Unmounted('disk1'), errorCode(16), dissenter(-1)
> ***Notifications Complete for type 4
> ***Responding yes to eject - disk1
> ***Disk NOT Ejected('disk1'), errorCode(16), dissenter(-1)
> ***Notifications Complete for type 16
> ***Disk Unmounted('disk1')
> ***Disk Ejected('disk1')
> ***Notifications Complete for type 4
> ***Notifications Complete for type 16
------------------------------------------------------------------------
--------
Finally, I tried using the noping_diskarb option. In this case, I've
had
Insert disk:
> ***Disk Appeared ('disk1',Mountpoint = '/Volumes/UDF_102', fsType =
> 'SAI_udf', volName = 'UDF_102')
> ***Notifications Complete for type 1
At this point, the volume's icon does not always appear on the
desktop. When it doesn't appear, it can still be accessed directly
through it's mount point.
When it does appear, it cannot be unmounted using Finder. There is
an eject button alongside the filesystem's icon in the sidebar, but
clicking it does nothing.
It can be ejected using diskutil.
> The-Dark-Side:~ rona$ diskutil eject disk1
> ***Responding yes to unmount - disk1
> ***Disk Unmounted('disk1')
> ***Notifications Complete for type 4
> ***Responding yes to eject - disk1
> ***Disk NOT Ejected('disk1'), errorCode(16), dissenter(-1)
> ***Notifications Complete for type 16
> ***Disk Ejected('disk1')
> ***Notifications Complete for type 16
The volume was unmounted, and the disk was ejected. Still, the mount
point (/Volumes/UDF_102) was not deleted.
------------------------------------------------------------------------
--------
One other important bit of information is that when I use diskutil to
eject the volume, I must identify the volume by it's device
identifier, rather than by it's mount point. If I use it's mount
point, diskutil simply displays its usage info, without attempting to
eject the volume.
I'm pretty much at a loss how to proceed here. It seems that I am in
a catch-22 situation.
diskutil would appear to be generating a disk arbitration entry for
the volume which works correctly when used by diskutil, but not when
used by Finder.
MacFuse generates a separate disk arbitration entry for the volume,
which can be used by Finder to unmount the volume, but not to eject
the disk.
Ideally, there should be only a single disk arbitration entry
generated for any given volume, which should work both from diskutil,
and from the finder.
Frankly, I would expect the NTFS plugin to have the same problems.
Unfortunately, I haven't been able to test it because the patches for
MacFuse don't work with the latest sources for the fuse ntfs plugin
(ntfs-3g-1.913).
If anyone has any suggestions, I'm wide open.
Thanks,
Ron Aldrich
Software Architects, Inc.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"macfuse-devel" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/macfuse-devel?hl=en
-~----------~----~----~----~------~----~------~--~---