[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [EXTERNAL] [PATCH 2/2] Add AutoReboot capability
> -----Original Message----- > From: Paul Durrant <xadimgnik@xxxxxxxxx> > Sent: 10 December 2020 09:17 > To: Owen Smith <owen.smith@xxxxxxxxxx>; win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Subject: RE: [EXTERNAL] [PATCH 2/2] Add AutoReboot capability > > [CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments > unless you have verified the sender and know the content is safe. > > > -----Original Message----- > > From: win-pv-devel <win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx> On > > Behalf Of Owen Smith > > Sent: 09 December 2020 13:29 > > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > > Cc: Owen Smith <owen.smith@xxxxxxxxxx> > > Subject: [EXTERNAL] [PATCH 2/2] Add AutoReboot capability > > > > Setting HKLM\System\CCS\Services\xenbus_monitor\AutoReboot to non-zero > > will allow xenbus_monitor to trigger a reboot when another driver > > requests a reboot. AutoReboot is set to the maximum number of reboots > > to perform. Auto reboots display a message with a 60 second timeout. > > > > This setting can be used to allow headless/unmonitored VMs to complete > > the neccessary number of reboots to return to PV disks/networks. > > Without this capability its possible to update the driver on a parent > > device, which may prompt for a reboot. After this reboot, its likely > > that emulated devices are used whilst drivers are rebound to the > > device nodes. This can leave headless/unmonitored VMs in a state where > > emulated devices are in use with a pending reboot. If network settings > > have been changed for PV devices (e.g. static IP addressing), then the > > VM may not be accessible over RDP or similar connections. > > > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> > > --- > > src/monitor/monitor.c | 133 > > ++++++++++++++++++++++++++++++++++++++++-- > > 1 file changed, 129 insertions(+), 4 deletions(-) > > > > diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index > > 07bf8c1..5d58be4 100644 > > --- a/src/monitor/monitor.c > > +++ b/src/monitor/monitor.c > > @@ -301,7 +301,8 @@ WTSStateName( > > > > static VOID > > DoReboot( > > - VOID > > + IN PTCHAR Message, > > + IN DWORD Timeout > > ) > > { > > Log("waiting for pending install events..."); @@ -312,8 +313,8 @@ > > DoReboot( > > > > #pragma prefast(suppress:28159) > > (VOID) InitiateSystemShutdownEx(NULL, > > - NULL, > > - 0, > > + Message, > > + Timeout, > > TRUE, > > TRUE, > > > > SHTDN_REASON_MAJOR_OPERATINGSYSTEM | @@ -451,6 +452,125 @@ > fail1: > > return NULL; > > } > > > > +static BOOL > > +TryAutoReboot( > > + IN PTCHAR DriverName > > + ) > > +{ > > + PMONITOR_CONTEXT Context = &MonitorContext; > > + HRESULT Result; > > + DWORD Type; > > + DWORD AutoReboot; > > + DWORD RebootCount; > > + DWORD Length; > > + PTCHAR DisplayName; > > + PTCHAR Description; > > + PTCHAR Text; > > + DWORD TextLength; > > + HRESULT Error; > > + > > + Length = sizeof (DWORD); > > + > > + Error = RegQueryValueEx(Context->ParametersKey, > > + "AutoReboot", > > + NULL, > > + &Type, > > + (LPBYTE)&AutoReboot, > > + &Length); > > + if (Error != ERROR_SUCCESS || > > + Type != REG_DWORD) > > + AutoReboot = 0; > > + > > + if (AutoReboot == 0) > > + goto done; > > + > > + Length = sizeof (DWORD); > > + > > + Error = RegQueryValueEx(Context->ParametersKey, > > + "RebootCount", > > + NULL, > > + &Type, > > + (LPBYTE)&RebootCount, > > + &Length); > > + if (Error != ERROR_SUCCESS || > > + Type != REG_DWORD) > > + RebootCount = 0; > > + > > + if (RebootCount >= AutoReboot) > > + goto done; > > + > > + Log("AutoRebooting (reboot %u of %u)\n", > > + RebootCount, > > + AutoReboot); > > + > > + ++RebootCount; > > + > > + (VOID) RegSetValueEx(Context->ParametersKey, > > + "RebootCount", > > + 0, > > + REG_DWORD, > > + (const BYTE*)&RebootCount, > > + (DWORD) sizeof(DWORD)); > > + > > I can't see anything that zeroes/deletes this once there are no more pending > reboots. Is there something else that does this, or am I just missing > something? > > Paul > It seems I missed clearing the value. Patch incoming shortly Owen
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |