site_archiver@lists.apple.com Delivered-To: darwin-kernel@lists.apple.com -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Anyway, anyone have an idea as to what may be going on? Here's our vol cap settings: TIA. Brian Bergstrand <http://www.bergstrand.org/brian/> PGP Key ID: 0xB6C7B6A2 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (Darwin) iD8DBQFC7csOedHYW7bHtqIRArWQAKDd7g5Zo/MwMq7XwVgSia/X59TRfACfQQ1a 8JY2pz0Ydjx5+ZsFm+LXUw0= =w516 -----END PGP SIGNATURE----- _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... Well, thanks to Quinn and Mike I solved the Finder missing files problem. Turned out that some assumptions we were making in readdir broke with the new Finder version and our readdir was returning EINVAL. Fixing this opened a whole can of worms that required me to rewrite our EOF detection completely. Now for a new problem. We do not support exchangedata(). This wasn't a problem on Panther, as the system worked around it. And it appears Tiger still does this, but not for our FS. SMB and NFS don't support exchangedata either, but they still work with those apps that use it. The app I'm testing is TextEdit, and using fs_usuage, I can see exchangedata is returning 45 (ENOTSUP) when trying to save a modified file. SMBFS works fine though. So I'm guessing something is wrong in our vol caps. VOL_CAP_INT_EXCHANGEDATA is not set in capabilities, and initially it wasn't set in valid either, but I saw that both NFS and SMBFS set it in valid, so I tried that -- still the same problem. So, I tried to use DYLD_IMAGE_SUFFIX=_debug on TextEdit, but it just would not load the debug versions. Next, I went looking for the exchangedata source on Darwin, but apparently libSystem does not contain actual source code and I just could not figure out where to look for it (tried libc too) -- maybe libSystem is not open source. void volcaps(mount_t mp, vol_capabilities_attr_t *capsp) { // Supported caps capsp->capabilities[VOL_CAPABILITIES_FORMAT] = VOL_CAP_FMT_CASE_PRESERVING /* Not true for DOS NS */ | VOL_CAP_FMT_FAST_STATFS /* NCIOM caches stat info */ #ifdef OSX_KPI | VOL_CAP_FMT_2TB_FILESIZE // We support at least 2TB files. #endif ; #ifdef OSX_KPI capsp->capabilities[VOL_CAPABILITIES_INTERFACES] = 0; // attrlist is handled by the kernel #else capsp->capabilities[VOL_CAPABILITIES_INTERFACES] = VOL_CAP_INT_ATTRLIST; #endif capsp->capabilities[VOL_CAPABILITIES_RESERVED1] = 0; capsp->capabilities[VOL_CAPABILITIES_RESERVED2] = 0; /* Capabilities we know we the meaning of (whether they're supported or not) */ capsp->valid[VOL_CAPABILITIES_FORMAT] = VOL_CAP_FMT_PERSISTENTOBJECTIDS | VOL_CAP_FMT_SYMBOLICLINKS | VOL_CAP_FMT_HARDLINKS | VOL_CAP_FMT_JOURNAL | VOL_CAP_FMT_JOURNAL_ACTIVE | VOL_CAP_FMT_NO_ROOT_TIMES | VOL_CAP_FMT_SPARSE_FILES | VOL_CAP_FMT_ZERO_RUNS | VOL_CAP_FMT_FAST_STATFS #ifdef OSX_KPI | VOL_CAP_FMT_2TB_FILESIZE #endif ; capsp->valid[VOL_CAPABILITIES_INTERFACES] = VOL_CAP_INT_SEARCHFS | VOL_CAP_INT_ATTRLIST | VOL_CAP_INT_NFSEXPORT | VOL_CAP_INT_READDIRATTR | VOL_CAP_INT_EXCHANGEDATA | VOL_CAP_INT_COPYFILE | VOL_CAP_INT_ALLOCATE | VOL_CAP_INT_VOL_RENAME | VOL_CAP_INT_ADVLOCK | VOL_CAP_INT_FLOCK; capsp->valid[VOL_CAPABILITIES_RESERVED1] = 0; capsp->valid[VOL_CAPABILITIES_RESERVED2] = 0; } This email sent to site_archiver@lists.apple.com
participants (1)
-
Brian Bergstrand