[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 1/3] BSOD if initial balloon thread has not completed within 20 minutes
> -----Original Message----- > From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-devel- > bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Owen Smith > Sent: 15 December 2015 11:30 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith > Subject: [win-pv-devel] [PATCH 1/3] BSOD if initial balloon thread has not > completed within 20 minutes > > Since there is no way of reporting balloon failures to the toolstack, > the only way of stopping a VM from attempting to balloon indefinitely > is to BSOD after a large timeout. > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > src/xenbus/fdo.c | 34 ++++++++++++++++++---------------- > 1 file changed, 18 insertions(+), 16 deletions(-) > > diff --git a/src/xenbus/fdo.c b/src/xenbus/fdo.c > index 9c9e380..722a4b3 100644 > --- a/src/xenbus/fdo.c > +++ b/src/xenbus/fdo.c > @@ -3356,29 +3356,31 @@ not_active: > goto fail8; > > if (Fdo->BalloonInterface.Interface.Context != NULL) { > - BOOLEAN Warned; > + LARGE_INTEGER Timeout; > > ASSERT(__FdoIsActive(Fdo)); > > - Warned = FALSE; > + // Balloon should complete within 10s > + Timeout.QuadPart = TIME_RELATIVE(TIME_S(10)); > > - for (;;) { > - LARGE_INTEGER Timeout; > + status = KeWaitForSingleObject(&Fdo->BalloonEvent, > + Executive, > + KernelMode, > + FALSE, > + &Timeout); > + if (status == STATUS_TIMEOUT) { > + Warning("waiting for balloon\n"); > > - Timeout.QuadPart = TIME_RELATIVE(TIME_S(BALLOON_PAUSE)); > + // Wait for up to 20mins (total) before BSOD > + Timeout.QuadPart = TIME_RELATIVE(TIME_S(1190ll)); > > status = KeWaitForSingleObject(&Fdo->BalloonEvent, > - Executive, > - KernelMode, > - FALSE, > - &Timeout); > - if (status != STATUS_TIMEOUT) > - break; > - > - if (!Warned) { > - Warning("waiting for balloon\n"); > - Warned = TRUE; > - } > + Executive, > + KernelMode, > + FALSE, > + &Timeout); > + Error("Waited for Balloon (%08x)\n", status); > + BUG_ON(status == STATUS_TIMEOUT); > } > } > > -- > 1.9.4.msysgit.1 > > > _______________________________________________ > win-pv-devel mailing list > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |