Re: [PATCH] xfs: fix nofs context corruption in xfs_btree_split_worker
From: Zhou, Yun
Date: Fri Jul 24 2026 - 04:04:08 EST
Hi Christoph,
On 7/20/2026 4:35 PM, Christoph Hellwig wrote:
On Mon, Jul 20, 2026 at 01:05:22PM +0800, Yun Zhou wrote:
current_set_flags_nested(&pflags, new_pflags);
- xfs_trans_set_context(args->cur->bc_tp);
+ nofs_flags = memalloc_nofs_save();
Note that the above is the only user of current_set_flags_nested.
args->result = __xfs_btree_split(args->cur, args->level, args->ptrp,
args->key, args->curp, args->stat);
- xfs_trans_clear_context(args->cur->bc_tp);
+ memalloc_nofs_restore(nofs_flags);
current_restore_flags_nested(&pflags, new_pflags);
and this is the only caller of current_restore_flags_nested. Both
of which modify the task flags just like memalloc_nofs_save.
I think we'd be much better of just killing all these silly helpers
and do direct current->flags manipulations, which will both clarify
this code and fix the bug it caused.
Similarly xfs_trans_set_context / xfs_trans_set_context need to go
away as they were a part of this problem. And to make this coherent,
it should be combined with your other flags series.
Thanks a lot.
I'd like to understand the scope you have in mind. Should the removal of xfs_trans_set/clear_context and current_set/restore_flags_nested be part of my nofs series, or is that something you'd prefer to handle separately?
BR,
Yun