Re: Closing an IOUserClient
site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com I've been experimenting with tracking when to close the IOUserClient. The problem is now that I don't know the proper way to close the IOUserClient from it's provider. I'm calling client->terminate( kIOServiceTerminate | kIOServiceSynchronous ). The connection to the provider is being closed, but the IOUserClient instance is not being removed. That is I cannot unload the kext because there are still instances of the IOUserClient class. What is the correct way to remove an IOUserClient instance from a provider? --- At Tue, 18 Dec 2007 18:29:26 -0800, Duane Murphy wrote:
I have an IOUserClient subclass whose provider is a file system filter. When the file system is unloaded/unmounted the user client remains connected. This causes Disk Utility and friends to be unhappy operating on the disk (ie partitioning).
I would have expected the terminate() set of calls to cause the user client to unload. The UserClient is not being called at all during unmounting.
Further testing shows that unmounting a file system doesn't actually remove the kext (it's above the partition layer). My suspicion is that unmounting a file system is much different than unloading the kext.
More testing shows that unloading the kext does cause the IOUserClient to be terminated and closed.
Unfortunately, Disk Utility and friends can't operate on the disk until the IOUserClient instance is closed. I get a "Resource Busy" error.
How should I handle this situation? I figure I can track IOUserClient instances, but how would I know that I need to disconnect them?
Thanks for the tips,
...Duane _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... This email sent to site_archiver@lists.apple.com
participants (1)
-
Duane Murphy