lkml.org 
[lkml]   [1996]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectNFS client bug with fix
Date
Hi,

if a directory is created on an NFS mounted Filesystem, the parent
inode count may not update, because of the attribute cache.

A simple demo
---------------------------------
#!/bin/sh
# creating test dir
mkdir test.$$

# creating another test dir
# Posix semantic implies that the inode count of test.$$ should
# be three afterwards.

mkdir test.$$/test.$$

touch test.$$/test.$$/gnufindmaynotfindme

find -name gnufindmaynotfindme -print

ls -ld test.$$ test.$$/test.$$

# be sure to time out the attribute cache
sleep 40

ls -ld test.$$ test.$$/test.$$

find -name gnufindmaynotfindme -print
---------------------
Output (without patch) mounted from a POSIX conforming machine is

drwxr-xr-x 2 olaf users 1024 Mar 30 22:36 test.238
drwxr-xr-x 2 olaf users 1024 Mar 30 22:36 test.238/test.238
drwxr-xr-x 3 olaf users 1024 Mar 30 22:36 test.238
drwxr-xr-x 2 olaf users 1024 Mar 30 22:36 test.238/test.238
./test.238/test.238/gnufindmaynotfindme

Note the wrong inode count in the dir test.238.

[ I wrote this example awhile ago ;-) ]

========
Simple Fix: delete the parent attribute cache entry when creating
a new directory.
--- dir.c.orig Fri Apr 26 17:40:22 1996
+++ dir.c Mon May 20 18:36:29 1996
@@ -476,8 +476,11 @@
sattr.atime.seconds = sattr.mtime.seconds = (unsigned) -1;
error = nfs_proc_mkdir(NFS_SERVER(dir), NFS_FH(dir),
name, &sattr, &fhandle, &fattr);
- if (!error)
+ if (!error) {
nfs_lookup_cache_add(dir, name, &fhandle, &fattr);
+ /* The parent dir inode count may have changed ! */
+ nfs_lookup_cache_remove( NULL, dir, NULL);
+ }
iput(dir);
return error;
}
--
Dr. Olaf Flebbe Phone +49 (0)7071-9457-32
science + computing gmbh FAX +49 (0)7071-9457-27
Hagellocher Weg 71
D-72070 Tuebingen Email: o.flebbe@science-computing.uni-tuebingen.de



\
 
 \ /
  Last update: 2005-03-22 13:37    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site