[libvirt] [PATCH] logging: Don't inhibit shutdown

Martin Kletzander posted 1 patch 5 years, 12 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/23b3de5a3adc3d4081dbd33acbfc2b193541371d.1524664625.git.mkletzan@redhat.com
Test syntax-check passed
src/logging/log_daemon.c  | 19 ++-----------------
src/logging/log_handler.c | 28 ++++------------------------
src/logging/log_handler.h | 11 ++---------
3 files changed, 8 insertions(+), 50 deletions(-)
[libvirt] [PATCH] logging: Don't inhibit shutdown
Posted by Martin Kletzander 5 years, 12 months ago
That is a job of libvirtd and virtlogd has a dependency on it, so that will
prevent it properly.  Doing it one extra time in virtlogd might also cause AVC
denials because it is not allowed to call that dbus method.

This basically reverts df34363d58bbf424d5c8170a93d3ad5dcd4afb26, but manually
due to the numerous changes since that was merged.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1547250

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
---
 src/logging/log_daemon.c  | 19 ++-----------------
 src/logging/log_handler.c | 28 ++++------------------------
 src/logging/log_handler.h | 11 ++---------
 3 files changed, 8 insertions(+), 50 deletions(-)

diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
index 35d7ebb6d2bb..9cf3fd4dbb5f 100644
--- a/src/logging/log_daemon.c
+++ b/src/logging/log_daemon.c
@@ -123,17 +123,6 @@ virLogDaemonFree(virLogDaemonPtr logd)
 }
 
 
-static void
-virLogDaemonInhibitor(bool inhibit, void *opaque)
-{
-    virLogDaemonPtr dmn = opaque;
-
-    if (inhibit)
-        virNetDaemonAddShutdownInhibition(dmn->dmn);
-    else
-        virNetDaemonRemoveShutdownInhibition(dmn->dmn);
-}
-
 static virLogDaemonPtr
 virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
 {
@@ -185,9 +174,7 @@ virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
 
     if (!(logd->handler = virLogHandlerNew(privileged,
                                            config->max_size,
-                                           config->max_backups,
-                                           virLogDaemonInhibitor,
-                                           logd)))
+                                           config->max_backups)))
         goto error;
 
     return logd;
@@ -277,9 +264,7 @@ virLogDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged,
     if (!(logd->handler = virLogHandlerNewPostExecRestart(child,
                                                           privileged,
                                                           config->max_size,
-                                                          config->max_backups,
-                                                          virLogDaemonInhibitor,
-                                                          logd)))
+                                                          config->max_backups)))
         goto error;
 
     return logd;
diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c
index 40dfa8ecaebe..6d4e539f078e 100644
--- a/src/logging/log_handler.c
+++ b/src/logging/log_handler.c
@@ -65,9 +65,6 @@ struct _virLogHandler {
 
     virLogHandlerLogFilePtr *files;
     size_t nfiles;
-
-    virLogHandlerShutdownInhibitor inhibitor;
-    void *opaque;
 };
 
 static virClassPtr virLogHandlerClass;
@@ -174,7 +171,6 @@ virLogHandlerDomainLogFileEvent(int watch,
     return;
 
  error:
-    handler->inhibitor(false, handler->opaque);
     virLogHandlerLogFileClose(handler, logfile);
     virObjectUnlock(handler);
 }
