Re: [PATCH BUGFIX] block, bfq: deschedule empty bfq_queues not referred by any process

Oleksandr Natalenko
2019-11-14T08:53:29Z

Hi.

On 13.11.2019 18:42, Paolo Valente wrote:
>> Il giorno 13 nov 2019, alle ore 16:01, Oleksandr Natalenko
>> <oleksandr@natalenko.name> ha scritto:
> Ok, you may have given me enough information, thank you very much.
>
> Could you please apply the attached (compressed) patch on top of my
> offending patch? For review purposes, here is the simple change:
>
> --- a/block/bfq-iosched.c
> +++ b/block/bfq-iosched.c
> @@ -2728,7 +2728,8 @@ void bfq_release_process_ref(struct bfq_data
> *bfqd, struct bfq_queue *bfqq)
> * freed when dequeued from service. But this is assumed to
> * never happen.
> */
> - if (bfq_bfqq_busy(bfqq) && RB_EMPTY_ROOT(&bfqq->sort_list))
> + if (bfq_bfqq_busy(bfqq) && RB_EMPTY_ROOT(&bfqq->sort_list) &&
> + bfqq != bfqd->in_service_queue)
> bfq_del_bfqq_busy(bfqd, bfqq, false);
>
> bfq_put_queue(bfqq);

The issue is not reproducible for me after applying this patch.

Thank you.

--
Oleksandr Natalenko (post-factum)