diff options
| author | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-04-23 15:16:27 -0400 |
|---|---|---|
| committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2015-04-23 15:16:27 -0400 |
| commit | 21330b667070fd64b2340d8d31c1b0800df78ec8 (patch) | |
| tree | 9f13170097e7041603881d18b4a6000535a8c6fc /net/sunrpc | |
| parent | c7757074839f2cd440521482d76ea180d0d4bdac (diff) | |
| parent | 5fcdfacc01f3a3415b75acb172cd75c9fe1cbda5 (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
Diffstat (limited to 'net/sunrpc')
| -rw-r--r-- | net/sunrpc/xprt.c | 22 |
1 files changed, 12 insertions, 10 deletions
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 | ||
| 329 | static 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: | |||
| 336 | void xprt_release_xprt(struct rpc_xprt *xprt, struct rpc_task *task) | 345 | void 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); | |||
| 358 | void xprt_release_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task) | 363 | void 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; |
| 705 | out: | 707 | out: |
