summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2017-08-01 23:29:29 +0200
committerTrond Myklebust <trond.myklebust@primarydata.com>2017-08-15 17:54:48 +0200
commit2ce209c42c01ca976ad680fea52a8e8b9a53643b (patch)
tree1728cf3caf2430e3a4cd944228b31f084f577115 /fs/nfs/pagelist.c
parentNFSv4/pnfs: Replace pnfs_put_lseg_locked() with pnfs_put_lseg() (diff)
downloadlinux-2ce209c42c01ca976ad680fea52a8e8b9a53643b.tar.xz
linux-2ce209c42c01ca976ad680fea52a8e8b9a53643b.zip
NFS: Wait for requests that are locked on the commit list
If a request is on the commit list, but is locked, we will currently skip it, which can lead to livelocking when the commit count doesn't reduce to zero. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r--fs/nfs/pagelist.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index ec97c301899b..548ebc7256ff 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -434,6 +434,7 @@ void nfs_release_request(struct nfs_page *req)
{
kref_put(&req->wb_kref, nfs_page_group_destroy);
}
+EXPORT_SYMBOL_GPL(nfs_release_request);
/**
* nfs_wait_on_request - Wait for a request to complete.
@@ -452,6 +453,7 @@ nfs_wait_on_request(struct nfs_page *req)
return wait_on_bit_io(&req->wb_flags, PG_BUSY,
TASK_UNINTERRUPTIBLE);
}
+EXPORT_SYMBOL_GPL(nfs_wait_on_request);
/*
* nfs_generic_pg_test - determine if requests can be coalesced