fix return value of fuse_loop()/fuse_loop_mt()
authorCsaba Henk <csaba.henk@creo.hu>
Thu, 10 May 2007 22:52:34 +0000 (22:52 +0000)
committerCsaba Henk <csaba.henk@creo.hu>
Thu, 10 May 2007 22:52:34 +0000 (22:52 +0000)
ChangeLog
lib/fuse_kern_chan.c

index 40e70361bbf436386559aa97f76994a2eee27aec..5c536e73ed843a47c7e35eab42094eb15b49c5ac 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-11  Csaba Henk <csaba.henk@creo.hu>
+
+       * Fix return value of fuse_loop()/fuse_loop_mt().
+       Error reported by Csaba Henk, fix by Miklos Szeredi.
 2007-05-03  Miklos Szeredi <miklos@szeredi.hu>
 
        * Released 2.7.0-rc1
index 622b48d3f58828b04d4be26106644d64ccb701b0..466703b56fc57bf846db38cc587fd8d7eeb974c3 100644 (file)
@@ -36,10 +36,14 @@ static int fuse_kern_chan_receive(struct fuse_chan **chp, char *buf,
         if (err == ENOENT)
             goto restart;
 
+        if (err == ENODEV) {
+            fuse_session_exit(se);
+            return 0;
+        }
         /* Errors occuring during normal operation: EINTR (read
            interrupted), EAGAIN (nonblocking I/O), ENODEV (filesystem
            umounted) */
-        if (err != EINTR && err != EAGAIN && err != ENODEV)
+        if (err != EINTR && err != EAGAIN)
             perror("fuse: reading device");
         return -err;
     }