From freebsd-hackers Wed Jul 31 18:29:44 1996 From: Terry Lambert Date: Wed, 31 Jul 1996 18:29:44 +0000 To: freebsd-hackers Subject: Re: anyone working on upgrading the msdosfs to NetBSD levels? X-MARC-Message: https://marc.info/?l=freebsd-hackers&m=94346786426575 > The FAT fs primitives are done and tested and I'm currently working > on VFAT support. Before you get too far on that, I have the algorithm it uses to avoid short name name space collisions. It's not pretty, but it works, and I think that was all Microsoft really cared about. Unfortunately, since the struct nameidata is not yet treated as an opaque object in a lot of places, it's not possible to do the lookup in multiple name spaces correctly in the vfs_lookup.c, where it belongs. I'm also not sure about the long name space storage which is in ISO-10646/16 (16 bit Unicode), since it is not possible to pass Unicode across the lookup interface (this will be a problem for any NTFS as well -- Linux is unfortunately way ahead of BSD here). The long names are case sensitive on storage and case insensitive on lookup. I don't know how you could emulate this for a DOS client (for instance) reading for a BSD mounted FS mapped to a DOS drive letter by the emulator. My opinion is that lookup changes are required, including adding a bit priority vector and name space identifier parameter to the VOP_LOOKUP. I can't help with the Unicode stuff given the current state of the BSD VFS; my suggestion is to punt, and treat the high byte as zero in all cases, converting it to ISO-8859-1 (Latin 1). This will damage utility for anyone outside the Latin 1 scope, but that can't be helped without the underlying VFS changes (appologies to non-Latin 1 using countries up front). If you get to where you need to work on name collision, let me know, and I can describe the algorithm in a couple of pages. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.