On Tue, Jul 19, 2016 at 1:47 PM, Paolo Bonzini wrote:
>
>
> On 19/07/2016 13:44, Roman Penyaev wrote:
>>
>> Can this leave I/O stuck if in_queue > 0 && in_flight == 0 after the
>> return from qemu_laio_process_completions? I think you need to goto the
>> beginning of the funct
On 19/07/2016 13:44, Roman Penyaev wrote:
>>> >>
>>> >> Can this leave I/O stuck if in_queue > 0 && in_flight == 0 after the
>>> >> return from qemu_laio_process_completions? I think you need to goto the
>>> >> beginning of the function to submit more I/O requests in that case.
> Not quite. I s
On Tue, Jul 19, 2016 at 1:18 PM, Roman Penyaev
wrote:
> On Tue, Jul 19, 2016 at 12:36 PM, Paolo Bonzini wrote:
>>
>>
>> On 19/07/2016 12:25, Roman Pen wrote:
>>> if (laiocb->co) {
>>> -qemu_coroutine_enter(laiocb->co, NULL);
>>> +if (laiocb->co == qemu_coroutine_self()) {
>>>
On 19/07/2016 13:18, Roman Penyaev wrote:
>> > No need for this new field. You can just do nothing here and check
>> > laiocb.ret == -EINPROGRESS here in laio_co_submit.
>
> I have thought but did not like it, because we depend on the value,
> which kernel writes there.
(The kernel actually wr
On Tue, Jul 19, 2016 at 12:36 PM, Paolo Bonzini wrote:
>
>
> On 19/07/2016 12:25, Roman Pen wrote:
>> if (laiocb->co) {
>> -qemu_coroutine_enter(laiocb->co, NULL);
>> +if (laiocb->co == qemu_coroutine_self()) {
>> +laiocb->self_completed = true;
>
> No need for thi
On 19/07/2016 12:25, Roman Pen wrote:
> if (laiocb->co) {
> -qemu_coroutine_enter(laiocb->co, NULL);
> +if (laiocb->co == qemu_coroutine_self()) {
> +laiocb->self_completed = true;
No need for this new field. You can just do nothing here and check
laiocb.ret ==