In addition to preceding changes to ring disconnects, and
associated logging, we also add some logging to check
whether state change notifications are being sent in a timely
manner between frontend and backend. Also a great assistance
to customer debugging.
Signed-off-by: Martin Harvey <martin.harvey@xxxxxxxxxx>
---
src/xenvif/frontend.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index 5940e16..72f448d 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1346,6 +1346,7 @@ FrontendWaitForBackendXenbusStateChange(
LARGE_INTEGER Timeout;
XenbusState Old = *State;
NTSTATUS status;
+ const ULONGLONG TotalTimeout = 120000;
Trace("%s: ====> %s\n",
__FrontendGetBackendPath(Frontend),
@@ -1369,7 +1370,7 @@ FrontendWaitForBackendXenbusStateChange(
Timeout.QuadPart = 0;
- while (*State == Old && TimeDelta < 120000) {
+ while (*State == Old && TimeDelta < TotalTimeout) {
PCHAR Buffer;
LARGE_INTEGER Now;
@@ -1417,6 +1418,9 @@ FrontendWaitForBackendXenbusStateChange(
TimeDelta = (Now.QuadPart - Start.QuadPart) / 10000ull;
}
+ if (TimeDelta >= TotalTimeout)
+ Error("%s timed out waiting for backend state change\n",
__FrontendGetBackendPath(Frontend));
+
if (Watch != NULL)
(VOID) XENBUS_STORE(WatchRemove,
&Frontend->StoreInterface,