@@ -183,9 +179,7 @@ virLogHandlerDomainLogFileEvent(int watch,
 virLogHandlerPtr
 virLogHandlerNew(bool privileged,
                  size_t max_size,
-                 size_t max_backups,
-                 virLogHandlerShutdownInhibitor inhibitor,
-                 void *opaque)
+                 size_t max_backups)
 {
     virLogHandlerPtr handler;
 
@@ -198,8 +192,6 @@ virLogHandlerNew(bool privileged,
     handler->privileged = privileged;
     handler->max_size = max_size;
     handler->max_backups = max_backups;
-    handler->inhibitor = inhibitor;
-    handler->opaque = opaque;
 
     return handler;
 
@@ -220,8 +212,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
     if (VIR_ALLOC(file) < 0)
         return NULL;
 
-    handler->inhibitor(true, handler->opaque);
-
     if ((path = virJSONValueObjectGetString(object, "path")) == NULL) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Missing 'path' field in JSON document"));
@@ -276,7 +266,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
     return file;
 
  error:
-    handler->inhibitor(false, handler->opaque);
     virLogHandlerLogFileFree(file);
     return NULL;
 }
@@ -286,9 +275,7 @@ virLogHandlerPtr
 virLogHandlerNewPostExecRestart(virJSONValuePtr object,
                                 bool privileged,
                                 size_t max_size,
-                                size_t max_backups,
-                                virLogHandlerShutdownInhibitor inhibitor,
-                                void *opaque)
+                                size_t max_backups)
 {
     virLogHandlerPtr handler;
     virJSONValuePtr files;
@@ -297,9 +284,7 @@ virLogHandlerNewPostExecRestart(virJSONValuePtr object,
 
     if (!(handler = virLogHandlerNew(privileged,
                                      max_size,
-                                     max_backups,
-                                     inhibitor,
-                                     opaque)))
+                                     max_backups)))
         return NULL;
 
     if (!(files = virJSONValueObjectGet(object, "files"))) {
@@ -349,10 +334,8 @@ virLogHandlerDispose(void *obj)
     virLogHandlerPtr handler = obj;
     size_t i;
 
-    for (i = 0; i < handler->nfiles; i++) {
-        handler->inhibitor(false, handler->opaque);
+    for (i = 0; i < handler->nfiles; i++)
         virLogHandlerLogFileFree(handler->files[i]);
-    }
     VIR_FREE(handler->files);
 }
 
@@ -373,8 +356,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
 
     virObjectLock(handler);
 
-    handler->inhibitor(true, handler->opaque);
-
     for (i = 0; i < handler->nfiles; i++) {
         if (STREQ(virRotatingFileWriterGetPath(handler->files[i]->file),
                   path)) {
@@ -429,7 +410,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
  error:
     VIR_FORCE_CLOSE(pipefd[0]);
     VIR_FORCE_CLOSE(pipefd[1]);
-    handler->inhibitor(false, handler->opaque);
     virLogHandlerLogFileFree(file);
     virObjectUnlock(handler);
     return -1;
diff --git a/src/logging/log_handler.h b/src/logging/log_handler.h
index 70be567ccc37..76df55c55e57 100644
--- a/src/logging/log_handler.h
+++ b/src/logging/log_handler.h
@@ -30,20 +30,13 @@ typedef struct _virLogHandler virLogHandler;
 typedef virLogHandler *virLogHandlerPtr;
 
 
-typedef void (*virLogHandlerShutdownInhibitor)(bool inhibit,
-                                               void *opaque);
-
 virLogHandlerPtr virLogHandlerNew(bool privileged,
                                   size_t max_size,
-                                  size_t max_backups,
-                                  virLogHandlerShutdownInhibitor inhibitor,
-                                  void *opaque);
+                                  size_t max_backups);
 virLogHandlerPtr virLogHandlerNewPostExecRestart(virJSONValuePtr child,
                                                  bool privileged,
                                                  size_t max_size,
-                                                 size_t max_backups,
-                                                 virLogHandlerShutdownInhibitor inhibitor,
-                                                 void *opaque);
+                                                 size_t max_backups);
 
 void virLogHandlerFree(virLogHandlerPtr handler);
 
-- 
2.17.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] logging: Don't inhibit shutdown
Posted by Daniel P. Berrangé 5 years, 12 months ago
On Wed, Apr 25, 2018 at 03:57:05PM +0200, Martin Kletzander wrote:
> That is a job of libvirtd and virtlogd has a dependency on it, so that will
> prevent it properly.  Doing it one extra time in virtlogd might also cause AVC
> denials because it is not allowed to call that dbus method.
> 
> This basically reverts df34363d58bbf424d5c8170a93d3ad5dcd4afb26, but manually
> due to the numerous changes since that was merged.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1547250

