svcrpc: remove handling of unknown errors from svc_recv
J. Bruce Fields [Sat, 18 Aug 2012 01:47:53 +0000 (21:47 -0400)]
svc_recv() returns only -EINTR or -EAGAIN.  If we really want to worry
about the case where it has a bug that causes it to return something
else, we could stick a WARN() in svc_recv.  But it's silly to require
every caller to have all this boilerplate to handle that case.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>

fs/lockd/svc.c
fs/nfs/callback.c
fs/nfsd/nfssvc.c

index 31a63f8..e515569 100644 (file)
@@ -126,7 +126,7 @@ static void restart_grace(void)
 static int
 lockd(void *vrqstp)
 {
-       int             err = 0, preverr = 0;
+       int             err = 0;
        struct svc_rqst *rqstp = vrqstp;
 
        /* try_to_freeze() is called from svc_recv() */
@@ -165,21 +165,8 @@ lockd(void *vrqstp)
                 * recvfrom routine.
                 */
                err = svc_recv(rqstp, timeout);
-               if (err == -EAGAIN || err == -EINTR) {
-                       preverr = err;
+               if (err == -EAGAIN || err == -EINTR)
                        continue;
-               }
-               if (err < 0) {
-                       if (err != preverr) {
-                               printk(KERN_WARNING "%s: unexpected error "
-                                       "from svc_recv (%d)\n", __func__, err);
-                               preverr = err;
-                       }
-                       schedule_timeout_interruptible(HZ);
-                       continue;
-               }
-               preverr = err;
-
                dprintk("lockd: request from %s\n",
                                svc_print_addr(rqstp, buf, sizeof(buf)));
 
index 4c8459e..d9e2a18 100644 (file)
@@ -45,7 +45,7 @@ unsigned short nfs_callback_tcpport6;
 static int
 nfs4_callback_svc(void *vrqstp)
 {
-       int err, preverr = 0;
+       int err;
        struct svc_rqst *rqstp = vrqstp;
 
        set_freezable();
@@ -55,20 +55,8 @@ nfs4_callback_svc(void *vrqstp)
                 * Listen for a request on the socket
                 */
                err = svc_recv(rqstp, MAX_SCHEDULE_TIMEOUT);
-               if (err == -EAGAIN || err == -EINTR) {
-                       preverr = err;
+               if (err == -EAGAIN || err == -EINTR)
                        continue;
-               }
-               if (err < 0) {
-                       if (err != preverr) {
-                               printk(KERN_WARNING "NFS: %s: unexpected error "
-                                       "from svc_recv (%d)\n", __func__, err);
-                               preverr = err;
-                       }
-                       schedule_timeout_uninterruptible(HZ);
-                       continue;
-               }
-               preverr = err;
                svc_process(rqstp);
        }
        return 0;
index dd2b734..2013aa0 100644 (file)
@@ -487,7 +487,7 @@ static int
 nfsd(void *vrqstp)
 {
        struct svc_rqst *rqstp = (struct svc_rqst *) vrqstp;
-       int err, preverr = 0;
+       int err;
 
        /* Lock module and set up kernel thread */
        mutex_lock(&nfsd_mutex);
@@ -534,16 +534,6 @@ nfsd(void *vrqstp)
                        ;
                if (err == -EINTR)
                        break;
-               else if (err < 0) {
-                       if (err != preverr) {
-                               printk(KERN_WARNING "%s: unexpected error "
-                                       "from svc_recv (%d)\n", __func__, -err);
-                               preverr = err;
-                       }
-                       schedule_timeout_uninterruptible(HZ);
-                       continue;
-               }
-
                validate_process_creds();
                svc_process(rqstp);
                validate_process_creds();