lkml.org 
[lkml]   [2002]   [Jan]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: [PATCH 2.5.3-pre1] Fix NFS dentry lookup behaviour
    From
    >>>>> " " == Linus Torvalds <torvalds@transmeta.com> writes:

    > What's wrong with using the existing "revalidate" approach? I
    > hate the notion of adding a special VFS layer call for
    > something like this.

    The following patch to path_walk() is the alternative that I presented
    to Linux Fsdevel last summer as part of the first draft patch. It uses
    the standard d_revalidate() & friends.

    As I said, the reaction at the time was not too positive, but perhaps
    opinions have changed?

    Cheers,
    Trond

    diff -u --recursive --new-file linux-2.5.3-pre1/fs/namei.c linux-2.5.3-cto/fs/namei.c
    --- linux-2.5.3-pre1/fs/namei.c Mon Jan 14 18:41:57 2002
    +++ linux-2.5.3-cto/fs/namei.c Fri Jan 18 15:13:00 2002
    @@ -457,7 +457,7 @@
    while (*name=='/')
    name++;
    if (!*name)
    - goto return_base;
    + goto return_reval;

    inode = nd->dentry->d_inode;
    if (current->link_count)
    @@ -576,7 +576,7 @@
    inode = nd->dentry->d_inode;
    /* fallthrough */
    case 1:
    - goto return_base;
    + goto return_reval;
    }
    if (nd->dentry->d_op && nd->dentry->d_op->d_hash) {
    err = nd->dentry->d_op->d_hash(nd->dentry, &this);
    @@ -627,6 +627,19 @@
    nd->last_type = LAST_DOT;
    else if (this.len == 2 && this.name[1] == '.')
    nd->last_type = LAST_DOTDOT;
    +return_reval:
    + /*
    + * We bypassed the ordinary revalidation routines.
    + * Check the cached dentry for staleness.
    + */
    + dentry = nd->dentry;
    + if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
    + err = -ESTALE;
    + if (!dentry->d_op->d_revalidate(dentry, 0)) {
    + d_invalidate(dentry);
    + break;
    + }
    + }
    return_base:
    return 0;
    out_dput:
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:15    [W:0.070 / U:0.088 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site