On 10/2/19 8:25 AM, Martin Wilck wrote:
> On Wed, 2019-10-02 at 08:17 -0700, Bart Van Assche wrote:
>>
>> Both loops check the loop termination condition twice. Has it been
>> considered to write these loops such that the loop termination
>> condition
>> is only tested once, e.g. using the following pattern?
>>
>> for (i = 0; i < 10; i++)
>>      if (wait_event_timeout(...) > 0)
>>              break;
>>
> 
> Right, that's probably better. This was just meant as a minimal,
> temporary fix for the already applied patch. I expect Himanshu or Quinn
> to follow up anyway.
> 
> I also still think that it'd be better to get the wake_up() calls
> right and not have to loop over wait_event_timeout() at all.

Such a loop is most useful if some status information is reported during
every iteration. An example from the SCSI target code:

do {
        ret = wait_event_timeout(se_sess->cmd_list_wq,
                        percpu_ref_is_zero(&se_sess->cmd_count),
                        180 * HZ);
        list_for_each_entry(cmd, &se_sess->sess_cmd_list, se_cmd_list)
                target_show_cmd("session shutdown: still waiting for ",
                                cmd);
} while (ret <= 0);

Bart.

Reply via email to