From: "Steven J. Magnani" <steve@digidescorp.com>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: linux-kernel@vger.kernel.org, steve@digidescorp.com
Subject: [PATCH v2 0/2] fat (exportfs): fix dentry reconnection
Date: Tue, 10 Jul 2012 09:20:51 -0500 [thread overview]
Message-ID: <1341930053-10689-1-git-send-email-steve@digidescorp.com> (raw)
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 series depends on the following patches:
* fat: Fix non-atomic NFS i_pos read
* fat: Accessors for msdos_dir_entry 'start' fields
* fat: Refactor shortname parsing
Changes since v1:
* Dropped code to reconstitute evicted inodes. Too risky.
* Dropped FAT-specific get_name method. Not needed.
* Added index of directories by i_logstart (per. H. OGAWA)
and "nfs" mount option to enable it
next reply other threads:[~2012-07-10 14:21 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-10 14:20 Steven J. Magnani [this message]
2012-07-10 14:20 ` [PATCH 1/2] fat (exportfs): move NFS support code Steven J. Magnani
2012-07-12 10:02 ` OGAWA Hirofumi
2012-07-10 14:20 ` [PATCH 2/2] fat (exportfs): fix dentry reconnection Steven J. Magnani
2012-07-12 10:12 ` OGAWA Hirofumi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1341930053-10689-1-git-send-email-steve@digidescorp.com \
--to=steve@digidescorp.com \
--cc=hirofumi@mail.parknet.co.jp \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®