public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] btrfs: enhancement to pass generic/563
@ 2025-02-12  2:52 Qu Wenruo
  2025-02-12  2:52 ` [PATCH v2 1/3] btrfs: introduce a read path dedicated extent lock helper Qu Wenruo
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Qu Wenruo @ 2025-02-12  2:52 UTC (permalink / raw)
  To: linux-btrfs

[CHANGELOG]
v2:
- Rebased to the latest for-next branch
  There is a data corruption read fix, which changed the timing of
  btrfs_lock_and_flush_ordered_range().

- Introduce a dedicated and smarted, read path speific extent range lock
  helper, lock_extents_for_read()
  Which has all the extra subpage specific deadlock avoiding mechanism,
  along with a much better comments on which type of ordered extents
  needs to be waited, and which can be completely skipped.

The test case generic/563 on aarch64 with 64K page size and 4K fs block
size will fail with btrfs, but not EXT4 nor XFS.

The detailed reason is explained in the last patch, the TL;DR is that
btrfs is not handling block aligned buffered write in an optimized way
for subpage cases (block size < page size).

The first patch is to address the deadlock-prone
btrfs_lock_and_flush_ordered_range() in read paths, by introduce a
deadlock-avoiding helper for read paths.

The second patch is a refactor in preparation for the new enhancement.

Eventually the last patch will enable the enhancement and pass the
generic/563.

Qu Wenruo (3):
  btrfs: introduce a read path dedicated extent lock helper
  btrfs: make btrfs_do_readpage() to do block-by-block read
  btrfs: allow buffered write to avoid full page read if it's block
    aligned

 fs/btrfs/defrag.c       |   2 +-
 fs/btrfs/direct-io.c    |   2 +-
 fs/btrfs/extent_io.c    | 224 +++++++++++++++++++++++++++++++++++-----
 fs/btrfs/file.c         |   9 +-
 fs/btrfs/inode.c        |   4 +-
 fs/btrfs/ordered-data.c |  29 ++++--
 fs/btrfs/ordered-data.h |   3 +-
 7 files changed, 229 insertions(+), 44 deletions(-)

-- 
2.48.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-02-26  0:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-12  2:52 [PATCH v2 0/3] btrfs: enhancement to pass generic/563 Qu Wenruo
2025-02-12  2:52 ` [PATCH v2 1/3] btrfs: introduce a read path dedicated extent lock helper Qu Wenruo
2025-02-25 13:00   ` David Sterba
2025-02-26  0:04     ` Qu Wenruo
2025-02-12  2:52 ` [PATCH v2 2/3] btrfs: make btrfs_do_readpage() to do block-by-block read Qu Wenruo
2025-02-25 13:04   ` David Sterba
2025-02-12  2:52 ` [PATCH v2 3/3] btrfs: allow buffered write to avoid full page read if it's block aligned Qu Wenruo
2025-02-25 13:05   ` David Sterba

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox