From: Bart Van Assche <bvanassche@acm.org>
To: John Garry <john.g.garry@oracle.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>,
"James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Subject: Re: [PATCH 04/24] scsi: core: Implement reserved command handling
Date: Fri, 4 Apr 2025 09:34:10 -0700 [thread overview]
Message-ID: <e1cc3f08-e7e0-4eea-82a8-c5d2e7618238@acm.org> (raw)
In-Reply-To: <3c2fe290-5e24-4985-833c-24d8b80b98b7@oracle.com>
On 4/4/25 3:49 AM, John Garry wrote:
> On 03/04/2025 22:17, Bart Van Assche wrote:
>> From: Hannes Reinecke<hare@suse.de>
>>
>> Quite some drivers are using management commands internally. These
>> commands
>> typically use the same tag pool as regular SCSI commands. Tags for these
>> management commands are set aside before allocating the block-mq tag
>> bitmap
>> for regular SCSI commands. The block layer already supports this via the
>> reserved tag mechanism. Add a new field 'nr_reserved_cmds' to the SCSI
>> host
>> template to instruct the block layer to set aside a tag space for these
>> management commands by using reserved tags. Exclude reserved commands
>> from
>> .can_queue because .can_queue is visible in sysfs.
>>
>> Signed-off-by: Hannes Reinecke<hare@suse.de>
>> [ bvanassche: modified patch description ]
>> Cc: John Garry<john.g.garry@oracle.com>
>> Signed-off-by: Bart Van Assche<bvanassche@acm.org>
>
> How is this related to the rest of the series?
>
> To allocate a reserved-tag request we need to use BLK_MQ_REQ_RESERVED,
> right? I don't see that used...
Hi John,
Calling blk_mq_alloc_request(..., BLK_MQ_REQ_RESERVED) is not the only
way to allocated a reserved tag. Another possibility is to let the
driver manage reserved tags. The UFS driver only needs a single reserved
tag and already serializes use of that tag. See also the following
change in patch 21/24:
- hba->reserved_slot = hba->nutrs - 1;
+ hba->reserved_slot = 0;
Use of hba->reserved_slot is serialized by calling ufshcd_dev_man_lock()
and ufshcd_dev_man_unlock(). More code is serialized by these calls than
only the region in which hba->reserved_slot is used so I don't think
that the UFS driver code would become shorter by using block layer
functions for allocating / freeing reserved tags.
Thanks,
Bart.
next prev parent reply other threads:[~2025-04-04 16:34 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-03 21:17 [PATCH 00/24] Optimize the hot path in the UFS driver Bart Van Assche
2025-04-03 21:17 ` [PATCH 01/24] scsi: core: Make scsi_cmd_to_rq() accept const arguments Bart Van Assche
2025-04-04 10:39 ` John Garry
2025-04-04 16:23 ` Bart Van Assche
2025-08-18 6:03 ` Hannes Reinecke
2025-08-18 17:17 ` Bart Van Assche
2025-04-03 21:17 ` [PATCH 02/24] scsi: core: Make scsi_cmd_priv() " Bart Van Assche
2025-04-03 21:17 ` [PATCH 03/24] scsi: core: Use scsi_cmd_priv() instead of open-coding it Bart Van Assche
2025-04-03 21:17 ` [PATCH 04/24] scsi: core: Implement reserved command handling Bart Van Assche
2025-04-04 10:49 ` John Garry
2025-04-04 16:34 ` Bart Van Assche [this message]
2025-04-04 17:34 ` John Garry
2025-04-14 21:59 ` Bart Van Assche
2025-04-15 17:21 ` Bart Van Assche
2025-04-16 7:16 ` John Garry
2025-04-16 7:39 ` Hannes Reinecke
2025-04-16 8:23 ` John Garry
2025-04-17 21:25 ` Bart Van Assche
2025-04-22 6:54 ` Hannes Reinecke
2025-08-05 22:33 ` Bart Van Assche
2025-08-07 15:40 ` Bart Van Assche
2025-04-16 7:33 ` Hannes Reinecke
2025-08-07 16:35 ` Bart Van Assche
2025-04-03 21:17 ` [PATCH 05/24] scsi: core: Introduce scsi_host_update_can_queue() Bart Van Assche
2025-04-03 21:17 ` [PATCH 06/24] scsi: ufs: core: Change the type of one ufshcd_add_cmd_upiu_trace() argument Bart Van Assche
2025-04-09 5:34 ` Avri Altman
2025-04-14 12:47 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 07/24] scsi: ufs: core: Only call ufshcd_add_command_trace() for SCSI commands Bart Van Assche
2025-04-09 6:24 ` Avri Altman
2025-04-14 12:47 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 08/24] scsi: ufs: core: Change the type of one ufshcd_add_command_trace() argument Bart Van Assche
2025-04-09 6:32 ` Avri Altman
2025-04-09 16:37 ` Bart Van Assche
2025-04-14 12:47 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 09/24] scsi: ufs: core: Change the type of one ufshcd_send_command() argument Bart Van Assche
2025-04-09 6:34 ` Avri Altman
2025-04-14 12:48 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 10/24] scsi: ufs: core: Only call ufshcd_should_inform_monitor() for SCSI commands Bart Van Assche
2025-04-15 7:34 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 11/24] scsi: ufs: core: Change the monitor function argument types Bart Van Assche
2025-04-15 7:37 ` Peter Wang (王信友)
2025-04-15 20:10 ` Bart Van Assche
2025-04-03 21:17 ` [PATCH 12/24] scsi: ufs: core: Rework ufshcd_mcq_compl_pending_transfer() Bart Van Assche
2025-04-15 8:00 ` Peter Wang (王信友)
2025-04-15 20:22 ` Bart Van Assche
2025-04-17 12:39 ` Peter Wang (王信友)
2025-04-17 21:33 ` Bart Van Assche
2025-04-22 13:07 ` Peter Wang (王信友)
2025-04-03 21:17 ` [PATCH 13/24] scsi: ufs: core: Rework ufshcd_eh_device_reset_handler() Bart Van Assche
2025-04-03 21:17 ` [PATCH 14/24] scsi: ufs: core: Cache the DMA buffer sizes Bart Van Assche
2025-04-03 21:17 ` [PATCH 15/24] scsi: ufs: core: Add an argument to ufshcd_mcq_decide_queue_depth() Bart Van Assche
2025-04-03 21:18 ` [PATCH 16/24] scsi: ufs: core: Add an argument to ufshcd_alloc_mcq() Bart Van Assche
2025-04-03 21:18 ` [PATCH 17/24] scsi: ufs: core: Call ufshcd_mcq_init() once Bart Van Assche
2025-04-09 6:52 ` Avri Altman
2025-04-09 16:42 ` Bart Van Assche
2025-04-03 21:18 ` [PATCH 18/24] scsi: ufs: core: Allocate the SCSI host earlier Bart Van Assche
2025-04-03 21:18 ` [PATCH 19/24] scsi: ufs: core: Call ufshcd_init_lrb() later Bart Van Assche
2025-04-03 21:18 ` [PATCH 20/24] scsi: ufs: core: Use hba->reserved_slot Bart Van Assche
2025-04-03 21:18 ` [PATCH 21/24] scsi: ufs: core: Allocate the reserved slot as a reserved request Bart Van Assche
2025-04-03 21:18 ` [PATCH 22/24] scsi: ufs: core: Do not clear driver-private command data Bart Van Assche
2025-04-03 21:18 ` [PATCH 23/24] scsi: ufs: core: Optimize the hot path Bart Van Assche
2025-04-03 21:18 ` [PATCH 24/24] scsi: ufs: core: Remove the ufshcd_lrb task_tag member Bart Van Assche
2025-04-04 10:15 ` [PATCH 00/24] Optimize the hot path in the UFS driver John Garry
2025-04-04 17:05 ` Bart Van Assche
2025-04-05 12:03 ` Avri Altman
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=e1cc3f08-e7e0-4eea-82a8-c5d2e7618238@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 \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.