[GIT PULL] Block updates for 6.16-rc1

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

 



Hi Linus,

Here are the block changes scheduled for the 6.16-rc1 kernel release.
This pull request contains:

- ublk updates
	- Add support for updating the size of a ublk instance
	- Zero-copy improvements
	- Auto-registering of buffers for zero-copy
	- Series simplifying and improving GET_DATA and request lookup
	- Series adding quiesce support
	- Lots of selftests additions
	- Various cleanups

- NVMe updates via Christoph
	- add per-node DMA pools and use them for PRP/SGL allocations
          (Caleb Sander Mateos, Keith Busch)
	- nvme-fcloop refcounting fixes (Daniel Wagner)
	- support delayed removal of the multipath node and optionally
	  support the multipath node for private namespaces (Nilay
	  Shroff)
	- support shared CQs in the PCI endpoint target code (Wilfred
	  Mallawa)
	- support admin-queue only authentication (Hannes Reinecke)
	- use the crc32c library instead of the crypto API (Eric
	  Biggers)
	- misc cleanups (Christoph Hellwig, Marcelo Moreira,
	  Hannes Reinecke, Leon Romanovsky, Gustavo A. R. Silva)

- MD updates via Yu
	- Fix that normal IO can be starved by sync IO, found by mkfs on
	  newly created large raid5, with some clean up patches for bdev
	  inflight counters.

- Series cleaning up brd, getting rid of atomic kmaps and bvec poking.

- Add loop driver specifically for zoned IO testing.

- Eliminate blk-rq-qos calls with a static key, if not enabled.

- Series improving hctx locking for when a plug has IO for multiple
  queues pending.

- Series removing block layer bouncing support, which in turn means we
  can remove the per-node bounce stat as well.

- Series improving blk-throttle support.

- Series improving delay support for blk-throttle.

- Series improving brd discard support.

- Series unifying IO scheduler switching. This should also fix a bunch
  of lockdep warnings we've been seeing, after enabling lockdep support
  for queue freezing/unfreezeing.

- Add support for block write streams via FDP (flexible data placement)
  on NVMe.

- Series adding a bunch of block helpers, facilitating the removal of a
  bunch of boilerplate code that's duplicated.

- Remove obsolete BLK_MQ pci and virtio Kconfig options.

- Add atomic/untorn write support to blktrace.

- Various little cleanups and fixes.

Please pull!


The following changes since commit 6d732e8d1e6ddc27bbdebbee48fa5825203fb4a9:

  Merge tag 'nvme-6.15-2025-05-01' of git://git.infradead.org/nvme into block-6.15 (2025-05-01 07:56:02 -0600)

are available in the Git repository at:

  git://git.kernel.dk/linux.git tags/for-6.16/block-20250523

for you to fetch changes up to 533c87e2ed742454957f14d7bef9f48d5a72e72d:

  selftests: ublk: add test for UBLK_F_QUIESCE (2025-05-23 09:42:12 -0600)

----------------------------------------------------------------
for-6.16/block-20250523

----------------------------------------------------------------
Bart Van Assche (1):
      block: Simplify blk_mq_dispatch_rq_list() and its callers

Caleb Sander Mateos (17):
      ublk: remove unnecessary ubq checks
      block: take rq_list instead of plug in dispatch functions
      block: factor out blk_mq_dispatch_queue_requests() helper
      block: avoid hctx spinlock for plug with multiple queues
      ublk: fix "immepdately" typo in comment
      ublk: remove misleading "ubq" in "ubq_complete_io_cmd()"
      ublk: take const ubq pointer in ublk_get_iod()
      ublk: don't log uring_cmd cmd_op in ublk_dispatch_req()
      ublk: factor out ublk_start_io() helper
      ublk: don't call ublk_dispatch_req() for NEED_GET_DATA
      ublk: check UBLK_IO_FLAG_OWNED_BY_SRV in ublk_abort_queue()
      ublk: store request pointer in ublk_io
      ublk: consolidate UBLK_IO_FLAG_OWNED_BY_SRV checks
      nvme: fix write_stream_granularity initialization
      nvme-pci: factor out a nvme_init_hctx_common() helper
      nvme-pci: make PRP list DMA pools per-NUMA-node
      ublk: remove io argument from ublk_auto_buf_reg_fallback()

