Message ID | 1465378757-15271-1-git-send-email-den@openvz.org |
---|---|
State | New |
Headers | show |
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
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
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
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
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
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
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);