[1/1] hmp: acquire aio_context in hmp_qemu_io
diff mbox

Message ID 1465378757-15271-1-git-send-email-den@openvz.org
State New
Headers show

Commit Message

Denis V. Lunev June 8, 2016, 9:39 a.m. UTC
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

Acquire aio context before run command, this is mandatory for unit tests.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Kevin Wolf <kwolf@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
---
 hmp.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Kevin Wolf June 8, 2016, 11:23 a.m. UTC | #1
Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> 
> Acquire aio context before run command, this is mandatory for unit tests.
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> CC: Kevin Wolf <kwolf@redhat.com>
> CC: Paolo Bonzini <pbonzini@redhat.com>

Looks right to me, but why "mandatory for unit tests"? Does this fix an
observable bug in unit tests? If so, we should be more specific in the
commit message.

But in fact, I would only expect it to make a difference for dataplane
and I don't think we have test cases that use both the 'qemu-io' HMP
command and dataplane.

Kevin
Denis V. Lunev June 8, 2016, 11:31 a.m. UTC | #2
On 06/08/2016 02:23 PM, Kevin Wolf wrote:
> Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>
>> Acquire aio context before run command, this is mandatory for unit tests.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> CC: Kevin Wolf <kwolf@redhat.com>
>> CC: Paolo Bonzini <pbonzini@redhat.com>
> Looks right to me, but why "mandatory for unit tests"? Does this fix an
> observable bug in unit tests? If so, we should be more specific in the
> commit message.
>
> But in fact, I would only expect it to make a difference for dataplane
> and I don't think we have test cases that use both the 'qemu-io' HMP
> command and dataplane.
>
> Kevin
we have failures in backup test, where dirty bitmap is protected with
aio_context_acquire. This test is not committed yet, but present in the
mail list.

As far as I know this command is used mostly for tests thus I have
written commit message this way. This change is separate and I think
definitely right.

Den
Denis V. Lunev June 14, 2016, 8:34 a.m. UTC | #3
On 06/08/2016 02:23 PM, Kevin Wolf wrote:
> Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>
>> Acquire aio context before run command, this is mandatory for unit tests.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>> CC: Kevin Wolf <kwolf@redhat.com>
>> CC: Paolo Bonzini <pbonzini@redhat.com>
> Looks right to me, but why "mandatory for unit tests"? Does this fix an
> observable bug in unit tests? If so, we should be more specific in the
> commit message.
>
> But in fact, I would only expect it to make a difference for dataplane
> and I don't think we have test cases that use both the 'qemu-io' HMP
> command and dataplane.
>
> Kevin
the problem is that it is usually difficult to understand that
the problem is in locking and find where the locking is missed.
Here we do have a place, which is used by unit testing, with
a locking missed.

May be now tests are not failing, but IMHO these tests MUST
be fixed to accommodate future changes and thus this patch
is mandatory for them.

Den
Kevin Wolf June 14, 2016, 8:44 a.m. UTC | #4
Am 14.06.2016 um 10:34 hat Denis V. Lunev geschrieben:
> On 06/08/2016 02:23 PM, Kevin Wolf wrote:
> >Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
> >>From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> >>
> >>Acquire aio context before run command, this is mandatory for unit tests.
> >>
> >>Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> >>Signed-off-by: Denis V. Lunev <den@openvz.org>
> >>CC: Kevin Wolf <kwolf@redhat.com>
> >>CC: Paolo Bonzini <pbonzini@redhat.com>
> >Looks right to me, but why "mandatory for unit tests"? Does this fix an
> >observable bug in unit tests? If so, we should be more specific in the
> >commit message.
> >
> >But in fact, I would only expect it to make a difference for dataplane
> >and I don't think we have test cases that use both the 'qemu-io' HMP
> >command and dataplane.
> >
> >Kevin
> the problem is that it is usually difficult to understand that
> the problem is in locking and find where the locking is missed.
> Here we do have a place, which is used by unit testing, with
> a locking missed.
> 
> May be now tests are not failing, but IMHO these tests MUST
> be fixed to accommodate future changes and thus this patch
> is mandatory for them.

