[libvirt] [PATCH v5 02/10] qemu: Use domain iothreadids to IOThread's 'thread_id'

Peter Krempa pkrempa at redhat.com
Mon Apr 27 15:58:53 UTC 2015


On Mon, Apr 27, 2015 at 11:56:20 -0400, John Ferlan wrote:
> 
> 
> On 04/27/2015 11:46 AM, Peter Krempa wrote:
> > On Mon, Apr 27, 2015 at 11:25:15 -0400, John Ferlan wrote:
> >> ...
> >>
> >>>>>> --- a/src/qemu/qemu_process.c
> >>>>>> +++ b/src/qemu/qemu_process.c
> >>>>>> @@ -2267,12 +2267,16 @@ qemuProcessDetectIOThreadPIDs(virQEMUDriverPtr driver,
> >>>>>>          goto cleanup;
> >>>>>>      }
> >>>>>
> >>>>> A few lines prior here is the check that the expected thread count
> >>>>> equals to the actual thread count. For some reason a few lines before
> >>>>> returns success if 0 threads are returned by the monitor. The two checks
> >>>>> should be inverted so that it makes sense.
> >>>>>
> >>>>
> >>>> If there are no threads, then it's not a failure, thus change ret to be
> >>>> 0. Again, this is something that's not within the scope of this set of
> >>>> changes and I believe if necessary could be a followup patch.
> >>>>
> >>>> I'm not clear on the value of changing the order of the checks.
> >>>
> >>> The problem is that if there are no iothreads reported by qemu, but we
> >>> did request some then it IS failure.
> >>>
> >>
> >> But that's an issue not related to iothreadid's per se - it's a more
> >> common general issue that should be a follow-up patch then I think.
> >> That is not introduced by this set of changes.
> > 
> > Agreed, this should be done separately.
> > 
> >>
> >> Other issues were addressed changed - do you need to see the diffs or an
> >> updated patch with the diffs already squashed in?
> > 
> > I'd like to see the fixed hunk of qemuProcessDetectIOThreadPIDs that
> > parses the reply from the monitor.
> > 
> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index 66c9321..3def84f 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -2249,13 +2249,18 @@ qemuProcessDetectIOThreadPIDs(virQEMUDriverPtr driver,
>  
>      for (i = 0; i < vm->def->niothreadids; i++) {

The code should iterate through niothreads rather than
vm->def->niothreadids for obvious reasons even if they are guaranteed
the same.

>          unsigned int iothread_id;
> +        virDomainIOThreadIDDefPtr iothrid;
>  
>          if (qemuDomainParseIOThreadAlias(iothreads[i]->name,
>                                           &iothread_id) < 0)
>              goto cleanup;
>  
> -        vm->def->iothreadids[i]->thread_id = iothreads[i]->thread_id;
> -        vm->def->iothreadids[i]->iothread_id = iothread_id;
> +        if (!(iothrid = virDomainIOThreadIDFind(vm->def, iothread_id))) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("iothread %d not found"), iothread_id);
> +            goto cleanup;
> +        }
> +        iothrid->thread_id = iothreads[i]->thread_id;
>      }
>  
>      ret = 0;
> 

ACK with the suggested modification.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150427/83e94483/attachment-0001.sig>


More information about the libvir-list mailing list