06 Oct, 2012

1 commit

  • Under memory pressure, the system may evict dentries from cache. When the
    FAT driver receives a NFS request involving an evicted dentry, it is
    unable to reconnect it to the filesystem root. This causes the request to
    fail, often with ENOENT.

    This is partially due to ineffectiveness of the current FAT NFS
    implementation, and partially due to an unimplemented fh_to_parent method.
    The latter can cause file accesses to fail on shares exported with
    subtree_check.

    This patch set provides the FAT driver with the ability to
    reconnect dentries. NFS file handle generation and lookups are simplified
    and made congruent with ext2.

    Testing has involved a memory-starved virtual machine running 3.5-rc5 that
    exports a ~2 GB vfat filesystem containing a kernel tree (~770 MB, ~40000
    files, 9 levels). Both 'cp -r' and 'ls -lR' operations were performed
    from a client, some overlapping, some consecutive. Exports with
    'subtree_check' and 'no_subtree_check' have been tested.

    Note that while this patch set improves FAT's NFS support, it does not
    eliminate ESTALE errors completely.

    The following should be considered for NFS clients who are sensitive to ESTALE:

    * Mounting with lookupcache=none
    Unfortunately this can degrade performance severely, particularly for deep
    filesystems.

    * Incorporating VFS patches to retry ESTALE failures on the client-side,
    such as https://lkml.org/lkml/2012/6/29/381

    * Handling ESTALE errors in client application code

    This patch:

    Move NFS-related code into its own C file. No functional changes.

    Signed-off-by: Steven J. Magnani
    Acked-by: OGAWA Hirofumi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Steven J. Magnani
     

07 Nov, 2008

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds