From: Trond Myklebust <trond.myklebust@primarydata.com>
To: linux-nfs@vger.kernel.org
Subject: [PATCH v3 07/13] NFS: Don't call COMMIT in ->releasepage()
Date: Wed, 22 Jun 2016 16:47:42 -0400 [thread overview]
Message-ID: <1466628468-3958-7-git-send-email-trond.myklebust@primarydata.com> (raw)
In-Reply-To: <1466628468-3958-6-git-send-email-trond.myklebust@primarydata.com>
While COMMIT has the potential to free up a lot of memory that is being
taken by unstable writes, it isn't guaranteed to free up this particular
page. Also, calling fsync() on the server is expensive and so we want to
do it in a more controlled fashion, rather than have it triggered at
random by the VM.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
---
fs/nfs/file.c | 23 -----------------------
1 file changed, 23 deletions(-)
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 249262b6bcbe..df4dd8e7e62e 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -460,31 +460,8 @@ static void nfs_invalidate_page(struct page *page, unsigned int offset,
*/
static int nfs_release_page(struct page *page, gfp_t gfp)
{
- struct address_space *mapping = page->mapping;
-
dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);
- /* Always try to initiate a 'commit' if relevant, but only
- * wait for it if the caller allows blocking. Even then,
- * only wait 1 second and only if the 'bdi' is not congested.
- * Waiting indefinitely can cause deadlocks when the NFS
- * server is on this machine, when a new TCP connection is
- * needed and in other rare cases. There is no particular
- * need to wait extensively here. A short wait has the
- * benefit that someone else can worry about the freezer.
- */
- if (mapping) {
- struct nfs_server *nfss = NFS_SERVER(mapping->host);
- nfs_commit_inode(mapping->host, 0);
- if (gfpflags_allow_blocking(gfp) &&
- !bdi_write_congested(&nfss->backing_dev_info)) {
- wait_on_page_bit_killable_timeout(page, PG_private,
- HZ);
- if (PagePrivate(page))
- set_bdi_congested(&nfss->backing_dev_info,
- BLK_RW_ASYNC);
- }
- }
/* If PagePrivate() is set, then the page is not freeable */
if (PagePrivate(page))
return 0;
--
2.7.4
next prev parent reply other threads:[~2016-06-22 20:48 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-22 20:47 [PATCH v3 01/13] NFS: Don't flush caches for a getattr that races with writeback Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 02/13] NFS: Cache access checks more aggressively Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 03/13] NFS: Cache aggressively when file is open for writing Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 04/13] NFS: Kill NFS_INO_NFS_INO_FLUSHING: it is a performance killer Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 05/13] NFS: writepage of a single page should not be synchronous Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 06/13] NFS: Don't hold the inode lock across fsync() Trond Myklebust
2016-06-22 20:47 ` Trond Myklebust [this message]
2016-06-22 20:47 ` [PATCH v3 08/13] NFS: Fix O_DIRECT verifier problems Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 09/13] NFS: Ensure we reset the write verifier 'committed' value on resend Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 10/13] NFS: Do not serialise O_DIRECT reads and writes Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 11/13] NFS: Remove racy size manipulations in O_DIRECT Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 12/13] NFS: Remove inode->i_dio_count from the NFS O_DIRECT code Trond Myklebust
2016-06-22 20:47 ` [PATCH v3 13/13] NFS: Remove unused function nfs_revalidate_mapping_protected() Trond Myklebust
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=1466628468-3958-7-git-send-email-trond.myklebust@primarydata.com \
--to=trond.myklebust@primarydata.com \
--cc=linux-nfs@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;
as well as URLs for NNTP newsgroup(s).