Hi, I am trying to make a Linux filesystem appear case-insensitive and I got the idea that I could use a SAMBA loopback mount to do this. I almost succeeded on my first try but I ran into a snag I have no answer for yet. My setup involves sharing filesystem "/a" and then mounting it on "/b". I can use "ls -l" on the "/b" filesystem in a case-insensitive fashion but when I go to open the file by a case-insensitive name the attempt fails. Can someone please explain why I am not able to open() files with case insensitive names even though stat() or lstat() works with them? These examples illustrate my issue: Case sensitive ext3 filesystem: # ls -l /a/AbCd/EFgh -rw-r--r-- 1 root root 6 Oct 24 10:18 /a/AbCd/EFgh # ls -l /a/abcd/efgh ls: /a/abcd/efgh: No such file or directory Case insensitive mount.cifs mount of SAMBA shared "/a" filesystems: # ls -l /b/AbCd/EFgh -rw-r--r-- 1 root root 6 Oct 24 10:18 /b/AbCd/EFgh # ls -l /b/abcd/efgh -rw-r--r-- 1 root root 6 Oct 24 10:18 /b/abcd/efgh But why doesn't open(2) work in a case insenstive fashion? # cat /b/AbCd/EFgh hello # cat /b/abcd/efgh cat: /b/abcd/efgh: No such file or directory ======== Details ======= System is KNOPPIX 5.0.1 - June 2006 # uname -a Linux Knoppix 2.6.17 #4 SMP PREEMPT Wed May 10 13:53:45 CEST 2006 i686 GNU/Linux Mount was performed like this: mount -t cifs //localhost/public /b -o nocase This minimal smb.conf is being used: # cat /etc/samba/smb.conf [global] security = share guest account = knoppix netbios name = TEST1 socket options = TCP_NODELAY IPTOS_LOWDELAY workgroup = WORKGROUP [public] guest ok = yes guest only = yes path = /a read only = no
> My setup involves sharing filesystem "/a" and then mounting it on > "/b". I can > use "ls -l" on the "/b" filesystem in a > case-insensitive fashion but when I go to open the file by a > case-insensitive name the attempt fails. > > Can someone please explain why I am not able to open() files with case > insensitive names even though stat() or lstat() works with them?My guess would be that Samba's UNIX extensions are enabled, which allow you to do nice things like chmod, but also enable case sensitivity. You'll probably need to disable the UNIX extensions on the server or the mount point before this will work. Cheers, Adam.
--- Kenneth Stailey <kstailey@yahoo.com> wrote:> Hi, > > I am trying to make a Linux filesystem appear case-insensitive and I got the > idea that I could use a SAMBA loopback mount to do this. I almost succeeded > on my first try but I ran into a snag I have no answer for yet. > > My setup involves sharing filesystem "/a" and then mounting it on "/b". I > can use "ls -l" on the "/b" filesystem in a case-insensitive fashion but > when I go to open the file by a case-insensitive name the attempt fails. > > Can someone please explain why I am not able to open() files with case > insensitive names even though stat() or lstat() works with them? > > These examples illustrate my issue: > > Case sensitive ext3 filesystem: > > # ls -l /a/AbCd/EFgh > -rw-r--r-- 1 root root 6 Oct 24 10:18 /a/AbCd/EFgh > # ls -l /a/abcd/efgh > ls: /a/abcd/efgh: No such file or directory > > Case insensitive mount.cifs mount of SAMBA shared "/a" filesystems: > > # ls -l /b/AbCd/EFgh > -rw-r--r-- 1 root root 6 Oct 24 10:18 /b/AbCd/EFgh > # ls -l /b/abcd/efgh > -rw-r--r-- 1 root root 6 Oct 24 10:18 /b/abcd/efgh > > But why doesn't open(2) work in a case insenstive fashion? > > # cat /b/AbCd/EFgh > hello > # cat /b/abcd/efgh > cat: /b/abcd/efgh: No such file or directory >Once I stopped using mount.cifs all the pain in the diodes down my left side stopped hurting. # mount -t smbfs -o username=root //localhost/public /b # cat /b/abcd/efgh hello The moral of the story is that mount.cifs sucks and mount.smbfs rules!