From: Damien Le Moal <dlemoal@kernel.org>
To: Bart Van Assche <bvanassche@acm.org>, Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Christoph Hellwig <hch@lst.de>, Ming Lei <ming.lei@redhat.com>,
"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: Re: [PATCH v9 04/17] scsi: core: Call .eh_prepare_resubmit() before resubmitting
Date: Fri, 18 Aug 2023 11:38:27 +0900 [thread overview]
Message-ID: <033a9b3f-c1d8-46b5-e4e4-350308648679@kernel.org> (raw)
In-Reply-To: <49bdae64-6162-5802-2dfb-c433ab48b5f9@acm.org>
On 2023/08/17 23:26, Bart Van Assche wrote:
> On 8/17/23 04:10, Damien Le Moal wrote:
>> On 8/17/23 04:53, Bart Van Assche wrote:
>>> +/*
>>> + * Returns true if the commands in @done_q should be sorted in LBA order
>>> + * before being resubmitted.
>>> + */
>>> +static bool scsi_needs_sorting(struct list_head *done_q)
>>> +{
>>> + struct scsi_cmnd *scmd;
>>> +
>>> + list_for_each_entry(scmd, done_q, eh_entry) {
>>> + struct request *rq = scsi_cmd_to_rq(scmd);
>>> +
>>> + if (!rq->q->limits.use_zone_write_lock &&
>>> + blk_rq_is_seq_zoned_write(rq))
>>> + return true;
>>> + }
>>> +
>>> + return false;
>>> +}
>>> +
>>> +/*
>>> + * Comparison function that allows to sort SCSI commands by ULD driver.
>>> + */
>>> +static int scsi_cmp_uld(void *priv, const struct list_head *_a,
>>> + const struct list_head *_b)
>>> +{
>>> + struct scsi_cmnd *a = list_entry(_a, typeof(*a), eh_entry);
>>> + struct scsi_cmnd *b = list_entry(_b, typeof(*b), eh_entry);
>>> +
>>> + /* See also the comment above the list_sort() definition. */
>>> + return scsi_cmd_to_driver(a) > scsi_cmd_to_driver(b);
>>> +}
>>> +
>>> +void scsi_call_prepare_resubmit(struct list_head *done_q)
>>> +{
>>> + struct scsi_cmnd *scmd, *next;
>>> +
>>> + if (!scsi_needs_sorting(done_q))
>>> + return;
>>
>> This is strange. The eh_prepare_resubmit callback is generic and its name does
>> not indicate anything related to sorting by LBAs. So this check would prevent
>> other actions not related to sorting by LBA. This should go away.
>>
>> In patch 6, based on the device characteristics, the sd driver should decides
>> if it needs to set .eh_prepare_resubmit or not.
>>
>> And ideally, if all ULDs have eh_prepare_resubmit == NULL, this function should
>> return here before going through the list of commands to resubmit. Given that
>> this list should generally be small, going through it and doing nothing should
>> be OK though...
>
> I can add a eh_prepare_resubmit == NULL check early in
> scsi_call_prepare_resubmit(). Regarding the code inside
> scsi_needs_sorting(), how about moving that code into an additional
> callback function, e.g. eh_needs_prepare_resubmit? Setting
> .eh_prepare_resubmit depending on the zone model would prevent
> constification of struct scsi_driver.
Sounds OK.
>
> Thanks,
>
> Bart.
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2023-08-18 2:39 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-16 19:53 [PATCH v9 00/17] Improve performance for zoned UFS devices Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 01/17] block: Introduce more member variables related to zone write locking Bart Van Assche
2023-08-17 11:00 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 02/17] block: Only use write locking if necessary Bart Van Assche
2023-08-17 11:01 ` Damien Le Moal
2023-08-17 14:21 ` Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 03/17] block/mq-deadline: Only use zone " Bart Van Assche
2023-08-17 11:02 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 04/17] scsi: core: Call .eh_prepare_resubmit() before resubmitting Bart Van Assche
2023-08-17 11:10 ` Damien Le Moal
2023-08-17 14:26 ` Bart Van Assche
2023-08-18 2:38 ` Damien Le Moal [this message]
2023-08-16 19:53 ` [PATCH v9 05/17] scsi: core: Add unit tests for scsi_call_prepare_resubmit() Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 06/17] scsi: sd: Sort commands by LBA before resubmitting Bart Van Assche
2023-08-17 11:13 ` Damien Le Moal
2023-08-17 14:34 ` Bart Van Assche
2023-08-18 2:41 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 07/17] scsi: core: Retry unaligned zoned writes Bart Van Assche
2023-08-17 11:21 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 08/17] scsi: sd_zbc: Only require an I/O scheduler if needed Bart Van Assche
2023-08-17 11:21 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 09/17] scsi: scsi_debug: Support disabling zone write locking Bart Van Assche
2023-08-17 11:25 ` Damien Le Moal
2023-08-17 14:35 ` Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 10/17] scsi: scsi_debug: Support injecting unaligned write errors Bart Van Assche
2023-08-17 11:29 ` Damien Le Moal
2023-08-16 19:53 ` [PATCH v9 11/17] scsi: ufs: hisi: Rework the code that disables auto-hibernation Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 12/17] scsi: ufs: mediatek: Rework the code for disabling auto-hibernation Bart Van Assche
2023-08-17 18:40 ` Bao D. Nguyen
2023-08-17 19:13 ` Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 13/17] scsi: ufs: sprd: " Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 14/17] scsi: ufs: Rename ufshcd_auto_hibern8_enable() and make it static Bart Van Assche
2023-08-17 18:49 ` Bao D. Nguyen
2023-08-17 19:16 ` Bart Van Assche
2023-08-17 21:48 ` Bao D. Nguyen
2023-08-16 19:53 ` [PATCH v9 15/17] scsi: ufs: Simplify ufshcd_auto_hibern8_update() Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 16/17] scsi: ufs: Forbid auto-hibernation without I/O scheduler Bart Van Assche
2023-08-17 18:50 ` Bao D. Nguyen
2023-08-17 19:18 ` Bart Van Assche
2023-08-16 19:53 ` [PATCH v9 17/17] scsi: ufs: Inform the block layer about write ordering Bart Van Assche
2023-08-17 19:00 ` Bao D. Nguyen
2023-08-17 19:34 ` Bart Van Assche
2023-08-17 21:47 ` Bao D. Nguyen
2023-08-17 22:05 ` Bart Van Assche
2023-08-18 0:19 ` Bao D. Nguyen
2023-08-18 17:56 ` 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=033a9b3f-c1d8-46b5-e4e4-350308648679@kernel.org \
--to=dlemoal@kernel.org \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=hch@lst.de \
--cc=jejb@linux.ibm.com \
--cc=linux-block@vger.kernel.org \
--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 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.