btrfs: sector size < page size enhancement
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest7 patches 1 replyIn review
- v16 patches 3 repliesSuperseded
Changes in v2 from the cover letter
- 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.
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | btrfs: fix double accounting of ordered extents during errorsfs/ | +47 | 0 replies | |
| 2/7 | btrfs: fix inline data extent reads which zero out the remaining partfs/ | +9 | 0 replies | |
| 3/7 | btrfs: extract the inner loop of cow_file_range() to enhance the error handlingfs/ | +173 | 0 replies | |
| 4/7 | btrfs: use FGP_STABLE to wait for folio writebackfs/ fs/ | +2 | 0 replies | |
| 5/7 | btrfs: make btrfs_do_readpage() to do block-by-block readfs/ | +12 | 0 replies | |
| 6/7 | btrfs: avoid deadlock when reading a partial uptodate foliofs/ fs/ fs/ +4 more | +75 | 0 replies | |
| 7/7 | btrfs: allow buffered write to skip full page if it's sector alignedfs/ fs/ | +7 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.
Cover letter [PATCH v2 0/7] btrfs: sector size < page size enhancement
[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(-)
Signature · 1 line
2.47.0