|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1 |
|
| #
0f6439f6 |
| 22-Jan-2025 |
Joanne Koong <[email protected]> |
fuse: add kernel-enforced timeout option for requests
There are situations where fuse servers can become unresponsive or stuck, for example if the server is deadlocked. Currently, there's no good wa
fuse: add kernel-enforced timeout option for requests
There are situations where fuse servers can become unresponsive or stuck, for example if the server is deadlocked. Currently, there's no good way to detect if a server is stuck and needs to be killed manually.
This commit adds an option for enforcing a timeout (in seconds) for requests where if the timeout elapses without the server responding to the request, the connection will be automatically aborted.
Please note that these timeouts are not 100% precise. For example, the request may take roughly an extra FUSE_TIMEOUT_TIMER_FREQ seconds beyond the requested timeout due to internal implementation, in order to mitigate overhead.
[SzM: Bump the API version number]
Signed-off-by: Joanne Koong <[email protected]> Reviewed-by: Jeff Layton <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
09098e62 |
| 25-Mar-2025 |
Bernd Schubert <[email protected]> |
fuse: {io-uring} Fix a possible req cancellation race
task-A (application) might be in request_wait_answer and try to remove the request when it has FR_PENDING set.
task-B (a fuse-server io-uring t
fuse: {io-uring} Fix a possible req cancellation race
task-A (application) might be in request_wait_answer and try to remove the request when it has FR_PENDING set.
task-B (a fuse-server io-uring task) might handle this request with FUSE_IO_URING_CMD_COMMIT_AND_FETCH, when fetching the next request and accessed the req from the pending list in fuse_uring_ent_assign_req(). That code path was not protected by fiq->lock and so might race with task-A.
For scaling reasons we better don't use fiq->lock, but add a handler to remove canceled requests from the queue.
This also removes usage of fiq->lock from fuse_uring_add_req_to_ring_ent() altogether, as it was there just to protect against this race and incomplete.
Also added is a comment why FR_PENDING is not cleared.
Fixes: c090c8abae4b ("fuse: Add io-uring sqe commit and fetch support") Cc: <[email protected]> # v6.14 Reported-by: Joanne Koong <[email protected]> Closes: https://lore.kernel.org/all/CAJnrk1ZgHNb78dz-yfNTpxmW7wtT88A=m-zF0ZoLXKLUHRjNTw@mail.gmail.com/ Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
ba74ba57 |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
These functions are also needed by fuse-over-io-uring.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Luis Henriqu
fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static
These functions are also needed by fuse-over-io-uring.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
38213365 |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: {io-uring} Make hash-list req unique finding functions non-static
fuse-over-io-uring uses existing functions to find requests based on their unique id - make these functions non-static.
Signe
fuse: {io-uring} Make hash-list req unique finding functions non-static
fuse-over-io-uring uses existing functions to find requests based on their unique id - make these functions non-static.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
f773a7c2 |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: Add fuse-io-uring handling into fuse_copy
Add special fuse-io-uring into the fuse argument copy handler.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Joanne Koong <joannelko
fuse: Add fuse-io-uring handling into fuse_copy
Add special fuse-io-uring into the fuse argument copy handler.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
d0f9c62a |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: Make fuse_copy non static
Move 'struct fuse_copy_state' and fuse_copy_* functions to fuse_dev_i.h to make it available for fuse-io-uring. 'copy_out_args()' is renamed to 'fuse_copy_out_args'.
fuse: Make fuse_copy non static
Move 'struct fuse_copy_state' and fuse_copy_* functions to fuse_dev_i.h to make it available for fuse-io-uring. 'copy_out_args()' is renamed to 'fuse_copy_out_args'.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
88be7aa9 |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: Move request bits
These are needed by fuse-over-io-uring.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Reviewed-by: Joanne Koong <joannelk
fuse: Move request bits
These are needed by fuse-over-io-uring.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
867d93dc |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: Move fuse_get_dev to header file
Another preparation patch, as this function will be needed by fuse/dev.c and fuse/dev_uring.c.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by:
fuse: Move fuse_get_dev to header file
Another preparation patch, as this function will be needed by fuse/dev.c and fuse/dev_uring.c.
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|
| #
92270d07 |
| 20-Jan-2025 |
Bernd Schubert <[email protected]> |
fuse: rename to fuse_dev_end_requests and make non-static
This function is needed by fuse_uring.c to clean ring queues, so make it non static. Especially in non-static mode the function name 'end_re
fuse: rename to fuse_dev_end_requests and make non-static
This function is needed by fuse_uring.c to clean ring queues, so make it non static. Especially in non-static mode the function name 'end_requests' should be prefixed with fuse_
Signed-off-by: Bernd Schubert <[email protected]> Reviewed-by: Josef Bacik <[email protected]> Reviewed-by: Joanne Koong <[email protected]> Reviewed-by: Luis Henriques <[email protected]> Signed-off-by: Miklos Szeredi <[email protected]>
show more ...
|