From: test75@free.fr
To: linux-fsdevel@vger.kernel.org, linux-pm@vger.kernel.org
Cc: miklos@szeredi.hu, senozhatsky@chromium.org,
peterz@infradead.org, rafael@kernel.org
Subject: Re: [PATCH v2] fuse: permit freezing while waiting for request answer
Date: Fri, 23 Oct 2026 05:43:20 +0200 [thread overview]
Message-ID: <ba420b83d986313239d1252a94315790@free.fr> (raw)
Hi,
A field report that may help with the design discussion in this
thread. It is a case where freeze ordering alone would not help.
Setup: Ubuntu 26.04, 7.0.0-38-generic, Framework 13 (AMD, s2idle),
systemd 259, rclone 1.60 FUSE mounts (Google Drive, SMB, SFTP).
On lid close, a gvfs backend thread was in statx() on an rclone mount.
The rclone server was not frozen. It was waiting on the network, and
NetworkManager takes the Wi-Fi down as part of the sleep sequence.
That dependency is invisible to the kernel (the same point as the
sshfs/ssh example earlier in the thread). The request never completed,
so every suspend attempt failed. With the lid closed, logind retried
every ~100 s for 6 hours (about 210 cycles):
Freezing user space processes failed after 20.003 seconds (3 tasks
refusing to freeze, wq_busy=0):
task:pool-906 state:D pid:153003 tgid:6222 ppid:4922
request_wait_answer+0xd8/0x280
__fuse_simple_request+0x11f/0x370
fuse_lookup_name+0xd6/0x260
fuse_lookup+0x9d/0x1e0
__lookup_slow+0x86/0x150
lookup_slow+0x3c/0x60
link_path_walk+0x348/0x410
path_lookupat / filename_lookup / vfs_statx / do_statx
task:pool-907 state:D pid:171158 tgid:6222 ppid:4922
request_wait_answer+0xd8/0x280
__fuse_simple_request+0x11f/0x370
fuse_dentry_revalidate+0x146/0x410
lookup_fast+0x15c/0x170
link_path_walk / ... / do_statx
task:pool-908 state:D pid:197388 tgid:6222 ppid:4922
d_alloc_parallel+0x37b/0x460
__lookup_slow+0x5d/0x150
lookup_slow+0x3c/0x60
link_path_walk / ... / do_statx
Two observations:
1. pool-906 and pool-907 would be covered by a freezable wait in
request_wait_answer(). pool-906 sits in lookup_slow(), so it holds
the parent's i_rwsem shared at freeze time.
2. pool-908 is the third task. It is not in FUSE code. It waits in
d_alloc_parallel() on the in-lookup dentry owned by pool-906. So
even with v2 applied, this suspend would still have failed. This
matches the "contended VFS lock" limitation in the v2 changelog,
but here the second waiter is a plain uninterruptible wait in the
dcache rather than a lock. This pattern looks common in practice:
desktop indexers and trash/thumbnail daemons stat the same
directory from several threads.
The same signature shows up 1,000+ times in this machine's journal
since April (gvfsd-trash, localsearch-extractor as clients). I can
provide the full logs.
Thanks,
Phil
reply other threads:[~2026-10-23 3:43 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ba420b83d986313239d1252a94315790@free.fr \
--to=test75@free.fr \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=peterz@infradead.org \
--cc=rafael@kernel.org \
--cc=senozhatsky@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox