Re: [PATCH v2] fuse: permit freezing while waiting for request answer
Sergey Senozhatsky <[email protected]>
| Newsgroups | org.kernel.vger.linux-fsdevel,dev.linux.lists.fuse-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On (26/08/19 12:03), Miklos Szeredi wrote: > On Wed, 19 Aug 2026 at 04:35, Sergey Senozhatsky > <[email protected]> wrote: > > > > Suspend freezes tasks in random order and doesn't take into > > consideration producer-consumer dependency that may exist > > between tasks. One example where this can cause issues is: > > fuse server getting frozen ahead of clients, which then get > > stuck waiting for req answers that never come (the server > > is already frozen). > > > > Make all wait-event calls in request_wait_answer() freezer-friendly. > > > > This, however, doesn't address all cases. E.g. in-place > > PM-freeze of a request_wait_answer() task holding a contended > > VFS lock still will block suspend. > > > > Note: this uses TASK_FREEZABLE, not TASK_FREEZABLE_UNSAFE, > > which may trigger debug_locks warning during suspend (if > > request_wait_answer() task holds some locks at the time > > of freeze.) > > This is not okay. I see the "no new users" warning on > TASK_FREEZABLE_UNSAFE, but this needs further discussion. Sure. In RFC patch I had TASK_FREEZABLE_UNSAFE but eventually "don't add new users" won. > Existing users of the _UNSAFE variant are NFS and samba. I haven't > checked the context where these are called. > > Apparently __sb_start_write() uses the safe variant, yet I'm quite > sure it will be called in various locking contexts. We also use "safe" variant in fuse_get_req(). > Why is this unsafe exactly? Does that unsafeness apply to > filesystems? If so why do we allow freezing while blocked on > sb_start_write()? Right, I don't have much to add to the point that maybe file-systems can get a waiver. If we suspend under un-contended VFS lock then it doesn't look like unsafe here (we similarly can sleep indefinitely under the same lock waiting for server reply); if the lock is contended then suspend will fail.