[linux-cifs-client] Re: cifs caching problem fixed? and GENERIC_WRITE vs. GENERIC_ALL fix pushed to 2.4 cvs

Steve French smfltc at us.ibm.com
Tue Feb 3 21:10:44 GMT 2004


Ian,
Thanks, trying 2.4.24 at current cvs level I see the problem with the
date and time stamps on 2.4 (the 2.4 and 2.6 logic for creating files is
very different due to the more efficient "lookup intent" changes in 2.6
so I can see why 2.6 would not have this problem).   There are actually
(at least) 3 setpathinfo calls caused indirectly in executing the
"touch" command in 2.4 due in part to the strange way that create is
broken into multiple pieces in implemented in the VFS.   Of three
date/time stamps fields on a file - the create and access ones are
getting overwritten while the modify one is ok (they look fine until the
third (!) setpathinfo - in which it looks like the correct values are
shifted and partially overwritten with zeros.  Am investigating. 
Interestingly the date and time stamps are ok on the file most of the
way through the trace (frame 20 out of 25 sets it to the incorrect
value, but it is fine until that point).  

On Tue, 2004-02-03 at 07:49, Ian wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> HI
> ~    I tried the fixes this morning and found that the odd permission
> problem had been solved however, I found that this has broken something
> else. Here is the test I ran
> 
> [iamess at strider NT]$ ls -l test
> ls: test: No such file or directory
> [iamess at strider NT]$ touch test
> [iamess at strider NT]$ ls -l test
> - -rw-rw-rw-    1 iamess   iamess          0 Aug  9  2037 test     (note 
> date)
> [iamess at strider NT]$ vi test
> 
> E325: ATTENTION
> Found a swap file by the name ".test.swp"
> ~          owned by: iamess   dated: Tue Feb  3 12:06:34 2004
> ~         [cannot be read]
> While opening file "test"
> ~             dated: Sun Aug  9 14:26:34 2037
> ~      NEWER than swap file!
> 
> (1) Another program may be editing the same file.
> ~    If this is the case, be careful not to end up with two
> ~    different instances of the same file when making changes.
> ~    Quit, or continue with caution.
> 
> (2) An edit session for this file crashed.
> ~    If this is the case, use ":recover" or "vim -r test"
> ~    to recover the changes (see ":help recovery").
> ~    If you did this already, delete the swap file ".test.swp"
> ~    to avoid this message.
> 
> Swap file ".test.swp" already exists!
> [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (D)elete it:
> 
> ~    Chose to Delete file vi returns an emptly file
> ~    Entered some text
> 
> [iamess at strider NT]$ ls -l test*
> - -rw-rw-rw-    1 iamess   iamess         16 Feb  3 13:44 test
> - -rw-rw-rw-    1 iamess   iamess          0 Feb  3 13:44 test~
> [iamess at strider NT]$ ls -l .test*
> - -rw-rw-rw-    1 iamess   iamess          0 Feb  3 13:43 .test.swp
> - -rw-rw-rw-    1 iamess   iamess          0 Feb  3 13:41 .test.swpx
> 
> ~    I'm guessing but it seems that an open request is being made at
> least twice.
> 
> Cheers,
> Ian
> 
> Steve French wrote:
> 
> |Howard,
> |See below - this seems to work now based on my tests on 2.6 which has
> |the identical code in these routines to 2.4.  The caching/oplock problem
> |no longer fails with the minor change to cifsfs.c that I made today and
> |pushed in the bk://cifs.bkbits.net/linux-2.5cifs 2.6 development tree (I
> |also backported them to the 2.4 cvs version in samba.org cvs but they
> |have not been tested yet on 2.4).  The 2.4 code now includes the fix Ian
> |was asking about as well (for the odd share permissions access denied).
> |
> |/localhost/stevef on /mnt type cifs (0)
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo
> |ls: /mnt/foo: No such file or directory
> |stevef95:/home/stevef/bk/linux-2.5cifs # touch !$
> |touch /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo
> |-rwxrwxrwx    1 stevef   users           0 2004-02-02 18:24 /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # rm /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo "This is the client" >
> |/mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo
> |-rwxrwxrwx    1 stevef   users          19 2004-02-02 18:25 /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo "look at server version of
> |file now"
> |look at server version of file now
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /data/pchome/stevef/foo
> |-rwxrwxrwx    1 stevef   users          19 2004-02-02 18:25
> |/data/pchome/stevef/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /data/pchome/stevef/foo
> |This is the client
> |stevef95:/home/stevef/bk/linux-2.5cifs # perl -pi -e 's/client/server/'
> |/data/pchome/stevef/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /data/pchome/stevef/foo
> |This is the server
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo "Back to client view of
> |file"
> |Back to client view of file
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo
> |This is the server
> |stevef95:/home/stevef/bk/linux-2.5cifs # touch !$
> |touch /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo
> |-rwxrwxrwx    1 stevef   users          19 2004-02-02 18:27 /mnt/foo
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo
> |This is the server
> |stevef95:/home/stevef/bk/linux-2.5cifs # toch /mnt/foo
> |bash: toch: command not found
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo
> |This is the server
> |stevef95:/home/stevef/bk/linux-2.5cifs # /usr/local/samba/sbin/smbd -V
> |Version CVS 3.0.1pre1
> |stevef95:/home/stevef/bk/linux-2.5cifs #
> |
> |
> |Then same test with oplock enabled (default)
> |
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /proc/fs/cifs/OplockEnabled
> |1
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo1
> |ls: /mnt/foo1: No such file or directory
> |stevef95:/home/stevef/bk/linux-2.5cifs # touch !$
> |touch /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo1
> |-rwxrwxrwx    1 stevef   users           0 2004-02-02 18:30 /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # rm !$
> |rm /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo "This is client" >
> |/mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo1
> |-rwxrwxrwx    1 stevef   users          15 2004-02-02 18:31 /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo "switch to server view of
> |same file"
> |switch to server view of same file
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /data/pchome/stevef/foo1
> |-rwxrwxrwx    1 stevef   users          15 2004-02-02 18:31
> |/data/pchome/stevef/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /data/pchome/stevef/foo1
> |This is client
> |stevef95:/home/stevef/bk/linux-2.5cifs # perl -pi -e 's/client/server/'
> |/data/pchome/stevef/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /data/pchome/stevef/foo1
> |This is server
> |stevef95:/home/stevef/bk/linux-2.5cifs # echo switch to client view
> |switch to client view
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo1
> |This is server
> |stevef95:/home/stevef/bk/linux-2.5cifs # touch !$
> |touch /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # ls -l /mnt/foo1
> |-rwxrwxrwx    1 stevef   users          15 2004-02-02 18:33 /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo1
> |This is server
> |stevef95:/home/stevef/bk/linux-2.5cifs # touch /mnt/foo1
> |stevef95:/home/stevef/bk/linux-2.5cifs # cat /mnt/foo1
> |This is server
> |
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.1 (GNU/Linux)
> 
> iD8DBQFAH6cEzR2KhuAWJ/gRAtsoAJ0XallwGPnXzdPomZm6SVdamwmj/QCgwKFz
> 2lsk74fd434D6mebpTf7kZw=
> =4bGd
> -----END PGP SIGNATURE-----
> 
> 
> 



More information about the linux-cifs-client mailing list