Chen Ni (1):
      cdrom: Remove unnecessary NULL check before unregister_sysctl_table()

Christoph Hellwig (51):
      brd: pass a bvec pointer to brd_do_bvec
      brd: remove the sector variable in brd_submit_bio
      brd: use bvec_kmap_local in brd_do_bvec
      brd: split I/O at page boundaries
      brd: use memcpy_{to,from]_page in brd_rw_bvec
      block: use writeback_iter
      scsi: make aha152x depend on !HIGHMEM
      scsi: make imm depend on !HIGHMEM
      scsi: make ppa depend on !HIGHMEM
      usb-storage: reject probe of device one non-DMA HCDs when using highmem
      scsi: remove the no_highmem flag in the host
      block: remove bounce buffering support
      mm: remove NR_BOUNCE zone stat
      block: look up the elevator type in elevator_switch
      block: fold elevator_disable into elevator_switch
      fs: add a write stream field to the kiocb
      block: add a bi_write_stream field
      block: introduce a write_stream_granularity queue limit
      block: expose write streams for block device nodes
      nvme: add a nvme_get_log_lsi helper
      nvme: pass a void pointer to nvme_get/set_features for the result
      nvme: add FDP definitions
      block: add a bio_add_virt_nofail helper
      block: add a bdev_rw_virt helper
      block: add a bio_add_max_vecs helper
      block: add a bio_add_vmalloc helpers
      block: remove the q argument from blk_rq_map_kern
      block: pass the operation to bio_{map,copy}_kern
      block: simplify bio_map_kern
      bcache: use bio_add_virt_nofail
      rnbd-srv: use bio_add_virt_nofail
      gfs2: use bdev_rw_virt in gfs2_read_super
      zonefs: use bdev_rw_virt in zonefs_read_super
      PM: hibernate: split and simplify hib_submit_io
      dm-bufio: use bio_add_virt_nofail
      dm-integrity: use bio_add_virt_nofail
      xfs: simplify xfs_buf_submit_bio
      xfs: simplify xfs_rw_bdev
      xfs: simplify building the bio in xlog_write_iclog
      btrfs: use bdev_rw_virt in scrub_one_super
      hfsplus: use bdev_rw_virt in hfsplus_submit_bio
      block: remove the same_page output argument to bvec_try_merge_page
      brd: avoid extra xarray lookups on first write
      blk-mq: move the DMA mapping code to a separate file
      blk-mq: add a copyright notice to blk-mq-dma.c
      nvme-pci: don't try to use SGLs for metadata on the admin queue
      nvme-pci: remove struct nvme_descriptor
      nvme-pci: rename the descriptor pools
      nvme-pci: use a better encoding for small prp pool allocations
      nvme-pci: use struct_size for allocation struct nvme_dev
      nvme-pci: derive and better document max segments limits

Damien Le Moal (2):
      block: new zoned loop block device driver
      Documentation: Document the new zoned loop block device driver

Daniel Wagner (14):
      nvmet-fcloop: track ref counts for nports
      nvmet-fcloop: remove nport from list on last user
      nvmet-fcloop: refactor fcloop_nport_alloc and track lport
      nvmet-fcloop: refactor fcloop_delete_local_port
      nvmet-fcloop: update refs on tfcp_req
      nvmet-fcloop: access fcpreq only when holding reqlock
      nvmet-fcloop: prevent double port deletion
      nvmet-fcloop: allocate/free fcloop_lsreq directly
      nvmet-fcloop: drop response if targetport is gone
      nvmet-fc: free pending reqs on tgtport unregister
      nvmet-fc: take tgtport refs for portentry
      nvmet-fcloop: add missing fcloop_callback_host_done
      nvmet-fcloop: don't wait for lport cleanup
      nvme-fc: do not reference lsrsp after failure