I was never objecting to the patch, but just curious about the details
of a possible failure you were seeing because I didn't see how to hit
it in practice without dataplane.

Sorry for forgetting about the patch, I've applied it now.

Kevin
Denis V. Lunev June 14, 2016, 9 a.m. UTC | #5
On 06/14/2016 11:44 AM, Kevin Wolf wrote:
> Am 14.06.2016 um 10:34 hat Denis V. Lunev geschrieben:
>> On 06/08/2016 02:23 PM, Kevin Wolf wrote:
>>> Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
>>>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>>
>>>> Acquire aio context before run command, this is mandatory for unit tests.
>>>>
>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>>>> CC: Kevin Wolf <kwolf@redhat.com>
>>>> CC: Paolo Bonzini <pbonzini@redhat.com>
>>> Looks right to me, but why "mandatory for unit tests"? Does this fix an
>>> observable bug in unit tests? If so, we should be more specific in the
>>> commit message.
>>>
>>> But in fact, I would only expect it to make a difference for dataplane
>>> and I don't think we have test cases that use both the 'qemu-io' HMP
>>> command and dataplane.
>>>
>>> Kevin
>> the problem is that it is usually difficult to understand that
>> the problem is in locking and find where the locking is missed.
>> Here we do have a place, which is used by unit testing, with
>> a locking missed.
>>
>> May be now tests are not failing, but IMHO these tests MUST
>> be fixed to accommodate future changes and thus this patch
>> is mandatory for them.
> I was never objecting to the patch, but just curious about the details
> of a possible failure you were seeing because I didn't see how to hit
> it in practice without dataplane.
>
> Sorry for forgetting about the patch, I've applied it now.
>
> Kevin
thank you ;)

Den
Denis V. Lunev June 15, 2016, 8:31 p.m. UTC | #6
On 06/14/2016 11:44 AM, Kevin Wolf wrote:
> Am 14.06.2016 um 10:34 hat Denis V. Lunev geschrieben:
>> On 06/08/2016 02:23 PM, Kevin Wolf wrote:
>>> Am 08.06.2016 um 11:39 hat Denis V. Lunev geschrieben:
>>>> From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>>
>>>> Acquire aio context before run command, this is mandatory for unit tests.
>>>>
>>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>>> Signed-off-by: Denis V. Lunev <den@openvz.org>
>>>> CC: Kevin Wolf <kwolf@redhat.com>
>>>> CC: Paolo Bonzini <pbonzini@redhat.com>
>>> Looks right to me, but why "mandatory for unit tests"? Does this fix an
>>> observable bug in unit tests? If so, we should be more specific in the
>>> commit message.
>>>
>>> But in fact, I would only expect it to make a difference for dataplane
>>> and I don't think we have test cases that use both the 'qemu-io' HMP
>>> command and dataplane.
>>>
>>> Kevin
>> the problem is that it is usually difficult to understand that
>> the problem is in locking and find where the locking is missed.
>> Here we do have a place, which is used by unit testing, with
>> a locking missed.
>>
>> May be now tests are not failing, but IMHO these tests MUST
>> be fixed to accommodate future changes and thus this patch
>> is mandatory for them.
> I was never objecting to the patch, but just curious about the details
> of a possible failure you were seeing because I didn't see how to hit
> it in practice without dataplane.
>
> Sorry for forgetting about the patch, I've applied it now.
>
> Kevin
>

FYI: I have faced today the problematic case in current QEMU.
Test number 132 could suffer from this issue. It performs
'discard' through qemu-io HMP command and have drive-mirror
running, which uses dirty-bitmap.

Den

Patch
diff mbox

diff --git a/hmp.c b/hmp.c
index a4b1d3d..36df0a7 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1951,7 +1951,12 @@  void hmp_qemu_io(Monitor *mon, const QDict *qdict)
 
     blk = blk_by_name(device);
     if (blk) {
+        AioContext *aio_context = blk_get_aio_context(blk);
+        aio_context_acquire(aio_context);
+
         qemuio_command(blk, command);
+
+        aio_context_release(aio_context);
     } else {
         error_set(&err, ERROR_CLASS_DEVICE_NOT_FOUND,
                   "Device '%s' not found", device);