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

Re: [PATCH 2/5] Log ring disable.


  • To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Paul Durrant <xadimgnik@xxxxxxxxx>
  • Date: Thu, 5 Aug 2021 19:19:22 +0100
  • Delivery-date: Thu, 05 Aug 2021 18:19:27 +0000
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>

On 28/07/2021 15:02, Martin Harvey wrote:
Since Rx/Tx ring disconnects now no longer wait forever, we add
some logging to catch those cases where the disconnect has timed out,
indicating how many requests are still in the ring.

This aids greatly with customer debugging.

Signed-off-by: Martin Harvey <martin.harvey@xxxxxxxxxx>

I asked for use of

XENBUS_DEBUG(Trigger,
             &Transmitter->DebugInterface,
             Ring->DebugCallback);

rather than more ad-hoc logging. Is there a reason that won't work?

  Paul

---
  src/xenvif/receiver.c    | 16 ++++++++++++++++
  src/xenvif/transmitter.c |  6 ++++++
  2 files changed, 22 insertions(+)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index c70d938..7295646 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2887,6 +2887,22 @@ __ReceiverRingDisconnect(
      ASSERT3U(Ring->ResponsesProcessed, ==, Ring->RequestsPushed);
      ASSERT3U(Ring->RequestsPushed, ==, Ring->RequestsPosted);
+ //Debug logs as well as assertion, else customer debugging difficult.
+    if ((Ring->ResponsesProcessed != Ring->RequestsPushed) ||
+        (Ring->RequestsPushed != Ring->RequestsPosted))
+    {
+        Info("%s[%u]: Ring disconnect, counts do not match.\n",
+            FrontendGetPath(Frontend),
+            Ring->Index);
+
+        Info("%s[%u]: Processed: %u Pushed: %u Posted: %u\n",
+            FrontendGetPath(Frontend),
+            Ring->Index,
+            Ring->ResponsesProcessed,
+            Ring->RequestsPushed,
+            Ring->RequestsPosted);
+    }
+
      Ring->ResponsesProcessed = 0;
      Ring->RequestsPushed = 0;
      Ring->RequestsPosted = 0;
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index fddeb0c..47f2fc2 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -4005,6 +4005,12 @@ __TransmitterRingDisable(
      }
      if (Ring->ResponsesProcessed != Ring->RequestsPushed)
      {
+        Info("%s[%u]: Timed out disable: Requests pushed: %u, Responses processed: 
%u.\n",
+            FrontendGetPath(Frontend),
+            Ring->Index,
+            Ring->RequestsPushed,
+            Ring->ResponsesProcessed);
+
          __TransmitterRingFakeResponses(Ring);
          (VOID) TransmitterRingPoll(Ring);
      }





 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.