Eric Biggers (1):
      nvmet-tcp: switch to using the crc32c library

Gustavo A. R. Silva (1):
      nvme-loop: avoid -Wflex-array-member-not-at-end warning

Hannes Reinecke (6):
      nvme-tcp: remove redundant check to ctrl->opts
      nvme-tcp: open-code nvme_tcp_queue_request() for R2T
      nvme-auth: do not re-authenticate queues with no prior authentication
      nvmet-auth: authenticate on admin queue only
      nvme-auth: use SHASH_DESC_ON_STACK
      nvmet-auth: use SHASH_DESC_ON_STACK

Jens Axboe (7):
      block: ensure that struct blk_mq_alloc_data is fully initialized
      block: blk-rq-qos: guard rq-qos helpers by static key
      Merge branch 'block-6.15' into for-6.16/block
      Merge branch 'block-6.15' into for-6.16/block
      Merge tag 'md-6.16-20250513' of https://git.kernel.org/pub/scm/linux/kernel/git/mdraid/linux into for-6.16/block
      block/blk-throttle: silence !BLK_DEV_IO_TRACE variable warnings
      Merge tag 'nvme-6.16-2025-05-20' of git://git.infradead.org/nvme into for-6.16/block

Johannes Thumshirn (1):
      block: only update request sector if needed

Kanchan Joshi (1):
      nvme: fix incorrect sizeof

Keith Busch (5):
      block: introduce max_write_streams queue limit
      io_uring: enable per-io write streams
      nvme: register fdp parameters with the block layer
      nvme: use fdp streams if write stream is provided
      dmapool: add NUMA affinity support

Leon Romanovsky (2):
      nvme-pci: store aborted state in flags variable
      nvme-pci: add a symolic name for the small pool size

Lukas Bulwahn (1):
      block: Remove obsolete configs BLK_MQ_{PCI,VIRTIO}

Marcelo Moreira (1):
      nvmet: replace strncpy with strscpy

Ming Lei (40):
      block: move blk_mq_add_queue_tag_set() after blk_mq_map_swqueue()
      block: move ELEVATOR_FLAG_DISABLE_WBT a request queue flag
      block: don't call freeze queue in elevator_switch() and elevator_disable()
      block: use q->elevator with ->elevator_lock held in elv_iosched_show()
      block: add two helpers for registering/un-registering sched debugfs
      block: move sched debugfs register into elvevator_register_queue
      block: add helper add_disk_final()
      block: prevent adding/deleting disk during updating nr_hw_queues
      block: don't allow to switch elevator if updating nr_hw_queues is in-progress
      block: move blk_queue_registered() check into elv_iosched_store()
      block: simplify elevator reattachment for updating nr_hw_queues
      block: move queue freezing & elevator_lock into elevator_change()
      block: add `struct elv_change_ctx` for unifying elevator change
      block: unifying elevator change
      block: pass elevator_queue to elv_register_queue & unregister_queue
      block: remove elevator queue's type check in elv_attr_show/store()
      block: fail to show/store elevator sysfs attribute if elevator is dying
      block: add new helper for disabling elevator switch when deleting disk
      block: move elv_register[unregister]_queue out of elevator_lock
      block: move hctx debugfs/sysfs registering out of freezing queue
      block: don't acquire ->elevator_lock in blk_mq_map_swqueue and blk_mq_realloc_hw_ctxs
      block: move hctx cpuhp add/del out of queue freezing
      block: move wbt_enable_default() out of queue freezing from sched ->exit()
      block: fix warning on 'make htmldocs'
      fs: aio: initialize .ki_write_stream of read-write request
      block: don't quiesce queue for calling elevator_set_none()
      block: move removing elevator after deleting disk->queue_kobj
      selftests: ublk: make IO & device removal test more stressful
      ublk: convert to refcount_t
      ublk: prepare for supporting to register request buffer automatically
      ublk: register buffer to local io_uring with provided buf index via UBLK_F_AUTO_BUF_REG
      ublk: support UBLK_AUTO_BUF_REG_FALLBACK
      selftests: ublk: support UBLK_F_AUTO_BUF_REG
      selftests: ublk: add test for covering UBLK_AUTO_BUF_REG_FALLBACK
      ublk: handle ublk_set_auto_buf_reg() failure correctly in ublk_fetch()
      io_uring: add helper io_uring_cmd_ctx_handle()
      ublk: run auto buf unregisgering in same io_ring_ctx with registering
      selftests: ublk: add test case for UBLK_U_CMD_UPDATE_SIZE
      ublk: add feature UBLK_F_QUIESCE
      selftests: ublk: add test for UBLK_F_QUIESCE

