fuse: no ENOENT from fuse device read
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> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
a131de0a48
Коммит
c9c9d7df5f
|
@ -747,11 +747,12 @@ static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
|
|||
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче