Linux NFS development
 help / color / mirror / Atom feed
* Case sensitivity in NFS files
@ 2008-10-09 16:39 Michal Sojka
       [not found] ` <200810091839.49445.sojkam1-jQs2MHkdoM/twjQa/ONI9g@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Michal Sojka @ 2008-10-09 16:39 UTC (permalink / raw)
  To: linux-nfs

Hello,

I'm experiencing strange problem with case sensitivity of files on NFS3 
filesystem. I want to backup my server to a NAS device. The server is:
Linux rtime 2.6.25-gentoo-r8 #6 SMP Thu Oct 9 13:00:08 CEST 2008 i686
and NAS is:
Linux RtimeBackup 2.6.15 #722 Fri Sep 19 20:23:15 CST 2008 armv5tejl unknown

I would like to use rdiff-backup tool, which checks for case sensitivity of 
the target filesystem. The technique it uses to check this is the same as in 
this file:

#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
        int fd;
        struct stat st;
        fd = open("A", O_WRONLY|O_CREAT|O_TRUNC, 0666);
        perror("1. open(A)"); errno=0;
        if (fd == -1) {
                exit(1);
        }
        close(fd);
        lstat("A", &st);
        perror("2. lstat(A)"); errno=0;
        lstat("a", &st);
        perror("3. lstat(a)"); errno=0;
        unlink("a");
        perror("4. unlink(a)"); errno=0;
        lstat("A", &st);
        perror("5. lstat(A)"); errno=0;
        lstat("a", &st);
        perror("6. lstat(a)"); errno=0;
}

The expected output of this program is:

1. open(A): Success
2. lstat(A): Success
3. lstat(a): No such file or directory
4. unlink(a): No such file or directory
5. lstat(A): Success
6. lstat(a): No such file or directory

On NFS, I sometimes get the following (neither "A" nor "a" files existed 
before execution):

1. open(A): Success
2. lstat(A): Success
3. lstat(a): Success
4. unlink(a): Success
5. lstat(A): Stale NFS file handle
6. lstat(a): No such file or directory

This happens when the program is run for the first time. When I run it for the 
second time, I get the expected output and file "A" is created. After I 
remove the A file, I get the "wrong" output again.

Does anybody know, what is causing this behavior?

Thanks
Michal

P.S.: Please CC me when replying.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Case sensitivity in NFS files
       [not found] ` <200810091839.49445.sojkam1-jQs2MHkdoM/twjQa/ONI9g@public.gmane.org>
@ 2008-10-09 18:36   ` J. Bruce Fields
  2008-10-10  6:38     ` Michal Sojka
  0 siblings, 1 reply; 3+ messages in thread
From: J. Bruce Fields @ 2008-10-09 18:36 UTC (permalink / raw)
  To: Michal Sojka; +Cc: linux-nfs

On Thu, Oct 09, 2008 at 06:39:49PM +0200, Michal Sojka wrote:
> I'm experiencing strange problem with case sensitivity of files on NFS3 
> filesystem. I want to backup my server to a NAS device. The server is:
> Linux rtime 2.6.25-gentoo-r8 #6 SMP Thu Oct 9 13:00:08 CEST 2008 i686
> and NAS is:
> Linux RtimeBackup 2.6.15 #722 Fri Sep 19 20:23:15 CST 2008 armv5tejl unknown

Do you know which filesystem it exports?  I haven't played with exports
of case-insensitive filesystems, but the behavior you saw would seem
consistent with that:

> On NFS, I sometimes get the following (neither "A" nor "a" files existed 
> before execution):
> 
> 1. open(A): Success
> 2. lstat(A): Success
> 3. lstat(a): Success

So we looked up "a" on the filesystem, and it found "A", since it
considers the two names the same.

> 4. unlink(a): Success

And the unlink worked too.

> 5. lstat(A): Stale NFS file handle

But we don't know that it resulted in deleting "A", so we send this stat
with the old filehandle and find the file's gone....

> 6. lstat(a): No such file or directory
> 
> This happens when the program is run for the first time. When I run it for the 
> second time, I get the expected output and file "A" is created.

The second time it's probably cached the non-existance of "a", so just
returns -ENOENT on lstat(a) instead of asking the server about it.

--b.

> After I 
> remove the A file, I get the "wrong" output again.
> 
> Does anybody know, what is causing this behavior?
> 
> Thanks
> Michal
> 
> P.S.: Please CC me when replying.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Case sensitivity in NFS files
  2008-10-09 18:36   ` J. Bruce Fields
@ 2008-10-10  6:38     ` Michal Sojka
  0 siblings, 0 replies; 3+ messages in thread
From: Michal Sojka @ 2008-10-10  6:38 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: linux-nfs

On Thursday 09 of October 2008 20:36:18 J. Bruce Fields wrote:
> Do you know which filesystem it exports?  I haven't played with exports
> of case-insensitive filesystems, but the behavior you saw would seem
> consistent with that:

Thanks for your reply. Now I see you are right. The exported filesystem is 
ext3, so I expected it to be case sensitive, but if I check its behavior form 
the shell on NAS machine it behaves as case insensitive. Probably there is 
some patched kernel in the NAS machine. Unfortunately I do not have kernel 
sources, as they ship them only for $20 on CD by snail mail.

So this explains the observed behavior. Thanks again.

Michal S.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-10-10  6:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-09 16:39 Case sensitivity in NFS files Michal Sojka
     [not found] ` <200810091839.49445.sojkam1-jQs2MHkdoM/twjQa/ONI9g@public.gmane.org>
2008-10-09 18:36   ` J. Bruce Fields
2008-10-10  6:38     ` Michal Sojka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox