On 08/05/2018 05:54 PM, Roman Bogorodskiy wrote: > To reconnect to the bhyve process after deamon restart, a process > VM's pid points to is checked to have proctitle equal to 'bhyve: $vmname'. > However, there could be a bug in bhyve(8) which prevents it from > setting proctitle, so process arguments will look like: > > ['/usr/sbin/bhyve', ..., 'vmname', NULL] > > Fall back to checking this format if proctitle doesn't match as a > workaround for this bug. > --- > src/bhyve/bhyve_process.c | 26 ++++++++++++++++++-------- > 1 file changed, 18 insertions(+), 8 deletions(-) > > diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c > index 9276d7d364..78d6ff1389 100644 > --- a/src/bhyve/bhyve_process.c > +++ b/src/bhyve/bhyve_process.c > @@ -416,18 +416,28 @@ virBhyveProcessReconnect(virDomainObjPtr vm, > if (proc_argv && proc_argv[0]) { > if (STREQ(expected_proctitle, proc_argv[0])) { > ret = 0; > - priv->mon = bhyveMonitorOpen(vm, data->driver); > - if (vm->def->ngraphics == 1 && > - vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { > - int vnc_port = vm->def->graphics[0]->data.vnc.port; > - if (virPortAllocatorSetUsed(vnc_port) < 0) { > - VIR_WARN("Failed to mark VNC port '%d' as used by '%s'", > - vnc_port, vm->def->name); > - } > + } else { > + if (STREQ(BHYVE, proc_argv[0])) { > + int i = 0; s/int/size_t/ > + for (; proc_argv[i+1]; i++); Ugrh. It is very easy to miss the trailing semicolon. Please move it onto a separate line. > + if ((i != 0) && (STREQ(vm->def->name, proc_argv[i]))) > + ret = 0; > } > } > } > I suggest squashing this in: diff --git i/src/bhyve/bhyve_process.c w/src/bhyve/bhyve_process.c index 78d6ff1389..47a5dc3f94 100644 --- i/src/bhyve/bhyve_process.c +++ w/src/bhyve/bhyve_process.c @@ -418,9 +418,11 @@ virBhyveProcessReconnect(virDomainObjPtr vm, ret = 0; } else { if (STREQ(BHYVE, proc_argv[0])) { - int i = 0; - for (; proc_argv[i+1]; i++); - if ((i != 0) && (STREQ(vm->def->name, proc_argv[i]))) + size_t i; + + for (i = 0; proc_argv[i+1]; i++) + ; + if ((STREQ(vm->def->name, proc_argv[i]))) ret = 0; } } ACK Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list