diff options
Diffstat (limited to 'fs/nfs/callback.c')
| -rw-r--r-- | fs/nfs/callback.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 2245bef50f37..9a521fb39869 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c | |||
| @@ -72,7 +72,7 @@ out_err: | |||
| 72 | static int | 72 | static int |
| 73 | nfs4_callback_svc(void *vrqstp) | 73 | nfs4_callback_svc(void *vrqstp) |
| 74 | { | 74 | { |
| 75 | int err, preverr = 0; | 75 | int err; |
| 76 | struct svc_rqst *rqstp = vrqstp; | 76 | struct svc_rqst *rqstp = vrqstp; |
| 77 | 77 | ||
| 78 | set_freezable(); | 78 | set_freezable(); |
| @@ -82,20 +82,8 @@ nfs4_callback_svc(void *vrqstp) | |||
| 82 | * Listen for a request on the socket | 82 | * Listen for a request on the socket |
| 83 | */ | 83 | */ |
| 84 | err = svc_recv(rqstp, MAX_SCHEDULE_TIMEOUT); | 84 | err = svc_recv(rqstp, MAX_SCHEDULE_TIMEOUT); |
| 85 | if (err == -EAGAIN || err == -EINTR) { | 85 | if (err == -EAGAIN || err == -EINTR) |
| 86 | preverr = err; | ||
| 87 | continue; | 86 | continue; |
| 88 | } | ||
| 89 | if (err < 0) { | ||
| 90 | if (err != preverr) { | ||
| 91 | printk(KERN_WARNING "NFS: %s: unexpected error " | ||
| 92 | "from svc_recv (%d)\n", __func__, err); | ||
| 93 | preverr = err; | ||
| 94 | } | ||
| 95 | schedule_timeout_uninterruptible(HZ); | ||
| 96 | continue; | ||
| 97 | } | ||
| 98 | preverr = err; | ||
| 99 | svc_process(rqstp); | 87 | svc_process(rqstp); |
| 100 | } | 88 | } |
| 101 | return 0; | 89 | return 0; |
