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    [W:0.021 / U:0.444 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site