Nilay Shroff (5):
      block: unfreeze queue if realloc tag set fails during nr_hw_queues update
      block: fix elv_update_nr_hw_queues() to reattach elevator
      nvme-multipath: introduce delayed removal of the multipath head node
      nvme: introduce multipath_always_on module param
      nvme: rename nvme_mpath_shutdown_disk to nvme_mpath_remove_disk

Omri Mann (1):
      ublk: Add UBLK_U_CMD_UPDATE_SIZE

Ritesh Harjani (IBM) (1):
      traceevent/block: Add REQ_ATOMIC flag to block trace events

Uday Shankar (4):
      ublk: factor out ublk_commit_and_fetch
      selftests: ublk: kublk: build with -Werror iff WERROR!=0
      selftests: ublk: make test_generic_06 silent on success
      selftests: ublk: kublk: fix include path

Wilfred Mallawa (5):
      nvmet: add a helper function for cqid checking
      nvmet: cq: prepare for completion queue sharing
      nvmet: fabrics: add CQ init and destroy
      nvmet: support completion queue sharing
      nvmet: simplify the nvmet_req_init() interface

Yu Kuai (12):
      brd: protect page with rcu
      brd: fix aligned_sector from brd_do_discard()
      brd: fix discard end sector
      blk-mq: remove blk_mq_in_flight()
      block: reuse part_in_flight_rw for part_in_flight
      block: WARN if bdev inflight counter is negative
      block: clean up blk_mq_in_flight_rw()
      block: export API to get the number of bdev inflight IO
      md: record dm-raid gendisk in mddev
      md: add a new api sync_io_depth
      md: fix is_mddev_idle()
      md: clean up accounting for issued sync IO

