Expose VNOP_MONITOR/vnode_notify publicly

Originator:brian.campbell
Number:rdar://28020707 Date Originated:25-Aug-2016 07:45 PM
Status:Open Resolved:Duplicate of 18649336
Product:OS X SDK Product Version:
Classification:Enhancement Reproducible:
 
Summary:
I have a distributed filesystem, which uses a local OS X client to provide performance and high availability, in which the client can connect to any one of several storage nodes to fulfill requests, falling back seamlessly if any one node goes down.

This works well for producing a high-availability and high-performance filesystem. However, there are issues with using the local client, rather than re-exporting the filesystem on the server side using AFP or SMB. For instance, if you have a Finder window open, and files are created on another client, the list of files does not update in the Finder, since the Finder relies on filesystem change notifications. If we re-export via AFP or SMB, we do get file change notifications and the Finder update appropriately, but that has performance implications and we lose the ability to have no single point of failure, as the server re-exporting the filesystem becomes a single point of failure.

Steps to Reproduce:
1. Create a filesystem kext. For expedience, maybe use OS X FUSE.
2. Discover that there is no way to call vnode_notify or register a VNOP_MONITOR handler.

Expected Results:
I would expect that APIs which are available to Apple's own filesystems would be available to third party filesystems as well, allowing third party filesystem to introduce new features without having a limited set of functionality available.

Actual Results:
The actual result is that there are private APIs, that are inaccessible from third-party filesystem implementations. This means having to trade off features, either by re-using existing filesystem protocols but living with the limitations, or not being able to provide as good an experience to users as is possible with the native network filesystems. 

Version:
OS X 10.10.5 (14F1808)
Darwin 14.5.0

Notes:
If enterprising, one could figure out how to link against these private APIs, and then have a kext that may not be binary compatible between versions of OS X, but would provide all of the required features. According to this mailing list thread, that appears to be what Thursby's DAVE/ADmitMac: http://lists.apple.com/archives/filesystem-dev/2014/Oct/msg00005.html

According to the above thread, this request has previously been submitted as rdar://8509887

Configuration:
All versions of OS X that I checked, 10.8-10.11.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!