Re: [PATCH] loop: inherit the ioprio in loop woker thread

From: Jens Axboe
Date: Wed May 22 2024 - 14:14:05 EST


On 5/22/24 12:12 PM, Bart Van Assche wrote:
> On 5/22/24 10:57, Jens Axboe wrote:
>> On 5/22/24 11:38 AM, Bart Van Assche wrote:
>>> On 5/22/24 00:48, Yunlong Xing wrote:
>>>> @@ -1913,6 +1921,10 @@ static void loop_handle_cmd(struct loop_cmd *cmd)
>>>> set_active_memcg(old_memcg);
>>>> css_put(cmd_memcg_css);
>>>> }
>>>> +
>>>> + if (ori_ioprio != cmd_ioprio)
>>>> + set_task_ioprio(current, ori_ioprio);
>>>> +
>>>> failed:
>>>> /* complete non-aio request */
>>>> if (!use_aio || ret) {
>>>
>>> Does adding this call in the hot path have a measurable performance impact?
>>
>> It's loop, I would not be concerned with overhead. But it does look pretty
>> bogus to modify the task ioprio from here.
>
> Hi Jens,
>
> Maybe Yunlong uses that call to pass the I/O priority to the I/O submitter?
>
> I think that it is easy to pass the I/O priority to the kiocb submitted by
> lo_rw_aio() without calling set_task_ioprio().

Yeah that was my point, it's both the completely wrong way to do it, nor
is it a sane way to do it. If the current stack off that doesn't allow
priority to be passed, then that work would need to be done first.

--
Jens Axboe