From: John Garry <john.g.garry@oracle.com>
To: Bart Van Assche <bvanassche@acm.org>,
"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: Wed, 16 Apr 2025 08:16:57 +0100 [thread overview]
Message-ID: <d6b35769-e5f7-4174-b581-f6555aec1d4e@oracle.com> (raw)
In-Reply-To: <27e5c0e9-a042-45e3-9852-31adb966b781@acm.org>
On 15/04/2025 18:21, Bart Van Assche wrote:
> Using blk_mq_tag_to_rq() to translate a tag of a reserved
> request into a request pointer only works after the block layer has
> set tags->rqs[tag_of_reserved_request] first. That pointer is set by
> blk_mq_get_driver_tag(). blk_mq_get_driver_tag() is called by the
> block layer code that submits a request to a block driver. Hence, to
> ensure that blk_mq_get_driver_tag() is called for reserved requests
> the reserved requests would have to pass through scsi_queue_rq().
Ah, yes, we had the same discussion when trying to implement SCSI
reserved commands previously.
> For reserved requests sdev == NULL as explained in a previous email.
which mail exactly? I could not see any specific mention in this thread.
> There are many statements in the SCSI command submission and completion
> path in which it is assumed that sdev != NULL. I don't think that the
> SCSI maintainer (Martin) would agree with adding "if (sdev)" statements
> in many places in the SCSI core.
Sure, so, IIRC, Hannes solved this by using a shost sdev in
https://lore.kernel.org/linux-scsi/20211125151048.103910-2-hare@suse.de/
>
> Letting UFS reserved requests being processed by another function than
> scsi_queue_rq() doesn't seem feasible to me either.
JFYI, I was working on another solution (different to Hannes') which
allows reserved requests pass through scsi_queue_rq(), but I stopped
that work when I changed employer.
> Although it is easy
> to create an additional request queue for reserved requests, that
> request queue shares its tag set with the SCSI host and hence also the
> request submission function. From scsi_host.h:
>
> struct Scsi_Host {
> struct blk_mq_tag_set tag_set;
> [ ... ]
> };
>
> From blk-mq.h:
>
> struct blk_mq_tag_set {
> const struct blk_mq_ops *ops;
> [ ... ]
> };
>
> Unless someone comes up with an elegant proposal, I will keep the
> approach where ufshcd_tag_to_cmd() handles reserved tags and regular
> tags differently.
>
> It should be possible to do this without referencing tags->static_rqs[]
> directly from the UFS driver.
I'm not sure how that will look, but my preference is to fully implement
reserved tags support which can be used by all SCSI LLDs.
Thanks,
John
next prev parent reply other threads:[~2025-04-16 7:17 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
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 [this message]
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=d6b35769-e5f7-4174-b581-f6555aec1d4e@oracle.com \
--to=john.g.garry@oracle.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=bvanassche@acm.org \
--cc=hare@suse.de \
--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 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).