Doh, I totally missed/forgot commit df34363d58bbf424d5c8170a93d3ad5dcd4afb26
and yet I wrote it :-(

I think the problem described in that commit still exists, for
*unprivileged* libvirtd, as that's not systemd managed.

We've applied the inhibition for both privileged and unprivilegd
libvirtd's though. We could optimize so that we only do the
inhibit when running unprivileged.

That would avoid the dbus AVC since only privileged libvirtd
is running with virtd_t type IIRC.


> 
> Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
> ---
>  src/logging/log_daemon.c  | 19 ++-----------------
>  src/logging/log_handler.c | 28 ++++------------------------
>  src/logging/log_handler.h | 11 ++---------
>  3 files changed, 8 insertions(+), 50 deletions(-)
> 
> diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
> index 35d7ebb6d2bb..9cf3fd4dbb5f 100644
> --- a/src/logging/log_daemon.c
> +++ b/src/logging/log_daemon.c
> @@ -123,17 +123,6 @@ virLogDaemonFree(virLogDaemonPtr logd)
>  }
>  
>  
> -static void
> -virLogDaemonInhibitor(bool inhibit, void *opaque)
> -{
> -    virLogDaemonPtr dmn = opaque;
> -
> -    if (inhibit)
> -        virNetDaemonAddShutdownInhibition(dmn->dmn);
> -    else
> -        virNetDaemonRemoveShutdownInhibition(dmn->dmn);
> -}
> -
>  static virLogDaemonPtr
>  virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
>  {
> @@ -185,9 +174,7 @@ virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
>  
>      if (!(logd->handler = virLogHandlerNew(privileged,
>                                             config->max_size,
> -                                           config->max_backups,
> -                                           virLogDaemonInhibitor,
> -                                           logd)))
> +                                           config->max_backups)))
>          goto error;
>  
>      return logd;
> @@ -277,9 +264,7 @@ virLogDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged,
>      if (!(logd->handler = virLogHandlerNewPostExecRestart(child,
>                                                            privileged,
>                                                            config->max_size,
> -                                                          config->max_backups,
> -                                                          virLogDaemonInhibitor,
> -                                                          logd)))
> +                                                          config->max_backups)))
>          goto error;
>  
>      return logd;
> diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c
> index 40dfa8ecaebe..6d4e539f078e 100644
> --- a/src/logging/log_handler.c
> +++ b/src/logging/log_handler.c
> @@ -65,9 +65,6 @@ struct _virLogHandler {
>  
>      virLogHandlerLogFilePtr *files;
>      size_t nfiles;
> -
> -    virLogHandlerShutdownInhibitor inhibitor;
> -    void *opaque;
>  };
>  
>  static virClassPtr virLogHandlerClass;
> @@ -174,7 +171,6 @@ virLogHandlerDomainLogFileEvent(int watch,
>      return;
>  
>   error:
> -    handler->inhibitor(false, handler->opaque);
>      virLogHandlerLogFileClose(handler, logfile);
>      virObjectUnlock(handler);
>  }
> @@ -183,9 +179,7 @@ virLogHandlerDomainLogFileEvent(int watch,
>  virLogHandlerPtr
>  virLogHandlerNew(bool privileged,
>                   size_t max_size,
> -                 size_t max_backups,
> -                 virLogHandlerShutdownInhibitor inhibitor,
> -                 void *opaque)
> +                 size_t max_backups)
>  {
>      virLogHandlerPtr handler;
>  
> @@ -198,8 +192,6 @@ virLogHandlerNew(bool privileged,
>      handler->privileged = privileged;
>      handler->max_size = max_size;
>      handler->max_backups = max_backups;
> -    handler->inhibitor = inhibitor;
> -    handler->opaque = opaque;
>  
>      return handler;
>  
> @@ -220,8 +212,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
>      if (VIR_ALLOC(file) < 0)
>          return NULL;
>  
> -    handler->inhibitor(true, handler->opaque);
> -
>      if ((path = virJSONValueObjectGetString(object, "path")) == NULL) {
>          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                         _("Missing 'path' field in JSON document"));
> @@ -276,7 +266,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
>      return file;
>  
>   error:
> -    handler->inhibitor(false, handler->opaque);
>      virLogHandlerLogFileFree(file);
>      return NULL;
>  }
> @@ -286,9 +275,7 @@ virLogHandlerPtr
>  virLogHandlerNewPostExecRestart(virJSONValuePtr object,
>                                  bool privileged,
>                                  size_t max_size,
> -                                size_t max_backups,
> -                                virLogHandlerShutdownInhibitor inhibitor,
> -                                void *opaque)
> +                                size_t max_backups)
>  {
>      virLogHandlerPtr handler;
>      virJSONValuePtr files;
> @@ -297,9 +284,7 @@ virLogHandlerNewPostExecRestart(virJSONValuePtr object,
>  
>      if (!(handler = virLogHandlerNew(privileged,
>                                       max_size,
> -                                     max_backups,
> -                                     inhibitor,
> -                                     opaque)))
> +                                     max_backups)))
>          return NULL;
>  
>      if (!(files = virJSONValueObjectGet(object, "files"))) {
> @@ -349,10 +334,8 @@ virLogHandlerDispose(void *obj)
>      virLogHandlerPtr handler = obj;
>      size_t i;
>  
> -    for (i = 0; i < handler->nfiles; i++) {
> -        handler->inhibitor(false, handler->opaque);
> +    for (i = 0; i < handler->nfiles; i++)
>          virLogHandlerLogFileFree(handler->files[i]);
> -    }
>      VIR_FREE(handler->files);
>  }
>  
> @@ -373,8 +356,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
>  
>      virObjectLock(handler);
>  
> -    handler->inhibitor(true, handler->opaque);
> -
>      for (i = 0; i < handler->nfiles; i++) {
>          if (STREQ(virRotatingFileWriterGetPath(handler->files[i]->file),
>                    path)) {
> @@ -429,7 +410,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
>   error:
>      VIR_FORCE_CLOSE(pipefd[0]);
>      VIR_FORCE_CLOSE(pipefd[1]);
> -    handler->inhibitor(false, handler->opaque);
>      virLogHandlerLogFileFree(file);
>      virObjectUnlock(handler);
>      return -1;
> diff --git a/src/logging/log_handler.h b/src/logging/log_handler.h
> index 70be567ccc37..76df55c55e57 100644
> --- a/src/logging/log_handler.h
> +++ b/src/logging/log_handler.h
> @@ -30,20 +30,13 @@ typedef struct _virLogHandler virLogHandler;
>  typedef virLogHandler *virLogHandlerPtr;
>  
>  
> -typedef void (*virLogHandlerShutdownInhibitor)(bool inhibit,
> -                                               void *opaque);
> -
>  virLogHandlerPtr virLogHandlerNew(bool privileged,
>                                    size_t max_size,
> -                                  size_t max_backups,
> -                                  virLogHandlerShutdownInhibitor inhibitor,
> -                                  void *opaque);
> +                                  size_t max_backups);
>  virLogHandlerPtr virLogHandlerNewPostExecRestart(virJSONValuePtr child,
>                                                   bool privileged,
>                                                   size_t max_size,
> -                                                 size_t max_backups,
> -                                                 virLogHandlerShutdownInhibitor inhibitor,
> -                                                 void *opaque);
> +                                                 size_t max_backups);
>  
>  void virLogHandlerFree(virLogHandlerPtr handler);
>  
> -- 
> 2.17.0
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] logging: Don't inhibit shutdown
Posted by Martin Kletzander 5 years, 12 months ago
On Wed, Apr 25, 2018 at 03:03:37PM +0100, Daniel P. Berrangé wrote:
>On Wed, Apr 25, 2018 at 03:57:05PM +0200, Martin Kletzander wrote:
>> That is a job of libvirtd and virtlogd has a dependency on it, so that will
>> prevent it properly.  Doing it one extra time in virtlogd might also cause AVC
>> denials because it is not allowed to call that dbus method.
>>
>> This basically reverts df34363d58bbf424d5c8170a93d3ad5dcd4afb26, but manually
>> due to the numerous changes since that was merged.
>>
>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1547250
>
>Doh, I totally missed/forgot commit df34363d58bbf424d5c8170a93d3ad5dcd4afb26
>and yet I wrote it :-(
>
>I think the problem described in that commit still exists, for
>*unprivileged* libvirtd, as that's not systemd managed.
>
>We've applied the inhibition for both privileged and unprivilegd
>libvirtd's though. We could optimize so that we only do the
>inhibit when running unprivileged.
>
>That would avoid the dbus AVC since only privileged libvirtd
>is running with virtd_t type IIRC.
>

I was looking for that actually, but I don't think that's as clean solution as
it could be.  I'll do it that way just to fix the issue for now.  For the
future, however, I'll try to cook up a patch that will add a callback to
virNetServer (or virNetDaemon) that will be called to ask whether the daemon can
be shut down.  Then virNetDaemonAutoShutdownTimer() will actually ask whether
daemon and its servers can be shut down instead of just asking for clients.  But
I'll post that afterwards as a "clean-up" ;)

>
>>
>> Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
>> ---
>>  src/logging/log_daemon.c  | 19 ++-----------------
>>  src/logging/log_handler.c | 28 ++++------------------------
>>  src/logging/log_handler.h | 11 ++---------
>>  3 files changed, 8 insertions(+), 50 deletions(-)
>>
>> diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
>> index 35d7ebb6d2bb..9cf3fd4dbb5f 100644
>> --- a/src/logging/log_daemon.c
>> +++ b/src/logging/log_daemon.c
>> @@ -123,17 +123,6 @@ virLogDaemonFree(virLogDaemonPtr logd)
>>  }
>>
>>
>> -static void
>> -virLogDaemonInhibitor(bool inhibit, void *opaque)
>> -{
>> -    virLogDaemonPtr dmn = opaque;
>> -
>> -    if (inhibit)
>> -        virNetDaemonAddShutdownInhibition(dmn->dmn);
>> -    else
>> -        virNetDaemonRemoveShutdownInhibition(dmn->dmn);
>> -}
>> -
>>  static virLogDaemonPtr
>>  virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
>>  {
>> @@ -185,9 +174,7 @@ virLogDaemonNew(virLogDaemonConfigPtr config, bool privileged)
>>
>>      if (!(logd->handler = virLogHandlerNew(privileged,
>>                                             config->max_size,
>> -                                           config->max_backups,
>> -                                           virLogDaemonInhibitor,
>> -                                           logd)))
>> +                                           config->max_backups)))
>>          goto error;
>>
>>      return logd;
>> @@ -277,9 +264,7 @@ virLogDaemonNewPostExecRestart(virJSONValuePtr object, bool privileged,
>>      if (!(logd->handler = virLogHandlerNewPostExecRestart(child,
>>                                                            privileged,
>>                                                            config->max_size,
>> -                                                          config->max_backups,
>> -                                                          virLogDaemonInhibitor,
>> -                                                          logd)))
>> +                                                          config->max_backups)))
>>          goto error;
>>
>>      return logd;
>> diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c
>> index 40dfa8ecaebe..6d4e539f078e 100644
>> --- a/src/logging/log_handler.c
>> +++ b/src/logging/log_handler.c
>> @@ -65,9 +65,6 @@ struct _virLogHandler {
>>
>>      virLogHandlerLogFilePtr *files;
>>      size_t nfiles;
>> -
>> -    virLogHandlerShutdownInhibitor inhibitor;
>> -    void *opaque;
>>  };
>>
>>  static virClassPtr virLogHandlerClass;
>> @@ -174,7 +171,6 @@ virLogHandlerDomainLogFileEvent(int watch,
>>      return;
>>
>>   error:
>> -    handler->inhibitor(false, handler->opaque);
>>      virLogHandlerLogFileClose(handler, logfile);
>>      virObjectUnlock(handler);
>>  }
>> @@ -183,9 +179,7 @@ virLogHandlerDomainLogFileEvent(int watch,
>>  virLogHandlerPtr
>>  virLogHandlerNew(bool privileged,
>>                   size_t max_size,
>> -                 size_t max_backups,
>> -                 virLogHandlerShutdownInhibitor inhibitor,
>> -                 void *opaque)
>> +                 size_t max_backups)
>>  {
>>      virLogHandlerPtr handler;
>>
>> @@ -198,8 +192,6 @@ virLogHandlerNew(bool privileged,
>>      handler->privileged = privileged;
>>      handler->max_size = max_size;
>>      handler->max_backups = max_backups;
>> -    handler->inhibitor = inhibitor;
>> -    handler->opaque = opaque;
>>
>>      return handler;
>>
>> @@ -220,8 +212,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
>>      if (VIR_ALLOC(file) < 0)
>>          return NULL;
>>
>> -    handler->inhibitor(true, handler->opaque);
>> -
>>      if ((path = virJSONValueObjectGetString(object, "path")) == NULL) {
>>          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>>                         _("Missing 'path' field in JSON document"));
>> @@ -276,7 +266,6 @@ virLogHandlerLogFilePostExecRestart(virLogHandlerPtr handler,
>>      return file;
>>
>>   error:
>> -    handler->inhibitor(false, handler->opaque);
>>      virLogHandlerLogFileFree(file);
>>      return NULL;
>>  }
>> @@ -286,9 +275,7 @@ virLogHandlerPtr
>>  virLogHandlerNewPostExecRestart(virJSONValuePtr object,
>>                                  bool privileged,
>>                                  size_t max_size,
>> -                                size_t max_backups,
>> -                                virLogHandlerShutdownInhibitor inhibitor,
>> -                                void *opaque)
>> +                                size_t max_backups)
>>  {
>>      virLogHandlerPtr handler;
>>      virJSONValuePtr files;
>> @@ -297,9 +284,7 @@ virLogHandlerNewPostExecRestart(virJSONValuePtr object,
>>
>>      if (!(handler = virLogHandlerNew(privileged,
>>                                       max_size,
>> -                                     max_backups,
>> -                                     inhibitor,
>> -                                     opaque)))
>> +                                     max_backups)))
>>          return NULL;
>>
>>      if (!(files = virJSONValueObjectGet(object, "files"))) {
>> @@ -349,10 +334,8 @@ virLogHandlerDispose(void *obj)
>>      virLogHandlerPtr handler = obj;
>>      size_t i;
>>
>> -    for (i = 0; i < handler->nfiles; i++) {
>> -        handler->inhibitor(false, handler->opaque);
>> +    for (i = 0; i < handler->nfiles; i++)
>>          virLogHandlerLogFileFree(handler->files[i]);
>> -    }
>>      VIR_FREE(handler->files);
>>  }
>>
>> @@ -373,8 +356,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
>>
>>      virObjectLock(handler);
>>
>> -    handler->inhibitor(true, handler->opaque);
>> -
>>      for (i = 0; i < handler->nfiles; i++) {
>>          if (STREQ(virRotatingFileWriterGetPath(handler->files[i]->file),
>>                    path)) {
>> @@ -429,7 +410,6 @@ virLogHandlerDomainOpenLogFile(virLogHandlerPtr handler,
>>   error:
>>      VIR_FORCE_CLOSE(pipefd[0]);
>>      VIR_FORCE_CLOSE(pipefd[1]);
>> -    handler->inhibitor(false, handler->opaque);
>>      virLogHandlerLogFileFree(file);
>>      virObjectUnlock(handler);
>>      return -1;
>> diff --git a/src/logging/log_handler.h b/src/logging/log_handler.h
>> index 70be567ccc37..76df55c55e57 100644
>> --- a/src/logging/log_handler.h
>> +++ b/src/logging/log_handler.h
>> @@ -30,20 +30,13 @@ typedef struct _virLogHandler virLogHandler;
>>  typedef virLogHandler *virLogHandlerPtr;
>>
>>
>> -typedef void (*virLogHandlerShutdownInhibitor)(bool inhibit,
>> -                                               void *opaque);
>> -
>>  virLogHandlerPtr virLogHandlerNew(bool privileged,
>>                                    size_t max_size,
>> -                                  size_t max_backups,
>> -                                  virLogHandlerShutdownInhibitor inhibitor,
>> -                                  void *opaque);
>> +                                  size_t max_backups);
>>  virLogHandlerPtr virLogHandlerNewPostExecRestart(virJSONValuePtr child,
>>                                                   bool privileged,
>>                                                   size_t max_size,
>> -                                                 size_t max_backups,
>> -                                                 virLogHandlerShutdownInhibitor inhibitor,
>> -                                                 void *opaque);
>> +                                                 size_t max_backups);
>>
>>  void virLogHandlerFree(virLogHandlerPtr handler);
>>
>> --
>> 2.17.0
>>
>> --
>> libvir-list mailing list
>> libvir-list@redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
>
>Regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list