Linux filesystem development
 help / color / mirror / Atom feed
  • [parent not found: <20260119074425.4005867-6-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-4-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-3-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-5-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-7-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-8-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-9-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-10-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-11-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-12-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-13-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-14-hch@lst.de>]
  • [parent not found: <20260119074425.4005867-15-hch@lst.de>]
  • * Re: bounce buffer direct I/O when stable pages are required v2
           [not found] ` <20260119074425.4005867-1-hch@lst.de>
                         ` (13 preceding siblings ...)
           [not found]   ` <20260119074425.4005867-15-hch@lst.de>
    @ 2026-01-23 12:10   ` Anuj Gupta
      2026-01-23 14:01     ` Christoph Hellwig
      2026-01-23 14:09     ` Keith Busch
      2026-01-23 12:24   ` Christian Brauner
      15 siblings, 2 replies; 54+ messages in thread
    From: Anuj Gupta @ 2026-01-23 12:10 UTC (permalink / raw)
      To: Christoph Hellwig
      Cc: Jens Axboe, Christian Brauner, Darrick J. Wong, Carlos Maiolino,
    	Qu Wenruo, Al Viro, linux-block, linux-xfs, linux-fsdevel
    
    [-- Attachment #1: Type: text/plain, Size: 2043 bytes --]
    
    I ran experiments[1] on two devices - Samsung PM1733 and Intel Optane
    with PI enabled (4K + 8b format). On my setup, I didn't observe any
    noticeable difference for sequential write workloads. Sequential reads,
    however, show a clear performance drop while using bounce buffering,
    which is expected.
    Used these fio commands listed below[2]
    
    Feel free to add:
    Tested-by: Anuj Gupta <anuj20.g@samsung.com
    
    [1]
    Intel Optane:
    
    Sequential write
       | size | zero copy  |  bounce    | 
       +------+------------+------------+
       |   4k | 158MiB/s   | 161MiB/s   |
       |  64K | 4522MiB/s  | 4506MiB/s  |
       |   1M | 4573MiB/s  | 4571MiB/s  |
       +------+-------------------------+
    
    Sequential read
       | size | zero copy  |  bounce    | 
       +------+------------+------------+
       |   4k | 1693MiB/s  | 1245MiB/s  |
       |  64K | 6518MiB/s  | 4763MiB/s  |
       |   1M | 6731MiB/s  | 5475MiB/s  |
       +------+-------------------------+
       
       
    For Samsung PM1733:
    
    Sequential write
       | size | zero copy  |  bounce    | 
       +------+------------+------------+
       |   4k | 155MiB/s   | 153MiB/s   |
       |  64K | 3899MiB/s  | 3868MiB/s  |
       |   1M | 4117MiB/s  | 4116MiB/s  |
       +------+-------------------------+
    
    Sequential read
       | size | zero copy  |  bounce    | 
       +------+------------+------------+
       |   4k | 602MiB/s   | 244MiB/s  |
       |  64K | 4613MiB/s  | 2141MiB/s  |
       |   1M | 5868MiB/s  | 5162MiB/s  |
       +------+-------------------------+
       
    
    [2]
    Write benchmark -
    fio --name=write_new_4k --filename=/mnt/writefile --rw=write --bs=4k --size=20G --ioengine=io_uring --direct=1 --iodepth=16 --numjobs=1 --time_based=1 --runtime=30 --group_reporting
    
    Read benchmark -
    Prepare the file:
    fio --name=prep_create_prepfile --filename=/mnt/prepfile --rw=write --bs=1M --size=20G --ioengine=io_uring --direct=1 --iodepth=16 --numjobs=1 --group_reporting
    
    Then run the read workload:
    fio --name=read_4k --filename=/mnt/prepfile --rw=read --bs=4k --size=20G --ioengine=io_uring --direct=1 --iodepth=16 --numjobs=1 --time_based=1 --runtime=30 --group_reporting
    
    [-- Attachment #2: Type: text/plain, Size: 0 bytes --]
    
    
    
    ^ permalink raw reply	[flat|nested] 54+ messages in thread
  • * Re: bounce buffer direct I/O when stable pages are required v2
           [not found] ` <20260119074425.4005867-1-hch@lst.de>
                         ` (14 preceding siblings ...)
      2026-01-23 12:10   ` bounce buffer direct I/O when stable pages are required v2 Anuj Gupta
    @ 2026-01-23 12:24   ` Christian Brauner
      2026-01-23 14:10     ` block or iomap tree, was: " Christoph Hellwig
      15 siblings, 1 reply; 54+ messages in thread
    From: Christian Brauner @ 2026-01-23 12:24 UTC (permalink / raw)
      To: Christoph Hellwig
      Cc: Christian Brauner, Darrick J. Wong, Carlos Maiolino, Qu Wenruo,
    	Al Viro, linux-block, linux-xfs, linux-fsdevel, Jens Axboe
    
    On Mon, 19 Jan 2026 08:44:07 +0100, Christoph Hellwig wrote:
    > this series tries to address the problem that under I/O pages can be
    > modified during direct I/O, even when the device or file system require
    > stable pages during I/O to calculate checksums, parity or data
    > operations.  It does so by adding block layer helpers to bounce buffer
    > an iov_iter into a bio, then wires that up in iomap and ultimately
    > XFS.
    > 
    > [...]
    
    Applied to the vfs-7.0.iomap branch of the vfs/vfs.git tree.
    Patches in the vfs-7.0.iomap branch should appear in linux-next soon.
    
    Please report any outstanding bugs that were missed during review in a
    new review to the original patch series allowing us to drop it.
    
    It's encouraged to provide Acked-bys and Reviewed-bys even though the
    patch has now been applied. If possible patch trailers will be updated.
    
    Note that commit hashes shown below are subject to change due to rebase,
    trailer updates or similar. If in doubt, please check the listed branch.
    
    tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
    branch: vfs-7.0.iomap
    
    [01/14] block: refactor get_contig_folio_len
            https://git.kernel.org/vfs/vfs/c/81b30a454966
    [02/14] block: open code bio_add_page and fix handling of mismatching P2P ranges
            https://git.kernel.org/vfs/vfs/c/447ca020a401
    [03/14] iov_iter: extract a iov_iter_extract_bvecs helper from bio code
            https://git.kernel.org/vfs/vfs/c/1f0b577cd289
    [04/14] block: remove bio_release_page
            https://git.kernel.org/vfs/vfs/c/8422e6bde5c1
    [05/14] block: add helpers to bounce buffer an iov_iter into bios
            https://git.kernel.org/vfs/vfs/c/cec1a583be7b
    [06/14] iomap: fix submission side handling of completion side errors
            https://git.kernel.org/vfs/vfs/c/006966526be1
    [07/14] iomap: simplify iomap_dio_bio_iter
            https://git.kernel.org/vfs/vfs/c/87226227f1bc
    [08/14] iomap: split out the per-bio logic from iomap_dio_bio_iter
            https://git.kernel.org/vfs/vfs/c/d9e65abb3c1b
    [09/14] iomap: share code between iomap_dio_bio_end_io and iomap_finish_ioend_direct
            https://git.kernel.org/vfs/vfs/c/eb1620aac3ed
    [10/14] iomap: free the bio before completing the dio
            https://git.kernel.org/vfs/vfs/c/dd6c37c1e1bf
    [11/14] iomap: rename IOMAP_DIO_DIRTY to IOMAP_DIO_USER_BACKED
            https://git.kernel.org/vfs/vfs/c/ee377c08560c
    [12/14] iomap: support ioends for direct reads
            https://git.kernel.org/vfs/vfs/c/3bcca2b5d53b
    [13/14] iomap: add a flag to bounce buffer direct I/O
            https://git.kernel.org/vfs/vfs/c/dcc3a3452079
    [14/14] xfs: use bounce buffering direct I/O when the device requires stable pages
            https://git.kernel.org/vfs/vfs/c/387bea142297
    
    ^ permalink raw reply	[flat|nested] 54+ messages in thread

  • end of thread, other threads:[~2026-02-03 16:32 UTC | newest]
    
    Thread overview: 54+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <CGME20260123121444epcas5p4e729259011e031a28be8379ea3b9b749@epcas5p4.samsung.com>
         [not found] ` <20260119074425.4005867-1-hch@lst.de>
         [not found]   ` <20260119074425.4005867-2-hch@lst.de>
    2026-01-22 11:00     ` [PATCH 01/14] block: refactor get_contig_folio_len Johannes Thumshirn
    2026-01-22 17:54     ` Darrick J. Wong
    2026-01-23  8:32     ` Damien Le Moal
    2026-01-23  8:35       ` Christoph Hellwig
    2026-01-23  8:44         ` Damien Le Moal
    2026-01-23  8:45     ` Damien Le Moal
    2026-01-23 12:14     ` Anuj Gupta
         [not found]   ` <20260119074425.4005867-6-hch@lst.de>
    2026-01-22 13:05     ` [PATCH 05/14] block: add helpers to bounce buffer an iov_iter into bios Johannes Thumshirn
    2026-01-22 17:25     ` Darrick J. Wong
    2026-01-23  5:51       ` Christoph Hellwig
    2026-01-23  7:11         ` Darrick J. Wong
    2026-01-23  7:16           ` Christoph Hellwig
    2026-01-23  8:52     ` Damien Le Moal
    2026-01-23 12:20     ` Anuj Gupta
         [not found]   ` <20260119074425.4005867-4-hch@lst.de>
    2026-01-22 17:47     ` [PATCH 03/14] iov_iter: extract a iov_iter_extract_bvecs helper from bio code Darrick J. Wong
    2026-01-23  5:44       ` Christoph Hellwig
    2026-01-23  7:09         ` Darrick J. Wong
    2026-01-23  7:14           ` Christoph Hellwig
    2026-01-23 11:37     ` David Howells
    2026-01-23 13:58       ` Christoph Hellwig
    2026-01-23 14:57         ` David Howells
    2026-01-26 17:36           ` Matthew Wilcox
    2026-01-27  5:13             ` Christoph Hellwig
    2026-01-27  5:44               ` Matthew Wilcox
    2026-01-27  5:47                 ` Christoph Hellwig
    2026-02-03  8:20           ` Askar Safin
    2026-02-03 10:28           ` Askar Safin
    2026-02-03 16:32             ` Christoph Hellwig
         [not found]   ` <20260119074425.4005867-3-hch@lst.de>
    2026-01-22 11:04     ` [PATCH 02/14] block: open code bio_add_page and fix handling of mismatching P2P ranges Johannes Thumshirn
    2026-01-22 17:59     ` Darrick J. Wong
    2026-01-23  5:43       ` Christoph Hellwig
    2026-01-23  7:05         ` Darrick J. Wong
    2026-01-23  8:35     ` Damien Le Moal
    2026-01-23 12:15     ` Anuj Gupta
         [not found]   ` <20260119074425.4005867-5-hch@lst.de>
    2026-01-22 11:14     ` [PATCH 04/14] block: remove bio_release_page Johannes Thumshirn
    2026-01-22 17:26     ` Darrick J. Wong
    2026-01-23  8:43     ` Damien Le Moal
    2026-01-23 12:17     ` Anuj Gupta
         [not found]   ` <20260119074425.4005867-7-hch@lst.de>
    2026-01-23  8:54     ` [PATCH 06/14] iomap: fix submission side handling of completion side errors Damien Le Moal
         [not found]   ` <20260119074425.4005867-8-hch@lst.de>
    2026-01-23  8:55     ` [PATCH 07/14] iomap: simplify iomap_dio_bio_iter Damien Le Moal
         [not found]   ` <20260119074425.4005867-9-hch@lst.de>
    2026-01-23  8:57     ` [PATCH 08/14] iomap: split out the per-bio logic from iomap_dio_bio_iter Damien Le Moal
         [not found]   ` <20260119074425.4005867-10-hch@lst.de>
    2026-01-23  8:58     ` [PATCH 09/14] iomap: share code between iomap_dio_bio_end_io and iomap_finish_ioend_direct Damien Le Moal
         [not found]   ` <20260119074425.4005867-11-hch@lst.de>
    2026-01-23  8:59     ` [PATCH 10/14] iomap: free the bio before completing the dio Damien Le Moal
         [not found]   ` <20260119074425.4005867-12-hch@lst.de>
    2026-01-23  9:00     ` [PATCH 11/14] iomap: rename IOMAP_DIO_DIRTY to IOMAP_DIO_USER_BACKED Damien Le Moal
         [not found]   ` <20260119074425.4005867-13-hch@lst.de>
    2026-01-23  9:02     ` [PATCH 12/14] iomap: support ioends for direct reads Damien Le Moal
         [not found]   ` <20260119074425.4005867-14-hch@lst.de>
    2026-01-23  9:05     ` [PATCH 13/14] iomap: add a flag to bounce buffer direct I/O Damien Le Moal
         [not found]   ` <20260119074425.4005867-15-hch@lst.de>
    2026-01-23  9:08     ` [PATCH 14/14] xfs: use bounce buffering direct I/O when the device requires stable pages Damien Le Moal
    2026-01-23 12:10   ` bounce buffer direct I/O when stable pages are required v2 Anuj Gupta
    2026-01-23 14:01     ` Christoph Hellwig
    2026-01-23 14:09     ` Keith Busch
    2026-01-23 12:24   ` Christian Brauner
    2026-01-23 14:10     ` block or iomap tree, was: " Christoph Hellwig
    2026-01-27 10:31       ` Christian Brauner
    2026-01-27 12:50         ` Christoph Hellwig
    

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