]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge tag 'for-6.17/block-20250728' of git://git.kernel.dk/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Jul 2025 23:43:54 +0000 (16:43 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 28 Jul 2025 23:43:54 +0000 (16:43 -0700)
Pull block updates from Jens Axboe:

 - MD pull request via Yu:
      - call del_gendisk synchronously (Xiao)
      - cleanup unused variable (John)
      - cleanup workqueue flags (Ryo)
      - fix faulty rdev can't be removed during resync (Qixing)

 - NVMe pull request via Christoph:
      - try PCIe function level reset on init failure (Keith Busch)
      - log TLS handshake failures at error level (Maurizio Lombardi)
      - pci-epf: do not complete commands twice if nvmet_req_init()
        fails (Rick Wertenbroek)
      - misc cleanups (Alok Tiwari)

 - Removal of the pktcdvd driver

   This has been more than a decade coming at this point, and some
   recently revealed breakages that had it causing issues even for cases
   where it isn't required made me re-pull the trigger on this one. It's
   known broken and nobody has stepped up to maintain the code

 - Series for ublk supporting batch commands, enabling the use of
   multishot where appropriate

 - Speed up ublk exit handling

 - Fix for the two-stage elevator fixing which could leak data

 - Convert NVMe to use the new IOVA based API

 - Increase default max transfer size to something more reasonable

 - Series fixing write operations on zoned DM devices

 - Add tracepoints for zoned block device operations

 - Prep series working towards improving blk-mq queue management in the
   presence of isolated CPUs

 - Don't allow updating of the block size of a loop device that is
   currently under exclusively ownership/open

 - Set chunk sectors from stacked device stripe size and use it for the
   atomic write size limit

 - Switch to folios in bcache read_super()

 - Fix for CD-ROM MRW exit flush handling

 - Various tweaks, fixes, and cleanups

* tag 'for-6.17/block-20250728' of git://git.kernel.dk/linux: (94 commits)
  block: restore two stage elevator switch while running nr_hw_queue update
  cdrom: Call cdrom_mrw_exit from cdrom_release function
  sunvdc: Balance device refcount in vdc_port_mpgroup_check
  nvme-pci: try function level reset on init failure
  dm: split write BIOs on zone boundaries when zone append is not emulated
  block: use chunk_sectors when evaluating stacked atomic write limits
  dm-stripe: limit chunk_sectors to the stripe size
  md/raid10: set chunk_sectors limit
  md/raid0: set chunk_sectors limit
  block: sanitize chunk_sectors for atomic write limits
  ilog2: add max_pow_of_two_factor()
  nvmet: pci-epf: Do not complete commands twice if nvmet_req_init() fails
  nvme-tcp: log TLS handshake failures at error level
  docs: nvme: fix grammar in nvme-pci-endpoint-target.rst
  nvme: fix typo in status code constant for self-test in progress
  nvmet: remove redundant assignment of error code in nvmet_ns_enable()
  nvme: fix incorrect variable in io cqes error message
  nvme: fix multiple spelling and grammar issues in host drivers
  block: fix blk_zone_append_update_request_bio() kernel-doc
  md/raid10: fix set but not used variable in sync_request_write()
  ...

12 files changed:
1  2 
MAINTAINERS
block/blk-settings.c
block/elevator.c
drivers/block/loop.c
drivers/block/nbd.c
drivers/block/ublk_drv.c
drivers/md/dm-crypt.c
drivers/md/raid10.c
drivers/nvme/host/core.c
drivers/nvme/host/pci.c
fs/xfs/xfs_mount.c
include/linux/blkdev.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0b690bc119d7caae1e33f03b7b0d038b2d856e6d,6c669ae082d4d9939f2c98b600e38d52c09dcf5c..2133fbaf17666f315600b59f7c8c409bb8b43f1b
@@@ -673,35 -672,49 +673,30 @@@ static inline xfs_extlen_t xfs_calc_ato
        return rounddown_pow_of_two(XFS_B_TO_FSB(mp, MAX_RW_COUNT));
  }
  
- static inline unsigned int max_pow_of_two_factor(const unsigned int nr)
- {
-       return 1 << (ffs(nr) - 1);
- }
  /*
 - * If the data device advertises atomic write support, limit the size of data
 - * device atomic writes to the greatest power-of-two factor of the AG size so
 - * that every atomic write unit aligns with the start of every AG.  This is
 - * required so that the per-AG allocations for an atomic write will always be
 + * If the underlying device advertises atomic write support, limit the size of
 + * atomic writes to the greatest power-of-two factor of the group size so
 + * that every atomic write unit aligns with the start of every group.  This is
 + * required so that the allocations for an atomic write will always be
   * aligned compatibly with the alignment requirements of the storage.
   *
 - * If the data device doesn't advertise atomic writes, then there are no
 - * alignment restrictions and the largest out-of-place write we can do
 - * ourselves is the number of blocks that user files can allocate from any AG.
 - */
 -static inline xfs_extlen_t xfs_calc_perag_awu_max(struct xfs_mount *mp)
 -{
 -      if (mp->m_ddev_targp->bt_bdev_awu_min > 0)
 -              return max_pow_of_two_factor(mp->m_sb.sb_agblocks);
 -      return rounddown_pow_of_two(mp->m_ag_max_usable);
 -}
 -
 -/*
 - * Reflink on the realtime device requires rtgroups, and atomic writes require
 - * reflink.
 - *
 - * If the realtime device advertises atomic write support, limit the size of
 - * data device atomic writes to the greatest power-of-two factor of the rtgroup
 - * size so that every atomic write unit aligns with the start of every rtgroup.
 - * This is required so that the per-rtgroup allocations for an atomic write
 - * will always be aligned compatibly with the alignment requirements of the
 - * storage.
 - *
 - * If the rt device doesn't advertise atomic writes, then there are no
 - * alignment restrictions and the largest out-of-place write we can do
 - * ourselves is the number of blocks that user files can allocate from any
 - * rtgroup.
 + * If the device doesn't advertise atomic writes, then there are no alignment
 + * restrictions and the largest out-of-place write we can do ourselves is the
 + * number of blocks that user files can allocate from any group.
   */
 -static inline xfs_extlen_t xfs_calc_rtgroup_awu_max(struct xfs_mount *mp)
 +static xfs_extlen_t
 +xfs_calc_group_awu_max(
 +      struct xfs_mount        *mp,
 +      enum xfs_group_type     type)
  {
 -      struct xfs_groups       *rgs = &mp->m_groups[XG_TYPE_RTG];
 +      struct xfs_groups       *g = &mp->m_groups[type];
 +      struct xfs_buftarg      *btp = xfs_group_type_buftarg(mp, type);
  
 -      if (rgs->blocks == 0)
 +      if (g->blocks == 0)
                return 0;
 -      if (mp->m_rtdev_targp && mp->m_rtdev_targp->bt_bdev_awu_min > 0)
 -              return max_pow_of_two_factor(rgs->blocks);
 -      return rounddown_pow_of_two(rgs->blocks);
 +      if (btp && btp->bt_awu_min > 0)
 +              return max_pow_of_two_factor(g->blocks);
 +      return rounddown_pow_of_two(g->blocks);
  }
  
  /* Compute the maximum atomic write unit size for each section. */
Simple merge