Re: [PATCH v4 1/2] ext4: use fsdata to track inline data write state and fix race
From: Theodore Ts'o
Date: Thu Jul 23 2026 - 09:15:50 EST
On Fri, 03 Jul 2026 04:54:12 +0000, Aditya Srivastava wrote:
> Instead of checking the live inode state (ext4_has_inline_data(inode)
> and ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) in the
> write_end handlers, use the fsdata parameter of the address space
> operations to explicitly pass down the state in which write_begin
> prepared the write.
>
> A concurrent thread (such as ext4_page_mkwrite()) can convert the
> inline data to an extent between write_begin and write_end. If this
> happens, the write_end handlers would previously miss the inline
> write_end path and fall through to extent-based write_end logic.
> However, since block buffers were never allocated in write_begin,
> this resulted in NULL pointer dereferences or data loss because
> folio_buffers(folio) was NULL.
>
> [...]
Applied, thanks!
[1/2] ext4: use fsdata to track inline data write state and fix race
commit: 7edbb323bab2b2a609016014caafdb651c898249
[2/2] ext4: cleanup unused CONVERT_INLINE_DATA flag
commit: f6065852d2137734bcb26c9f94e5daf526179aa9
Best regards,
--
Theodore Ts'o <tytso@xxxxxxx>