linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	"Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, Ming Lei <ming.lei@redhat.com>,
	"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Subject: Re: [PATCH v2 03/30] scsi: core: Do not allocate a budget token for reserved commands
Date: Thu, 21 Aug 2025 08:54:32 -0700	[thread overview]
Message-ID: <3a0c9dcb-71b9-4d58-bca1-53018248b018@acm.org> (raw)
In-Reply-To: <76de3bab-edf5-43eb-a5d6-28dcced2130a@suse.de>

On 8/20/25 11:42 PM, Hannes Reinecke wrote:
> Ah. But then you can allocate two separate queues & tagsets, one for
> TMFs and one for 'normal' commands (like NVMe does it).

Agreed.

> Then you wouldn't need reserved commands at all; they only make sense
> if TMFs and commands share the same tagspace.

That's wrong. There are other use cases for reserved commands, e.g. a
SCSI LLD driver allocating and submitting a SCSI or non-SCSI command to
the storage controller.

Here is an overview of the types of commands submitted by the UFS driver
to a UFS host controller:
* Task management functions. As explained in the previous email, TMFs
   have their own tag space that is separate from SCSI and non-SCSI
   commands.
* SCSI commands that are the result of a block layer request having been
   translated into a SCSI command, e.g. to implement filesystem I/O.
* SCSI passthrough commands submitted through the SG I/O interface.
* SCSI commands allocated and submitted by the SCSI core, e.g. the
   INQUIRY and MODE SELECT commands.
* SCSI commands allocated by the UFS driver, e.g. START STOP UNIT to
   change the power mode of the UFS device during runtime and system-wide
   power transitions.
* non-SCSI UPIU commands allocated by the UFS driver to perform tasks
   supported by the UFS standard that fall outside the scope of the
   SCSI standard, e.g. to query the supported queue depth or to interact
   with the real-time clock in the UFS device.
* non-SCSI UPIU commands submitted through the BSG interface.

The upstream UFS driver implements its own mechanism for reserving a tag
for non-SCSI UPIU commands (hba->reserved_slot). This patch series
converts that mechanism into allocating a reserved tag
(BLK_MQ_REQ_RESERVED).

Bart.

  reply	other threads:[~2025-08-21 15:54 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-11 17:34 [PATCH v2 00/30] Optimize the hot path in the UFS driver Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 01/30] scsi: core: Support allocating reserved commands Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 02/30] scsi: core: Support allocating a pseudo SCSI device Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 03/30] scsi: core: Do not allocate a budget token for reserved commands Bart Van Assche
2025-08-18 12:23   ` Hannes Reinecke
2025-08-18 13:16     ` John Garry
2025-08-18 13:21       ` Hannes Reinecke
2025-08-18 15:58         ` Bart Van Assche
2025-08-19  6:34           ` Hannes Reinecke
2025-08-19 19:49             ` Bart Van Assche
2025-08-20  6:54               ` Hannes Reinecke
2025-08-20 17:53                 ` Bart Van Assche
2025-08-21  6:42                   ` Hannes Reinecke
2025-08-21 15:54                     ` Bart Van Assche [this message]
2025-08-18 16:01     ` Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 04/30] scsi: core: Add scsi_{get,put}_internal_cmd() helpers Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 05/30] scsi: core: Introduce scsi_host_update_can_queue() Bart Van Assche
2025-08-13  9:47   ` John Garry
2025-08-13 15:23     ` Bart Van Assche
2025-08-14  8:24       ` John Garry
2025-08-14 16:17         ` Bart Van Assche
2025-08-14 17:03           ` John Garry
2025-08-15 17:13             ` Bart Van Assche
2025-08-18 13:29   ` Hannes Reinecke
2025-08-18 16:05     ` Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 06/30] scsi_debug: Set .alloc_pseudo_sdev Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 07/30] ufs: core: Move an assignment Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 08/30] ufs: core: Change the type of one ufshcd_add_cmd_upiu_trace() argument Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 09/30] ufs: core: Only call ufshcd_add_command_trace() for SCSI commands Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 10/30] ufs: core: Change the type of one ufshcd_add_command_trace() argument Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 11/30] ufs: core: Change the type of one ufshcd_send_command() argument Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 12/30] ufs: core: Only call ufshcd_should_inform_monitor() for SCSI commands Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 13/30] ufs: core: Change the monitor function argument types Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 14/30] ufs: core: Rework ufshcd_mcq_compl_pending_transfer() Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 15/30] ufs: core: Rework ufshcd_eh_device_reset_handler() Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 16/30] ufs: core: Cache the DMA buffer sizes Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 17/30] ufs: core: Add an argument to ufshcd_mcq_decide_queue_depth() Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 18/30] ufs: core: Add an argument to ufshcd_alloc_mcq() Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 19/30] ufs: core: Call ufshcd_mcq_init() once Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 20/30] ufs: core: Allocate the SCSI host earlier Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 21/30] ufs: core: Make ufshcd_mcq_init() independent of hba->nutrs Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 22/30] ufs: core: Call ufshcd_init_lrb() later Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 23/30] ufs: core: Use hba->reserved_slot Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 24/30] ufs: core: Make the reserved slot a reserved request Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 25/30] ufs: core: Do not clear driver-private command data Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 26/30] ufs: core: Optimize the hot path Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 27/30] ufs: core: Remove the ufshcd_lrb task_tag member Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 28/30] ufs: core: Initialize the 'hwq' variable earlier Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 29/30] ufs: core: Make blk_mq_tagset_busy_iter() skip reserved requests Bart Van Assche
2025-08-11 17:34 ` [PATCH v2 30/30] ufs: core: Switch to scsi_get_internal_cmd() Bart Van Assche
2025-08-13  9:49 ` [PATCH v2 00/30] Optimize the hot path in the UFS driver John Garry
2025-08-13 15:06   ` Bart Van Assche
2025-08-14  8:40     ` John Garry
2025-08-14 16:51       ` Bart Van Assche
2025-08-15  7:50         ` John Garry
2025-08-15 17:30           ` Bart Van Assche
2025-08-16  8:37             ` John Garry
2025-08-18 16:25               ` Bart Van Assche
2025-08-21 18:20           ` Bart Van Assche

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3a0c9dcb-71b9-4d58-bca1-53018248b018@acm.org \
    --to=bvanassche@acm.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=hare@suse.de \
    --cc=john.g.garry@oracle.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=ming.lei@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).