提交 bfd484a5 编写于 作者: W Weston Andros Adamson 提交者: Trond Myklebust

nfs: use blocking page_group_lock in add_request

__nfs_pageio_add_request was calling nfs_page_group_lock nonblocking, but
this can return -EAGAIN which would end up passing -EIO to the application.

There is no reason not to block in this path, so change the two calls to
do so. Also, there is no need to check the return value of
nfs_page_group_lock when nonblock=false, so remove the error handling code.
Signed-off-by: NWeston Andros Adamson <dros@primarydata.com>
Reviewed-by: NPeng Tao <tao.peng@primarydata.com>
Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
上级 bc8a309e
......@@ -864,13 +864,8 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
struct nfs_page *subreq;
unsigned int bytes_left = 0;
unsigned int offset, pgbase;
int ret;
ret = nfs_page_group_lock(req, true);
if (ret < 0) {
desc->pg_error = ret;
return 0;
}
nfs_page_group_lock(req, false);
subreq = req;
bytes_left = subreq->wb_bytes;
......@@ -892,11 +887,7 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
if (desc->pg_recoalesce)
return 0;
/* retry add_request for this subreq */
ret = nfs_page_group_lock(req, true);
if (ret < 0) {
desc->pg_error = ret;
return 0;
}
nfs_page_group_lock(req, false);
continue;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册