Zizhi Wo (10):
      blk-throttle: Fix wrong tg->[bytes/io]_disp update in __tg_update_carryover()
      blk-throttle: Delete unnecessary carryover-related fields from throtl_grp
      blk-throttle: Add an additional overflow check to the call calculate_bytes/io_allowed
      blk-throttle: Rename tg_may_dispatch() to tg_dispatch_time()
      blk-throttle: Refactor tg_dispatch_time by extracting tg_dispatch_bps/iops_time
      blk-throttle: Split throtl_charge_bio() into bps and iops functions
      blk-throttle: Introduce flag "BIO_TG_BPS_THROTTLED"
      blk-throttle: Split the blkthrotl queue
      blk-throttle: Split the service queue
      blk-throttle: Prevents the bps restricted io from entering the bps queue again

 Documentation/ABI/stable/sysfs-block          |   15 +
 Documentation/admin-guide/blockdev/index.rst  |    1 +
 .../admin-guide/blockdev/zoned_loop.rst       |  169 ++
 MAINTAINERS                                   |    8 +
 arch/mips/configs/gcw0_defconfig              |    1 -
 block/Kconfig                                 |    8 -
 block/Makefile                                |    5 +-
 block/bfq-iosched.c                           |    6 +-
 block/bio-integrity.c                         |    4 +-
 block/bio.c                                   |  158 +-
 block/blk-core.c                              |    2 +-
 block/blk-crypto-fallback.c                   |    1 +
 block/blk-map.c                               |   93 +-
 block/blk-merge.c                             |  137 +-
 block/blk-mq-debugfs.c                        |   13 +-
 block/blk-mq-dma.c                            |  116 ++
 block/blk-mq-sched.c                          |   53 +-
 block/blk-mq.c                                |  309 ++--
 block/blk-mq.h                                |    7 +-
 block/blk-rq-qos.c                            |    4 +
 block/blk-rq-qos.h                            |   21 +-
 block/blk-settings.c                          |    5 -
 block/blk-sysfs.c                             |   34 +-
 block/blk-throttle.c                          |  411 +++--
 block/blk-throttle.h                          |   36 +-
 block/blk-wbt.c                               |    9 +-
 block/blk.h                                   |   50 +-
 block/bounce.c                                |  267 ----
 block/elevator.c                              |  329 ++--
 block/elevator.h                              |    6 +-
 block/fops.c                                  |   28 +-
 block/genhd.c                                 |  266 ++--
 block/mq-deadline.c                           |    2 +-
 drivers/base/node.c                           |    2 +-
 drivers/block/Kconfig                         |   19 +
 drivers/block/Makefile                        |    1 +
 drivers/block/brd.c                           |  225 +--
 drivers/block/pktcdvd.c                       |    2 +-
 drivers/block/rnbd/rnbd-srv.c                 |    7 +-
 drivers/block/ublk_drv.c                      |  569 +++++--
 drivers/block/virtio_blk.c                    |    4 +-
 drivers/block/zloop.c                         | 1385 +++++++++++++++++
 drivers/cdrom/cdrom.c                         |    3 +-
 drivers/md/bcache/super.c                     |    3 +-
 drivers/md/dm-bufio.c                         |    2 +-
 drivers/md/dm-integrity.c                     |   16 +-
 drivers/md/dm-raid.c                          |    3 +
 drivers/md/md.c                               |  190 ++-
 drivers/md/md.h                               |   18 +-
 drivers/md/raid1.c                            |    3 -
 drivers/md/raid10.c                           |    9 -
 drivers/md/raid5.c                            |    8 -
 drivers/nvme/common/auth.c                    |   15 +-
 drivers/nvme/host/auth.c                      |   30 +-
 drivers/nvme/host/core.c                      |  205 ++-
 drivers/nvme/host/fc.c                        |   13 +-
 drivers/nvme/host/multipath.c                 |  206 ++-
 drivers/nvme/host/nvme.h                      |   31 +-
 drivers/nvme/host/pci.c                       |  300 ++--
 drivers/nvme/host/sysfs.c                     |    7 +
 drivers/nvme/host/tcp.c                       |   14 +-
 drivers/nvme/target/admin-cmd.c               |   31 +-
 drivers/nvme/target/auth.c                    |   21 +-
 drivers/nvme/target/core.c                    |   94 +-
 drivers/nvme/target/discovery.c               |    2 +-
 drivers/nvme/target/fabrics-cmd.c             |   12 +-
 drivers/nvme/target/fc.c                      |   96 +-
 drivers/nvme/target/fcloop.c                  |  439 ++++--
 drivers/nvme/target/loop.c                    |   29 +-
 drivers/nvme/target/nvmet.h                   |   24 +-
 drivers/nvme/target/pci-epf.c                 |   14 +-
 drivers/nvme/target/rdma.c                    |    8 +-
 drivers/nvme/target/tcp.c                     |  100 +-
 drivers/scsi/Kconfig                          |    3 +
 drivers/scsi/aha152x.c                        |    1 -
 drivers/scsi/imm.c                            |    1 -
 drivers/scsi/ppa.c                            |    1 -
 drivers/scsi/scsi_ioctl.c                     |    2 +-
 drivers/scsi/scsi_lib.c                       |    6 +-
 drivers/usb/storage/usb.c                     |   20 +-
 fs/aio.c                                      |    1 +
 fs/btrfs/scrub.c                              |   10 +-
 fs/gfs2/ops_fstype.c                          |   24 +-
 fs/hfsplus/wrapper.c                          |   46 +-
 fs/proc/meminfo.c                             |    3 +-
 fs/xfs/xfs_bio_io.c                           |   30 +-
 fs/xfs/xfs_buf.c                              |   43 +-
 fs/xfs/xfs_log.c                              |   32 +-
 fs/zonefs/super.c                             |   34 +-
 include/linux/bio.h                           |   25 +-
 include/linux/blk-mq.h                        |   10 +-
 include/linux/blk_types.h                     |   10 +-
 include/linux/blkdev.h                        |   24 +-
 include/linux/dmapool.h                       |   21 +-
 include/linux/fs.h                            |    1 +
 include/linux/io_uring/cmd.h                  |    9 +
 include/linux/mmzone.h                        |    1 -
 include/linux/nvme.h                          |   77 +
 include/linux/part_stat.h                     |    2 +
 include/scsi/scsi_host.h                      |    2 -
 include/trace/events/block.h                  |   17 +-
 include/uapi/linux/blktrace_api.h             |    2 +-
 include/uapi/linux/io_uring.h                 |    4 +
 include/uapi/linux/ublk_cmd.h                 |  128 ++
 io_uring/io_uring.c                           |    2 +
 io_uring/rw.c                                 |    1 +
 kernel/power/swap.c                           |  103 +-
 kernel/trace/blktrace.c                       |   11 +-
 mm/dmapool.c                                  |   15 +-
 mm/show_mem.c                                 |    4 +-
 tools/testing/selftests/ublk/Makefile         |   11 +-
 tools/testing/selftests/ublk/fault_inject.c   |    5 +
 tools/testing/selftests/ublk/file_backed.c    |   17 +-
 tools/testing/selftests/ublk/kublk.c          |  153 +-
 tools/testing/selftests/ublk/kublk.h          |   22 +-
 tools/testing/selftests/ublk/null.c           |   55 +-
 tools/testing/selftests/ublk/stripe.c         |   26 +-
 tools/testing/selftests/ublk/test_common.sh   |   39 +-
 .../testing/selftests/ublk/test_generic_04.sh |    2 +-
 .../testing/selftests/ublk/test_generic_05.sh |    2 +-
 .../testing/selftests/ublk/test_generic_06.sh |    2 +-
 .../testing/selftests/ublk/test_generic_08.sh |   32 +
 .../testing/selftests/ublk/test_generic_09.sh |   28 +
 .../testing/selftests/ublk/test_generic_10.sh |   30 +
 .../testing/selftests/ublk/test_generic_11.sh |   44 +
 .../testing/selftests/ublk/test_stress_02.sh  |   10 +-
 .../testing/selftests/ublk/test_stress_03.sh  |    7 +
 .../testing/selftests/ublk/test_stress_04.sh  |    7 +
 .../testing/selftests/ublk/test_stress_05.sh  |    9 +
 129 files changed, 5491 insertions(+), 2470 deletions(-)
 create mode 100644 Documentation/admin-guide/blockdev/zoned_loop.rst
 create mode 100644 block/blk-mq-dma.c
 delete mode 100644 block/bounce.c
 create mode 100644 drivers/block/zloop.c
 create mode 100755 tools/testing/selftests/ublk/test_generic_08.sh
 create mode 100755 tools/testing/selftests/ublk/test_generic_09.sh
 create mode 100755 tools/testing/selftests/ublk/test_generic_10.sh
 create mode 100755 tools/testing/selftests/ublk/test_generic_11.sh

-- 
Jens Axboe





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux