[GIT PULL] iomap: new code for 6.6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi Linus,

Please pull this branch with changes for iomap for 6.6-rc1.  We've got
some big changes for this release -- I'm very happy to be landing
willy's work to enable large folios for the page cache for general read
and write IOs when the fs can make contiguous space allocations, and
Ritesh's work to track sub-folio dirty state to eliminate the write
amplification problems inherent in using large folios.  As a bonus,
io_uring can now process write completions in the caller's context
instead of bouncing through a workqueue, which should reduce io latency
dramatically.  IOWs, XFS should see a nice performance bump for both IO

I did a test-merge with the main upstream branch as of a few minutes
ago, and didn't see any conflicts.  Please let me know if you encounter
any problems.

As for XFS -- as has been widely covered elsewhere, I have stepped down
from the maintainer role and welcome Chandan Babu as the new release
manager.  Please expect the XFS pull request for 6.6 to come from him in
a few days.  He and I haven't quite finished the gpg-and-korg git tree
transition process yet, so please excuse any bumps along the way.
Nearly all the patches are from me anyway, so he and I have both been
running QA on the 6.6 merge branch in parallel for the past few weeks.


The following changes since commit 6eaae198076080886b9e7d57f4ae06fa782f90ef:

Linux 6.5-rc3 (2023-07-23 15:24:10 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/iomap-6.6-merge-3

for you to fetch changes up to 377698d4abe2cd118dd866d5ef19e2f1aa6b9758:

Merge tag 'xfs-async-dio.6-2023-08-01' of git://git.kernel.dk/linux into iomap-6.6-mergeA (2023-08-01 16:41:49 -0700)

New code for 6.6:

* Make large writes to the page cache fill sparse parts of the cache
with large folios, then use large memcpy calls for the large folio.
* Track the per-block dirty state of each large folio so that a
buffered write to a single byte on a large folio does not result in a
(potentially) multi-megabyte writeback IO.
* Allow some directio completions to be performed in the initiating
task's context instead of punting through a workqueue.  This will
reduce latency for some io_uring requests.

Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx>

Darrick J. Wong (3):
Merge tag 'large-folio-writes' of git://git.infradead.org/users/willy/pagecache into iomap-6.6-merge
Merge tag 'iomap-per-block-dirty-tracking' of https://github.com/riteshharjani/linux into iomap-6.6-merge
Merge tag 'xfs-async-dio.6-2023-08-01' of git://git.kernel.dk/linux into iomap-6.6-mergeA

Jens Axboe (8):
iomap: cleanup up iomap_dio_bio_end_io()
iomap: use an unsigned type for IOMAP_DIO_* defines
iomap: treat a write through cache the same as FUA
iomap: only set iocb->private for polled bio
fs: add IOCB flags related to passing back dio completions
io_uring/rw: add write support for IOCB_DIO_CALLER_COMP
iomap: support IOCB_DIO_CALLER_COMP

Matthew Wilcox (Oracle) (10):
iov_iter: Map the page later in copy_page_from_iter_atomic()
iov_iter: Handle compound highmem pages in copy_page_from_iter_atomic()
iov_iter: Add copy_folio_from_iter_atomic()
iomap: Remove large folio handling in iomap_invalidate_folio()
doc: Correct the description of ->release_folio
iomap: Remove unnecessary test from iomap_release_folio()
filemap: Add fgf_t typedef
filemap: Allow __filemap_get_folio to allocate large folios
iomap: Create large folios in the buffered write path
iomap: Copy larger chunks from userspace

Ritesh Harjani (IBM) (8):
iomap: Rename iomap_page to iomap_folio_state and others
iomap: Drop ifs argument from iomap_set_range_uptodate()
iomap: Add some uptodate state handling helpers for ifs state bitmap
iomap: Fix possible overflow condition in iomap_write_delalloc_scan
iomap: Use iomap_punch_t typedef
iomap: Refactor iomap_write_delalloc_punch() function out
iomap: Allocate ifs in ->write_begin() early
iomap: Add per-block dirty state tracking to improve performance

Documentation/filesystems/locking.rst |  15 +-
fs/btrfs/file.c                       |   6 +-
fs/f2fs/compress.c                    |   2 +-
fs/f2fs/f2fs.h                        |   2 +-
fs/gfs2/aops.c                        |   2 +-
fs/gfs2/bmap.c                        |   2 +-
fs/iomap/buffered-io.c                | 469 +++++++++++++++++++++++-----------
fs/iomap/direct-io.c                  | 161 +++++++++---
fs/xfs/xfs_aops.c                     |   2 +-
fs/zonefs/file.c                      |   2 +-
include/linux/fs.h                    |  35 ++-
include/linux/iomap.h                 |   3 +-
include/linux/pagemap.h               |  82 +++++-
include/linux/uio.h                   |   9 +-
io_uring/rw.c                         |  27 +-
lib/iov_iter.c                        |  43 ++--
mm/filemap.c                          |  65 ++---
mm/folio-compat.c                     |   2 +-
mm/readahead.c                        |  13 -
19 files changed, 660 insertions(+), 282 deletions(-)

[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]

  Powered by Linux