Messages in this thread Patch in this message | | | Date | Fri, 03 Aug 2007 19:44:37 +0200 | From | Miklos Szeredi <> | Subject | [patch 11/11] fuse: no ENOENT from fuse device read |
| |
From: Miklos Szeredi <mszeredi@suse.cz>
Don't return -ENOENT for a read() on the fuse device when the request was aborted. Instead return -ENODEV, meaning the filesystem has been force-umounted or aborted.
Previously ENOENT meant that the request was interrupted, but now the 'aborted' flag is not set in case of interrupts.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> ---
Index: linux/fs/fuse/dev.c =================================================================== --- linux.orig/fs/fuse/dev.c 2007-08-03 18:40:17.000000000 +0200 +++ linux/fs/fuse/dev.c 2007-08-03 18:40:17.000000000 +0200 @@ -747,11 +747,12 @@ static ssize_t fuse_dev_read(struct kioc fuse_copy_finish(&cs); spin_lock(&fc->lock); req->locked = 0; - if (!err && req->aborted) - err = -ENOENT; + if (req->aborted) { + request_end(fc, req); + return -ENODEV; + } if (err) { - if (!req->aborted) - req->out.h.error = -EIO; + req->out.h.error = -EIO; request_end(fc, req); return err; } -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |