On Wed, Mar 13, 2024 at 2:25 AM Wentao Zhang <[email protected]> wrote:
>
> 832a4d4cdb3f612d5079aadcc67a44f18fa7b5b7 in 5.10 did the patch back from 
> 2112f5c1330a671fa852051d85cb9eadc05d7eb7 in upstream.
>
> 2112f5c1330a671fa852051d85cb9eadc05d7eb7 add BLK_MQ_F_NO_SCHED_BY_DEFAULT to 
> tag_set.flags in loop device in the upstream, but
>
> 832a4d4cdb3f612d5079aadcc67a44f18fa7b5b7 add  BLK_MQ_F_NO_SCHED               
>        to tag_set.flags in loop device in the 5.10.
>
> this backport cause elv_support_iosched return false, then loop device get no 
> scheduler. As shown in the following record:
>
> root@intel-x86-64:~# cat /sys/block/sda/queue/scheduler
> [mq-deadline] kyber bfq none
> root@intel-x86-64:~# cat /sys/block/loop2/queue/scheduler
> [none]
>
> To solve this problem, we can backport the patch from upstream correctly, or 
> revert 832a4d4cdb3f612d5079aadcc67a44f18fa7b5b7.
>
> The loop device gets schedulers after applying the patch I submitted.
> I did the test in intel-x86-64 with linux-yocto, qemux86-64 with linux-yocto 
> and qemux86-64 with linux-yocto-rt.
> The test steps includes boot and "cat /sys/block/loop*/queue/scheduler".

Thanks! This is exactly the information I was looking for.

I agree that fixing this is better than the revert, since future
-stable patches may
need the functionality as a building block.

Bruce

>
> On 2024-03-13 10:59, Bruce Ashfield wrote:
>
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and 
> know the content is safe.
>
> Since this is requested for the common branches and
> hence all BSPs (This is the right place for a patch
> like this) ... can you provide some extra context
> about how they were identified (and tested).
>
> Similar to my earlier comment, these in theory should
> be nominated for -stable.
>
> Bruce
>
> In message: [linux-yocto][v5.10/standard/base && 
> v5.10/standard/preempt-rt/base][PATCH  1/2]  blk-mq: Introduce the 
> BLK_MQ_F_NO_SCHED_BY_DEFAULT flag
> on 12/03/2024 Wentao Zhang wrote:
>
> From: Bart Van Assche <[email protected]>
>
> commit 90b7198001f23ea37d3b46dc631bdaa2357a20b1 upstream.
>
> elevator_get_default() uses the following algorithm to select an I/O
> scheduler from inside add_disk():
> - In case of a single hardware queue or if sharing hardware queues across
>   multiple request queues (BLK_MQ_F_TAG_HCTX_SHARED), use mq-deadline.
> - Otherwise, use 'none'.
>
> This is a good choice for most but not for all block drivers. Make it
> possible to override the selection of mq-deadline with a new flag,
> namely BLK_MQ_F_NO_SCHED_BY_DEFAULT.
>
> Cc: Christoph Hellwig <[email protected]>
> Cc: Ming Lei <[email protected]>
> Cc: Tetsuo Handa <[email protected]>
> Cc: Martijn Coenen <[email protected]>
> Cc: Jaegeuk Kim <[email protected]>
> Signed-off-by: Bart Van Assche <[email protected]>
> Link: https://lore.kernel.org/r/[email protected]
> Signed-off-by: Jens Axboe <[email protected]>
> Signed-off-by: Wentao Zhang <[email protected]>
> ---
>  block/elevator.c       | 3 +++
>  include/linux/blk-mq.h | 6 ++++++
>  2 files changed, 9 insertions(+)
>
> diff --git a/block/elevator.c b/block/elevator.c
> index 2f962662c32a..f762b2af1d2a 100644
> --- a/block/elevator.c
> +++ b/block/elevator.c
> @@ -622,6 +622,9 @@ static inline bool elv_support_iosched(struct 
> request_queue *q)
>   */
>  static struct elevator_type *elevator_get_default(struct request_queue *q)
>  {
> +     if (q->tag_set && q->tag_set->flags & BLK_MQ_F_NO_SCHED_BY_DEFAULT)
> +             return NULL;
> +
>       if (q->nr_hw_queues != 1)
>               return NULL;
>
> diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
> index f8ea27423d1d..39526279fbd3 100644
> --- a/include/linux/blk-mq.h
> +++ b/include/linux/blk-mq.h
> @@ -398,7 +398,13 @@ enum {
>       BLK_MQ_F_STACKING       = 1 << 2,
>       BLK_MQ_F_TAG_HCTX_SHARED = 1 << 3,
>       BLK_MQ_F_BLOCKING       = 1 << 5,
> +     /* Do not allow an I/O scheduler to be configured. */
>       BLK_MQ_F_NO_SCHED       = 1 << 6,
> +     /*
> +      * Select 'none' during queue registration in case of a single hwq
> +      * or shared hwqs instead of 'mq-deadline'.
> +      */
> +     BLK_MQ_F_NO_SCHED_BY_DEFAULT    = 1 << 7,
>       BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
>       BLK_MQ_F_ALLOC_POLICY_BITS = 1,
>
> --
> 2.31.1
>
> --
> ☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮
> ☮ Wentao Zhang
> ☮ Wind River Linux
> ☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮☮



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13682): 
https://lists.yoctoproject.org/g/linux-yocto/message/13682
Mute This Topic: https://lists.yoctoproject.org/mt/104880299/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to