Re: [PATCH 2/6] Warn if requesting update to non-existant timer/handle watch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



s/non-existant/non-existent/ in the subject

On 11/22/12 17:48, Daniel P. Berrange wrote:
From: "Daniel P. Berrange" <berrange@xxxxxxxxxx>

The event code is a no-op if requested to update a non-existant

s/non-existant/non-existent/

timer/handle watch. This makes it hard to detect bugs in the
caller who have passed bogus data. Add a VIR_WARN output in
such cases, since the API does not allow for return errors.

Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
---
  src/util/event_poll.c | 13 +++++++++++++
  1 file changed, 13 insertions(+)

diff --git a/src/util/event_poll.c b/src/util/event_poll.c
index 276d66d..2ffa94b 100644
--- a/src/util/event_poll.c
+++ b/src/util/event_poll.c
@@ -141,6 +141,7 @@ int virEventPollAddHandle(int fd, int events,

  void virEventPollUpdateHandle(int watch, int events) {
      int i;
+    bool found = false;
      PROBE(EVENT_POLL_UPDATE_HANDLE,
            "watch=%d events=%d",
            watch, events);
@@ -156,10 +157,14 @@ void virEventPollUpdateHandle(int watch, int events) {
              eventLoop.handles[i].events =
                      virEventPollToNativeEvents(events);
              virEventPollInterruptLocked();
+            found = true;
              break;
          }
      }
      virMutexUnlock(&eventLoop.lock);
+
+    if (!found)
+        VIR_WARN("Got update for non-existant handle watch %d", watch);

s/non-existant/non-existent/

  }

  /*
@@ -249,6 +254,7 @@ void virEventPollUpdateTimeout(int timer, int frequency)
  {
      unsigned long long now;
      int i;
+    bool found = false;
      PROBE(EVENT_POLL_UPDATE_TIMEOUT,
            "timer=%d frequency=%d",
            timer, frequency);
@@ -268,11 +274,17 @@ void virEventPollUpdateTimeout(int timer, int frequency)
              eventLoop.timeouts[i].frequency = frequency;
              eventLoop.timeouts[i].expiresAt =
                  frequency >= 0 ? frequency + now : 0;
+            VIR_DEBUG("Set timer freq=%d expirs=%llu", frequency,

s/expirs/expires/

+                      eventLoop.timeouts[i].expiresAt);
              virEventPollInterruptLocked();
+            found = true;
              break;
          }
      }
      virMutexUnlock(&eventLoop.lock);
+
+    if (!found)
+        VIR_WARN("Got update for non-existant timer %d", timer);

s/non-existant/non-existent/

  }

  /*
@@ -336,6 +348,7 @@ static int virEventPollCalculateTimeout(int *timeout) {
          if (virTimeMillisNow(&now) < 0)
              return -1;

+        EVENT_DEBUG("Schedule timeout then=%llu now=%llu", then, now);
          *timeout = then - now;
          if (*timeout < 0)
              *timeout = 0;


ACK with spelling and the typo fixed.

Peter

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]