All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND v9 0/3] fuse: add kernel-enforced request timeout option
@ 2024-11-14 19:13 Joanne Koong
  2024-11-14 19:13 ` [PATCH RESEND v9 1/3] fs_parser: add fsparam_u16 helper Joanne Koong
                   ` (3 more replies)
  0 siblings, 4 replies; 39+ messages in thread
From: Joanne Koong @ 2024-11-14 19:13 UTC (permalink / raw)
  To: miklos, linux-fsdevel
  Cc: josef, bernd.schubert, jefflexu, laoar.shao, kernel-team

There are situations where fuse servers can become unresponsive or
stuck, for example if the server is in a deadlock. Currently, there's
no good way to detect if a server is stuck and needs to be killed
manually.

This patchset adds a timeout option where if the server does not reply to a
request by the time the timeout elapses, the connection will be aborted.
This patchset also adds two dynamically configurable fuse sysctls
"default_request_timeout" and "max_request_timeout" for controlling/enforcing
timeout behavior system-wide.

Existing systems running fuse servers will not be affected unless they
explicitly opt into the timeout.

v8:
https://lore.kernel.org/linux-fsdevel/20241011191320.91592-1-joannelkoong@gmail.com/
Changes from v8 -> v9:
* Fix comment for u16 fs_parse_result, ULONG_MAX instead of U32_MAX, fix
  spacing (Bernd)

v7:
https://lore.kernel.org/linux-fsdevel/20241007184258.2837492-1-joannelkoong@gmail.com/
Changes from v7 -> v8:
* Use existing lists for checking expirations (Miklos)

v6:
https://lore.kernel.org/linux-fsdevel/20240830162649.3849586-1-joannelkoong@gmail.com/
Changes from v6 -> v7:
- Make timer per-connection instead of per-request (Miklos)
- Make default granularity of time minutes instead of seconds
- Removed the reviewed-bys since the interface of this has changed (now
  minutes, instead of seconds)

v5:
https://lore.kernel.org/linux-fsdevel/20240826203234.4079338-1-joannelkoong@gmail.com/
Changes from v5 -> v6:
- Gate sysctl.o behind CONFIG_SYSCTL in makefile (kernel test robot)
- Reword/clarify last sentence in cover letter (Miklos)

v4:
https://lore.kernel.org/linux-fsdevel/20240813232241.2369855-1-joannelkoong@gmail.com/
Changes from v4 -> v5:
- Change timeout behavior from aborting request to aborting connection
  (Miklos)
- Clarify wording for sysctl documentation (Jingbo)

v3:
https://lore.kernel.org/linux-fsdevel/20240808190110.3188039-1-joannelkoong@gmail.com/
Changes from v3 -> v4:
- Fix wording on some comments to make it more clear
- Use simpler logic for timer (eg remove extra if checks, use mod timer API)
  (Josef)
- Sanity-check should be on FR_FINISHING not FR_FINISHED (Jingbo)
- Fix comment for "processing queue", add req->fpq = NULL safeguard  (Bernd)

v2:
https://lore.kernel.org/linux-fsdevel/20240730002348.3431931-1-joannelkoong@gmail.com/
Changes from v2 -> v3:
- Disarm / rearm timer in dev_do_read to handle race conditions (Bernrd)
- Disarm timer in error handling for fatal interrupt (Yafang)
- Clean up do_fuse_request_end (Jingbo)
- Add timer for notify retrieve requests 
- Fix kernel test robot errors for #define no-op functions

v1:
https://lore.kernel.org/linux-fsdevel/20240717213458.1613347-1-joannelkoong@gmail.com/
Changes from v1 -> v2:
- Add timeout for background requests
- Handle resend race condition
- Add sysctls

Joanne Koong (3):
  fs_parser: add fsparam_u16 helper
  fuse: add optional kernel-enforced timeout for requests
  fuse: add default_request_timeout and max_request_timeout sysctls

 Documentation/admin-guide/sysctl/fs.rst | 27 +++++++++
 fs/fs_parser.c                          | 14 +++++
 fs/fuse/dev.c                           | 80 +++++++++++++++++++++++++
 fs/fuse/fuse_i.h                        | 31 ++++++++++
 fs/fuse/inode.c                         | 33 ++++++++++
 fs/fuse/sysctl.c                        | 20 +++++++
 include/linux/fs_parser.h               |  9 ++-
 7 files changed, 211 insertions(+), 3 deletions(-)

-- 
2.43.5


^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2024-12-06 21:54 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-14 19:13 [PATCH RESEND v9 0/3] fuse: add kernel-enforced request timeout option Joanne Koong
2024-11-14 19:13 ` [PATCH RESEND v9 1/3] fs_parser: add fsparam_u16 helper Joanne Koong
2024-11-14 19:13 ` [PATCH RESEND v9 2/3] fuse: add optional kernel-enforced timeout for requests Joanne Koong
2024-12-06 16:30   ` Etienne Martineau
2024-11-28 10:44   ` Sergey Senozhatsky
2024-11-28 11:00     ` Bernd Schubert
2024-11-28 11:09       ` Sergey Senozhatsky
2024-11-28 11:23         ` Bernd Schubert
2024-11-28 11:54           ` Sergey Senozhatsky
2024-12-02  9:45             ` Tomasz Figa
2024-12-02 14:43               ` Bernd Schubert
2024-12-02 19:29                 ` Joanne Koong
2024-12-03  4:31                   ` Sergey Senozhatsky
2024-12-03  5:11                     ` Joanne Koong
2024-12-04 14:40                   ` Tomasz Figa
2024-12-04 14:51                     ` Brian Geffon
2024-12-04 15:09                       ` Bernd Schubert
2024-12-05  3:23                       ` Sergey Senozhatsky
2024-12-05 11:07                         ` Brian Geffon
2024-12-03 11:01   ` Sergey Senozhatsky
2024-12-06  0:06     ` Joanne Koong
2024-12-06  4:28       ` Sergey Senozhatsky
2024-12-04 13:14   ` Sergey Senozhatsky
2024-12-05 23:10     ` Joanne Koong
2024-12-04 13:47   ` Sergey Senozhatsky
2024-12-05 23:29     ` Joanne Koong
2024-12-06  3:26       ` Sergey Senozhatsky
2024-12-06  0:37   ` Jeff Layton
2024-12-06 19:19     ` Joanne Koong
2024-12-06 20:06       ` Jeff Layton
2024-12-06 19:05   ` Joanne Koong
2024-12-06 19:56     ` Etienne
2024-12-06 21:52       ` Joanne Koong
2024-12-06 20:12   ` Jeff Layton
2024-12-06 21:54     ` Joanne Koong
2024-11-14 19:13 ` [PATCH RESEND v9 3/3] fuse: add default_request_timeout and max_request_timeout sysctls Joanne Koong
2024-12-06  0:43   ` Jeff Layton
2024-12-06 18:16     ` Joanne Koong
2024-11-21 22:02 ` [PATCH RESEND v9 0/3] fuse: add kernel-enforced request timeout option Josef Bacik

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.