Hi,
During the last week i have been playing around with the idea of writing a case insensitive fuse filesystem and i am know at the point were i can demonstrate a proof of concept implementation. And yes i have seen that there is already someone else interested in doing this but i thought it was fun anyways.
The filesystem converts every path to lower case before further operations take place. On file creation the original filename is stored in an extended attribute and later returned upon request.
This means you will have a directory on a regular POSIX filesystem with all filenames in lower case, this directory can then be mounted in case insensitive fashion.
In order to compile the code you will need the fuse and libattr[1] development files. Furthermore you will have to make sure that the underlying filesystem supports extended attributes (for example for ext{2,3} you need a kernel with CONFIG_EXT{2,3}_FS_XATTR enabled). You probably also want to mount the underlying filesystem with the user_xattr option which allows non root users to create extended attributes.
So fetch the code from the url below, extract the archive and type make. This should generate a binary named ciopfs (which stands for Case Insenstive On Purpose File System, alternative naming suggestions are welcome ;).
http://www.brain-dump.org/projects/ciopfs/ciopfs-25.03.2008.tar.gz
Mounting the file system is straight forward, see `ciopfs -h` for further options. But be carefull i haven't yet done any serious testing, so only use it with unimportant data [insert standard warning about possible data loss here].
ciopfs /path/to/my/directory /path/to/my/mountpoint
As i said before the current implementation is just a proof of concept. That's why it currently only supports ascii filenames, or whatever tolower(3) can cope with. This brings us to another problem[2,3], in certain languages there isn't a direct mapping between upper and lower case characters and case insensitivity in filesystem is generally a bad thing.
Any comments are appreciated.
Regards, Marc
[1] http://acl.bestbits.at/download.html#Attr [2] http://www.somethinkodd.com/oddthinking/2005/10/25/the-world-of-upper-lower-... [3] http://drewthaler.blogspot.com/2007/12/case-against-insensitivity.html