[PATCH v6 0/1] xfs: prevent close() hangs on frozen filesystems

Aditya Prakash Srivastava posted 1 patch 1 week, 4 days ago
fs/xfs/xfs_file.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
[PATCH v6 0/1] xfs: prevent close() hangs on frozen filesystems
Posted by Aditya Prakash Srivastava 1 week, 4 days ago
Hi Christoph, Darrick, and Carlos,

This is version 6 of the patch series addressing the close() system
call hanging indefinitely on frozen XFS filesystems (Bugzilla #205833).

In v5, I introduced a transaction allocation flag
(XFS_TRANS_WRITECOUNT_TRYLOCK) to handle the trylock inside
__xfs_trans_alloc() and propagated it down to xfs_free_eofblocks().
Christoph suggested this design and reviewed the implementation.

However, Darrick suggested that the deadlock can be resolved much
more simply at the VFS-layer within xfs_file_release() by surrounding
the existing check with sb_start_write_trylock() instead of passing
transaction allocation flags all the way down.

This v6 implements that VFS-layer trylock approach. It modifies only a
single file (fs/xfs/xfs_file.c). If sb_start_write_trylock() fails (meaning
the filesystem is frozen or freezing), we simply skip the speculative
preallocation trim.

I would appreciate your guidance on which of the two architectural
paths is preferred for XFS:
1. The v5 transaction-flag approach (centralized within xfs_trans_alloc).
2. The v6 VFS-level trylock approach (localized within xfs_file_release).

If the v5 approach is preferred, I will rebase the transaction-flag
patches onto the current master and submit them as a new version.

Thanks,
Aditya

Aditya Prakash Srivastava (1):
  xfs: prevent close() from hanging on frozen filesystems

 fs/xfs/xfs_file.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

-- 
2.47.3
Re: [PATCH v6 0/1] xfs: prevent close() hangs on frozen filesystems
Posted by Carlos Maiolino 1 week, 1 day ago
On Mon, 14 Sep 2026 09:31:50 +0000, Aditya Prakash Srivastava wrote:
> This is version 6 of the patch series addressing the close() system
> call hanging indefinitely on frozen XFS filesystems (Bugzilla #205833).
> 
> In v5, I introduced a transaction allocation flag
> (XFS_TRANS_WRITECOUNT_TRYLOCK) to handle the trylock inside
> __xfs_trans_alloc() and propagated it down to xfs_free_eofblocks().
> Christoph suggested this design and reviewed the implementation.
> 
> [...]

Applied to for-next, thanks!

[1/1] xfs: prevent close() from hanging on frozen filesystems
      commit: 6fdfe8606f99d86bdd109c94ef0821b8529fe44b

Best regards,
-- 
Carlos Maiolino <cem@kernel.org>