diff options
Diffstat (limited to 'fs/lockd')
-rw-r--r-- | fs/lockd/clntproc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c index 145524039577..b8ecfa1168f3 100644 --- a/fs/lockd/clntproc.c +++ b/fs/lockd/clntproc.c | |||
@@ -28,6 +28,7 @@ static int nlmclnt_lock(struct nlm_rqst *, struct file_lock *); | |||
28 | static int nlmclnt_unlock(struct nlm_rqst *, struct file_lock *); | 28 | static int nlmclnt_unlock(struct nlm_rqst *, struct file_lock *); |
29 | static int nlm_stat_to_errno(u32 stat); | 29 | static int nlm_stat_to_errno(u32 stat); |
30 | static void nlmclnt_locks_init_private(struct file_lock *fl, struct nlm_host *host); | 30 | static void nlmclnt_locks_init_private(struct file_lock *fl, struct nlm_host *host); |
31 | static int nlmclnt_cancel(struct nlm_host *, int , struct file_lock *); | ||
31 | 32 | ||
32 | static const struct rpc_call_ops nlmclnt_unlock_ops; | 33 | static const struct rpc_call_ops nlmclnt_unlock_ops; |
33 | static const struct rpc_call_ops nlmclnt_cancel_ops; | 34 | static const struct rpc_call_ops nlmclnt_cancel_ops; |
@@ -598,7 +599,7 @@ out_unblock: | |||
598 | nlmclnt_finish_block(req); | 599 | nlmclnt_finish_block(req); |
599 | /* Cancel the blocked request if it is still pending */ | 600 | /* Cancel the blocked request if it is still pending */ |
600 | if (resp->status == NLM_LCK_BLOCKED) | 601 | if (resp->status == NLM_LCK_BLOCKED) |
601 | nlmclnt_cancel(host, fl); | 602 | nlmclnt_cancel(host, req->a_args.block, fl); |
602 | out: | 603 | out: |
603 | nlmclnt_release_lockargs(req); | 604 | nlmclnt_release_lockargs(req); |
604 | return status; | 605 | return status; |
@@ -728,8 +729,7 @@ static const struct rpc_call_ops nlmclnt_unlock_ops = { | |||
728 | * We always use an async RPC call for this in order not to hang a | 729 | * We always use an async RPC call for this in order not to hang a |
729 | * process that has been Ctrl-C'ed. | 730 | * process that has been Ctrl-C'ed. |
730 | */ | 731 | */ |
731 | int | 732 | static int nlmclnt_cancel(struct nlm_host *host, int block, struct file_lock *fl) |
732 | nlmclnt_cancel(struct nlm_host *host, struct file_lock *fl) | ||
733 | { | 733 | { |
734 | struct nlm_rqst *req; | 734 | struct nlm_rqst *req; |
735 | unsigned long flags; | 735 | unsigned long flags; |
@@ -750,6 +750,7 @@ nlmclnt_cancel(struct nlm_host *host, struct file_lock *fl) | |||
750 | req->a_flags = RPC_TASK_ASYNC; | 750 | req->a_flags = RPC_TASK_ASYNC; |
751 | 751 | ||
752 | nlmclnt_setlockargs(req, fl); | 752 | nlmclnt_setlockargs(req, fl); |
753 | req->a_args.block = block; | ||
753 | 754 | ||
754 | status = nlmclnt_async_call(req, NLMPROC_CANCEL, &nlmclnt_cancel_ops); | 755 | status = nlmclnt_async_call(req, NLMPROC_CANCEL, &nlmclnt_cancel_ops); |
755 | if (status < 0) { | 756 | if (status < 0) { |