aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2015-04-23 15:16:27 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2015-04-23 15:16:27 -0400
commit21330b667070fd64b2340d8d31c1b0800df78ec8 (patch)
tree9f13170097e7041603881d18b4a6000535a8c6fc
parentc7757074839f2cd440521482d76ea180d0d4bdac (diff)
parent5fcdfacc01f3a3415b75acb172cd75c9fe1cbda5 (diff)
Merge branch 'bugfixes'
* bugfixes: NFSv4: Return delegations synchronously in evict_inode SUNRPC: Fix a regression when reconnecting NFS: remount with security change should return EINVAL nfs: do not export discarded symbols NFSv4.1: don't export static symbol
-rw-r--r--fs/nfs/delegation.c2
-rw-r--r--fs/nfs/pnfs.c2
-rw-r--r--fs/nfs/pnfs_nfs.c2
-rw-r--r--fs/nfs/super.c3
-rw-r--r--net/sunrpc/xprt.c22
5 files changed, 15 insertions, 16 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index 540ee260318c..029d688a969f 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -514,7 +514,7 @@ void nfs_inode_return_delegation_noreclaim(struct inode *inode)
514 514
515 delegation = nfs_inode_detach_delegation(inode); 515 delegation = nfs_inode_detach_delegation(inode);
516 if (delegation != NULL) 516 if (delegation != NULL)
517 nfs_do_return_delegation(inode, delegation, 0); 517 nfs_do_return_delegation(inode, delegation, 1);
518} 518}
519 519
520/** 520/**
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 3f0affebcf05..230606243be6 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1906,7 +1906,6 @@ static void pnfs_writehdr_free(struct nfs_pgio_header *hdr)
1906 pnfs_put_lseg(hdr->lseg); 1906 pnfs_put_lseg(hdr->lseg);
1907 nfs_pgio_header_free(hdr); 1907 nfs_pgio_header_free(hdr);
1908} 1908}
1909EXPORT_SYMBOL_GPL(pnfs_writehdr_free);
1910 1909
1911int 1910int
1912pnfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc) 1911pnfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
@@ -2036,7 +2035,6 @@ static void pnfs_readhdr_free(struct nfs_pgio_header *hdr)
2036 pnfs_put_lseg(hdr->lseg); 2035 pnfs_put_lseg(hdr->lseg);
2037 nfs_pgio_header_free(hdr); 2036 nfs_pgio_header_free(hdr);
2038} 2037}
2039EXPORT_SYMBOL_GPL(pnfs_readhdr_free);
2040 2038
2041int 2039int
2042pnfs_generic_pg_readpages(struct nfs_pageio_descriptor *desc) 2040pnfs_generic_pg_readpages(struct nfs_pageio_descriptor *desc)
diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
index 64d2a5932f7b..f37e25b6311c 100644
--- a/fs/nfs/pnfs_nfs.c
+++ b/fs/nfs/pnfs_nfs.c
@@ -561,7 +561,7 @@ static bool load_v3_ds_connect(void)
561 return(get_v3_ds_connect != NULL); 561 return(get_v3_ds_connect != NULL);
562} 562}
563 563
564void __exit nfs4_pnfs_v3_ds_connect_unload(void) 564void nfs4_pnfs_v3_ds_connect_unload(void)
565{ 565{
566 if (get_v3_ds_connect) { 566 if (get_v3_ds_connect) {
567 symbol_put(nfs3_set_ds_client); 567 symbol_put(nfs3_set_ds_client);
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 5cc3da9d9314..e8620938a4f5 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -2192,7 +2192,7 @@ nfs_compare_remount_data(struct nfs_server *nfss,
2192 data->version != nfss->nfs_client->rpc_ops->version || 2192 data->version != nfss->nfs_client->rpc_ops->version ||
2193 data->minorversion != nfss->nfs_client->cl_minorversion || 2193 data->minorversion != nfss->nfs_client->cl_minorversion ||
2194 data->retrans != nfss->client->cl_timeout->to_retries || 2194 data->retrans != nfss->client->cl_timeout->to_retries ||
2195 data->selected_flavor != nfss->client->cl_auth->au_flavor || 2195 !nfs_auth_info_match(&data->auth_info, nfss->client->cl_auth->au_flavor) ||
2196 data->acregmin != nfss->acregmin / HZ || 2196 data->acregmin != nfss->acregmin / HZ ||
2197 data->acregmax != nfss->acregmax / HZ || 2197 data->acregmax != nfss->acregmax / HZ ||
2198 data->acdirmin != nfss->acdirmin / HZ || 2198 data->acdirmin != nfss->acdirmin / HZ ||
@@ -2240,7 +2240,6 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data)
2240 data->wsize = nfss->wsize; 2240 data->wsize = nfss->wsize;
2241 data->retrans = nfss->client->cl_timeout->to_retries; 2241 data->retrans = nfss->client->cl_timeout->to_retries;
2242 data->selected_flavor = nfss->client->cl_auth->au_flavor; 2242 data->selected_flavor = nfss->client->cl_auth->au_flavor;
2243 data->auth_info = nfss->auth_info;
2244 data->acregmin = nfss->acregmin / HZ; 2243 data->acregmin = nfss->acregmin / HZ;
2245 data->acregmax = nfss->acregmax / HZ; 2244 data->acregmax = nfss->acregmax / HZ;
2246 data->acdirmin = nfss->acdirmin / HZ; 2245 data->acdirmin = nfss->acdirmin / HZ;
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c
index 9949722d99ce..1d4fe24af06a 100644
--- a/net/sunrpc/xprt.c
+++ b/net/sunrpc/xprt.c
@@ -326,6 +326,15 @@ out_unlock:
326 xprt_clear_locked(xprt); 326 xprt_clear_locked(xprt);
327} 327}
328 328
329static void xprt_task_clear_bytes_sent(struct rpc_task *task)
330{
331 if (task != NULL) {
332 struct rpc_rqst *req = task->tk_rqstp;
333 if (req != NULL)
334 req->rq_bytes_sent = 0;
335 }
336}
337
329/** 338/**
330 * xprt_release_xprt - allow other requests to use a transport 339 * xprt_release_xprt - allow other requests to use a transport
331 * @xprt: transport with other tasks potentially waiting 340 * @xprt: transport with other tasks potentially waiting
@@ -336,11 +345,7 @@ out_unlock:
336void xprt_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task) 345void xprt_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task)
337{ 346{
338 if (xprt->snd_task == task) { 347 if (xprt->snd_task == task) {
339 if (task != NULL) { 348 xprt_task_clear_bytes_sent(task);
340 struct rpc_rqst *req = task->tk_rqstp;
341 if (req != NULL)
342 req->rq_bytes_sent = 0;
343 }
344 xprt_clear_locked(xprt); 349 xprt_clear_locked(xprt);
345 __xprt_lock_write_next(xprt); 350 __xprt_lock_write_next(xprt);
346 } 351 }
@@ -358,11 +363,7 @@ EXPORT_SYMBOL_GPL(xprt_release_xprt);
358void xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task) 363void xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task)
359{ 364{
360 if (xprt->snd_task == task) { 365 if (xprt->snd_task == task) {
361 if (task != NULL) { 366 xprt_task_clear_bytes_sent(task);
362 struct rpc_rqst *req = task->tk_rqstp;
363 if (req != NULL)
364 req->rq_bytes_sent = 0;
365 }
366 xprt_clear_locked(xprt); 367 xprt_clear_locked(xprt);
367 __xprt_lock_write_next_cong(xprt); 368 __xprt_lock_write_next_cong(xprt);
368 } 369 }
@@ -700,6 +701,7 @@ bool xprt_lock_connect(struct rpc_xprt *xprt,
700 goto out; 701 goto out;
701 if (xprt->snd_task != task) 702 if (xprt->snd_task != task)
702 goto out; 703 goto out;
704 xprt_task_clear_bytes_sent(task);
703 xprt->snd_task = cookie; 705 xprt->snd_task = cookie;
704 ret = true; 706 ret = true;
705out: 707out: