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
-~----------~----~----~----~------~----~------~--~---

Reply via email to