Commit 77a0cfafa9af for kernel

commit 77a0cfafa9af9c0d5b43534eb90d530c189edca1
Merge: 3d1b536c13f7 88d47f629313
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon Nov 18 16:50:08 2024 -0800

    Merge tag 'for-6.13/block-20241118' of git://git.kernel.dk/linux

    Pull block updates from Jens Axboe:

     - NVMe updates via Keith:
          - Use uring_cmd helper (Pavel)
          - Host Memory Buffer allocation enhancements (Christoph)
          - Target persistent reservation support (Guixin)
          - Persistent reservation tracing (Guixen)
          - NVMe 2.1 specification support (Keith)
          - Rotational Meta Support (Matias, Wang, Keith)
          - Volatile cache detection enhancment (Guixen)

     - MD updates via Song:
          - Maintainers update
          - raid5 sync IO fix
          - Enhance handling of faulty and blocked devices
          - raid5-ppl atomic improvement
          - md-bitmap fix

     - Support for manually defining embedded partition tables

     - Zone append fixes and cleanups

     - Stop sending the queued requests in the plug list to the driver
       ->queue_rqs() handle in reverse order.

     - Zoned write plug cleanups

     - Cleanups disk stats tracking and add support for disk stats for
       passthrough IO

     - Add preparatory support for file system atomic writes

     - Add lockdep support for queue freezing. Already found a bunch of
       issues, and some fixes for that are in here. More will be coming.

     - Fix race between queue stopping/quiescing and IO queueing

     - ublk recovery improvements

     - Fix ublk mmap for 64k pages

     - Various fixes and cleanups

    * tag 'for-6.13/block-20241118' of git://git.kernel.dk/linux: (118 commits)
      MAINTAINERS: Update git tree for mdraid subsystem
      block: make struct rq_list available for !CONFIG_BLOCK
      block/genhd: use seq_put_decimal_ull for diskstats decimal values
      block: don't reorder requests in blk_mq_add_to_batch
      block: don't reorder requests in blk_add_rq_to_plug
      block: add a rq_list type
      block: remove rq_list_move
      virtio_blk: reverse request order in virtio_queue_rqs
      nvme-pci: reverse request order in nvme_queue_rqs
      btrfs: validate queue limits
      block: export blk_validate_limits
      nvmet: add tracing of reservation commands
      nvme: parse reservation commands's action and rtype to string
      nvmet: report ns's vwc not present
      md/raid5: Increase r5conf.cache_name size
      block: remove the ioprio field from struct request
      block: remove the write_hint field from struct request
      nvme: check ns's volatile write cache not present
      nvme: add rotational support
      nvme: use command set independent id ns if available
      ...

diff --cc drivers/nvme/host/core.c
index 855b42c92284,7360e9c3acff..1a8d32a4a5c3
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@@ -4893,9 -4872,8 +4902,9 @@@ void nvme_unfreeze(struct nvme_ctrl *ct
  	int srcu_idx;

  	srcu_idx = srcu_read_lock(&ctrl->srcu);
 -	list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
 +	list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
 +				 srcu_read_lock_held(&ctrl->srcu))
- 		blk_mq_unfreeze_queue(ns->queue);
+ 		blk_mq_unfreeze_queue_non_owner(ns->queue);
  	srcu_read_unlock(&ctrl->srcu, srcu_idx);
  	clear_bit(NVME_CTRL_FROZEN, &ctrl->flags);
  }
@@@ -4938,9 -4914,13 +4947,14 @@@ void nvme_start_freeze(struct nvme_ctr

  	set_bit(NVME_CTRL_FROZEN, &ctrl->flags);
  	srcu_idx = srcu_read_lock(&ctrl->srcu);
 -	list_for_each_entry_rcu(ns, &ctrl->namespaces, list)
 +	list_for_each_entry_srcu(ns, &ctrl->namespaces, list,
 +				 srcu_read_lock_held(&ctrl->srcu))
- 		blk_freeze_queue_start(ns->queue);
+ 		/*
+ 		 * Typical non_owner use case is from pci driver, in which
+ 		 * start_freeze is called from timeout work function, but
+ 		 * unfreeze is done in reset work context
+ 		 */
+ 		blk_freeze_queue_start_non_owner(ns->queue);
  	srcu_read_unlock(&ctrl->srcu, srcu_idx);
  }
  EXPORT_SYMBOL_GPL(nvme_start_freeze);