[libvirt] [PATCH v2 11/13] qemu: convert process stop/attach to use qemuDomainLogContextPtr

John Ferlan jferlan at redhat.com
Thu Nov 19 00:02:05 UTC 2015



On 11/12/2015 12:19 PM, Daniel P. Berrange wrote:
> When the qemuProcessAttach/Stop methods write a marker into
> the log file, they can use qemuDomainLogContextWrite to
> write a formatted message.
> 
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
>  src/qemu/qemu_process.c | 22 ++--------------------
>  1 file changed, 2 insertions(+), 20 deletions(-)
> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index f729065..132b3eb 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -77,9 +77,6 @@
>  
>  VIR_LOG_INIT("qemu.qemu_process");
>  
> -#define ATTACH_POSTFIX ": attaching\n"
> -#define SHUTDOWN_POSTFIX ": shutting down\n"
> -
>  /**
>   * qemuProcessRemoveDomainStatus
>   *
> @@ -4913,7 +4910,6 @@ void qemuProcessStop(virQEMUDriverPtr driver,
>      size_t i;
>      char *timestamp;
>      char *tmppath = NULL;
> -    char ebuf[1024];
>      virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
>      qemuDomainLogContextPtr logCtxt = NULL;
>  
> @@ -4946,15 +4942,8 @@ void qemuProcessStop(virQEMUDriverPtr driver,
>  
>      if ((logCtxt = qemuDomainLogContextNew(driver, vm,
>                                             QEMU_DOMAIN_LOG_CONTEXT_MODE_STOP))) {
> -        int logfile = qemuDomainLogContextGetWriteFD(logCtxt);
>          if ((timestamp = virTimeStringNow()) != NULL) {
> -            if (safewrite(logfile, timestamp, strlen(timestamp)) < 0 ||
> -                safewrite(logfile, SHUTDOWN_POSTFIX,
> -                          strlen(SHUTDOWN_POSTFIX)) < 0) {
> -                VIR_WARN("Unable to write timestamp to logfile: %s",
> -                         virStrerror(errno, ebuf, sizeof(ebuf)));
> -            }
> -
> +            qemuDomainLogContextWrite(logCtxt, "%s: stopping\n", timestamp);

was #define SHUTDOWN_POSTFIX ": shutting down\n", but this changes to
"stopping" which is 'different', although perhaps more technically
correct w/r/t what's going on here.

I have to believe there's scripts out in the wild looking for 'shutting
down' that fail with 'stopping'... For some reason I seem to recall
tests scripts that would essentially 'tail -f' the log file for that to
ensure that whatever shutdown/stop command was sent actually worked.

ACK - either way, but I tend to favor shutdown down only because it has
precedence.

John

>              VIR_FREE(timestamp);
>          }
>          qemuDomainLogContextFree(logCtxt);
> @@ -5216,8 +5205,6 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
>                        bool monJSON)
>  {
>      size_t i;
> -    char ebuf[1024];
> -    int logfile = -1;
>      qemuDomainLogContextPtr logCtxt = NULL;
>      char *timestamp;
>      qemuDomainObjPrivatePtr priv = vm->privateData;
> @@ -5316,7 +5303,6 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
>      if (!(logCtxt = qemuDomainLogContextNew(driver, vm,
>                                              QEMU_DOMAIN_LOG_CONTEXT_MODE_ATTACH)))
>          goto error;
> -    logfile = qemuDomainLogContextGetWriteFD(logCtxt);
>  
>      VIR_DEBUG("Determining emulator version");
>      virObjectUnref(priv->qemuCaps);
> @@ -5348,11 +5334,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
>      if ((timestamp = virTimeStringNow()) == NULL)
>          goto error;
>  
> -    if (safewrite(logfile, timestamp, strlen(timestamp)) < 0 ||
> -        safewrite(logfile, ATTACH_POSTFIX, strlen(ATTACH_POSTFIX)) < 0) {
> -        VIR_WARN("Unable to write timestamp to logfile: %s",
> -                 virStrerror(errno, ebuf, sizeof(ebuf)));
> -    }
> +    qemuDomainLogContextWrite(logCtxt, "%s: attaching\n", timestamp);
>      VIR_FREE(timestamp);
>  
>      qemuDomainObjTaint(driver, vm, VIR_DOMAIN_TAINT_EXTERNAL_LAUNCH, logCtxt);
> 




More information about the libvir-list mailing list