mbox series

[v2,0/7] btrfs: sector size < page size enhancement

Message ID cover.1732492421.git.wqu@suse.com (mailing list archive)
Headers show
Series btrfs: sector size < page size enhancement | expand

Message

Qu Wenruo Nov. 24, 2024, 11:57 p.m. UTC
[CHANGELOG]
v2:
- Add the new fix for inline data read which can cause data corruption
  Thankfully this doesn't affect any one until the last patch enabling
  the partial uptodate folio support.

  But it is still required before we enabling partial uptodate folio, as
  a btrfs can be generated on x86_64 with inline data extents, then
  booted on an aarch64 system.

- Update the double accounting fix to cover errors from
  writepage_delalloc()
  WHich is the missing case which can still reproduce generic/750 crash.

This series contains several sector size < page size fixes and
optimization:

- Pass generic/563 with 4k sector size and 16K/64K page size
  The last patch.

  The test case is a special cgroup one, which requires the fs to avoid
  reading the whole folio as long as the buffered write range is btrfs
  sector aligned.

- Fix generic/750 failure with 4K sector size and 16K/64K page size
  It's a double ordered extent accounting for sector size < page size
  cases, covering two different error paths.
  The first patch.

The remaining are all preparations for the above goals.

Qu Wenruo (7):
  btrfs: fix double accounting of ordered extents during errors
  btrfs: fix inline data extent reads which zero out the remaining part
  btrfs: extract the inner loop of cow_file_range() to enhance the error
    handling
  btrfs: use FGP_STABLE to wait for folio writeback
  btrfs: make btrfs_do_readpage() to do block-by-block read
  btrfs: avoid deadlock when reading a partial uptodate folio
  btrfs: allow buffered write to skip full page if it's sector aligned

 fs/btrfs/defrag.c       |   6 +-
 fs/btrfs/direct-io.c    |   2 +-
 fs/btrfs/extent_io.c    |  98 +++++++----
 fs/btrfs/file.c         |  13 +-
 fs/btrfs/inode.c        | 362 +++++++++++++++++++++-------------------
 fs/btrfs/ordered-data.c |  67 +++++++-
 fs/btrfs/ordered-data.h |   8 +-
 7 files changed, 325 insertions(+), 231 deletions(-)