Re: [PATCH v4 0/9] xfs/iomap: fix non-atomic clone operation and don't update size when zeroing range post eof
From: Chandan Babu R
Date: Wed Apr 17 2024 - 00:45:31 EST
On Wed, Mar 20, 2024 at 07:05:39 PM +0800, Zhang Yi wrote:
> Changes since v3:
> - Improve some git message comments and do some minor code cleanup, no
> logic changes.
>
> Changes since v2:
> - Merge the patch for dropping of xfs_convert_blocks() and the patch
> for modifying xfs_bmapi_convert_delalloc().
> - Reword the commit message of the second patch.
>
> Changes since v1:
> - Make xfs_bmapi_convert_delalloc() to allocate the target offset and
> drop the writeback helper xfs_convert_blocks().
> - Don't use xfs_iomap_write_direct() to convert delalloc blocks for
> zeroing posteof case, use xfs_bmapi_convert_delalloc() instead.
> - Fix two off-by-one issues when converting delalloc blocks.
> - Add a separate patch to drop the buffered write failure handle in
> zeroing and unsharing.
> - Add a comments do emphasize updating i_size should under folio lock.
> - Make iomap_write_end() to return a boolean, and do some cleanups in
> buffered write begin path.
>
> This patch series fix a problem of exposing zeroed data on xfs since the
> non-atomic clone operation. This problem was found while I was
> developing ext4 buffered IO iomap conversion (ext4 is relying on this
> fix [1]), the root cause of this problem and the discussion about the
> solution please see [2]. After fix the problem, iomap_zero_range()
> doesn't need to update i_size so that ext4 can use it to zero partial
> block, e.g. truncate eof block [3].
>
> [1] https://lore.kernel.org/linux-ext4/20240127015825.1608160-1-yi.zhang@xxxxxxxxxxxxxxx/
> [2] https://lore.kernel.org/linux-ext4/9b0040ef-3d9d-6246-4bdd-82b9a8f55fa2@xxxxxxxxxxxxxxx/
> [3] https://lore.kernel.org/linux-ext4/9c9f1831-a772-299b-072b-1c8116c3fb35@xxxxxxxxxxxxxxx/
>
> Thanks,
> Yi.
>
> Zhang Yi (9):
> xfs: match lock mode in xfs_buffered_write_iomap_begin()
> xfs: make the seq argument to xfs_bmapi_convert_delalloc() optional
> xfs: make xfs_bmapi_convert_delalloc() to allocate the target offset
> xfs: convert delayed extents to unwritten when zeroing post eof blocks
> iomap: drop the write failure handles when unsharing and zeroing
> iomap: don't increase i_size if it's not a write operation
> iomap: use a new variable to handle the written bytes in
> iomap_write_iter()
> iomap: make iomap_write_end() return a boolean
> iomap: do some small logical cleanup in buffered write
>
Hi all,
I have picked up this patchset for inclusion into XFS' 6.10-rc1 patch
queue. Please let me know if there are any objections.
--
Chandan