[Devel] [PATCH RHEL9 COMMIT] fs/fuse kio: do not return -EINVAL from fuse_dev_do_write() on killed request.
Konstantin Khorenko
khorenko at virtuozzo.com
Mon Feb 10 11:28:33 MSK 2025
The commit is pushed to "branch-rh9-5.14.0-427.44.1.vz9.80.x-ovz" and will appear at git at bitbucket.org:openvz/vzkernel.git
after rh9-5.14.0-427.44.1.vz9.80.12
------>
commit 90e4edc819d2bf87afab678aa059ff460d5003a9
Author: Liu Kui <kui.liu at virtuozzo.com>
Date: Tue Feb 4 16:31:01 2025 +0800
fs/fuse kio: do not return -EINVAL from fuse_dev_do_write() on killed request.
It is a normal scenario that the request may have been killed when a
response is returned. So we shouldn't return -EINVAL to the response
writer, just need to complete the request with error. Otherwise it
breaks the userspace thread.
Related to #VSTOR-98704
https://virtuozzo.atlassian.net/browse/VSTOR-98704
Fixes: 47f3a6b72349 ("fs/fuse: avoid copying out data to killed requests")
Signed-off-by: Liu Kui <kui.liu at virtuozzo.com>
Acked-by: Alexey Kuznetsov <kuznet at virtuozzo.com>
Feature: fuse: enhanced splice support
---
fs/fuse/dev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c
index 101bd4907828..cc6b9f348cf6 100644
--- a/fs/fuse/dev.c
+++ b/fs/fuse/dev.c
@@ -2339,7 +2339,8 @@ static ssize_t fuse_dev_do_write(struct fuse_dev *fud,
cs->move_pages = 0;
if (req->args->killed) {
- err = -EINVAL;
+ err = 0;
+ req->out.h.error = -EIO;
} else if (oh.error == FUSE_OUT_SPLICES) {
req->out.h.error = 0;
err = copy_out_splices(cs, req->args, nbytes);
More information about the Devel
mailing list