[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP4dvseEksJNZf-sUVZj_x97v8=tCDh2dECRMynuYtYfmsw=uw@mail.gmail.com>
Date: Thu, 8 Jan 2026 10:25:42 +0800
From: Zhang Tianci <zhangtianci.1997@...edance.com>
To: Joanne Koong <joannelkoong@...il.com>
Cc: miklos@...redi.hu, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, xieyongji@...edance.com,
zhujia.zj@...edance.com, Jiachen Zhang <zhangjiachen.jaycee@...edance.com>
Subject: Re: [External] Re: [PATCH] fuse: add hang check in request_wait_answer()
Hi Joanne,
> I think if the fusedaemon is in a process exit state (by "process exit
> state", I think you're talking about the state where
> fuse_session_exit() has been called but the daemon is stuck/hanging
> before actual process exit?), this can still be detected in libfuse.
> For example one idea could be libfuse spinning up a watchdog monitor
> thread that has logic checking if the session's mt_exited has been set
> with no progress on /sys/fs/fuse/.../waiting requests being fulfilled.
The process exit state I referred to is a more severe scenario:
the FUSEDaemon may be killed abruptly due to bugs or OOM.
In such an unexpected exit, no userspace threads can run normally.
However, some threads may remain stuck in the kernel and fail to exit properly.
We have encountered at least two such cases:
1. The mount system call of the FUSEDaemon is blocked by other threads
and cannot acquire the super_block_list lock.(Our FUSEDaemon supports
multiple mount points, so this mount operation will affect the
other mount points
within the FUSEDaemon process.)
2. The jbd2 subsystem of the ext4 filesystem, which the FUSEDaemon
logging system depends on, triggers a logical deadlock caused by
priority inversion.
In these instances, a userspace watchdog would be ineffective.
Thanks,
Tianci
Powered by blists - more mailing lists