Operating System - OpenVMS
1827874 Members
1007 Online
109969 Solutions
New Discussion

RX2800 - Clean shutdown of OpenVMS when power button tapped.

 
Brian Reiter
Valued Contributor

RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hi Folks,

 

On the RX2800 (OpenVMS 8-4 fully patched), tapping the power button (assuming the system is running) results in a clean shutdown of OpenVMS. Does anyone know if this can be tapped into so that a clean application shutdown could be done as well?

 

cheers

 

Brian

14 REPLIES 14
Steven Schweda
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

 
Brian Reiter
Valued Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hi Steven,

 

I did, but I couldn't see any evidence of it being called as part of the shutdown procedure invked when the power button was pressed.

 

I'm going to keep digging but was was wondering if someone else has tried this.

 

cheers

 

Brian

Steven Schweda
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

 
Hoff
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

AFAIK, the front power button does not call the OpenVMS shutdown routines. 

 

I'd expect the front-panel power button powers off the box.  Hard.

 

VMS itself is fairly tolerant of a hard shutdown (and which is related to why its I/O processing tends to be much slower than other operating systems), but various applications may not be quite so tolerant.

 

If there were a front-power shutdown event arriving at OpenVMS, then that processing would call SHUTDOWN or analogous, and that would call SYSHUTDWN and related, and you'd have already found evidence of that invocation in the operator logs (eg: the usual OPCOM chatter during a controlled shutdown) and the accounting data, among other places.  Or there'd be documentation in parallel to the existing SHUTDOWN documentation for this path.  There'd be some information around this shutdown sequencing somewhere in the docs.  Or in the HP IA64 Core Hardware Monitor (Events) or WBEM documentation.  Or in the recent Power Management documentation, or near the CPU_POWER_MGMT/CPU_POWER_THRSH parameters.  

 

And there isn't.  

 

 Googling the core manuals for "SYSHUTDWN", "button" or analogous finds nothing.  (Well, a few references and a doc bug or two, but nothing about a controlled front-panel-initiated server shutdown.)

 

If you want the official answer here of course, please ring up the HP support center and ask.

 

 

Brian Reiter
Valued Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hi Hoff,

 

From what I've seen it looks as though the SMHANDLER process gets the message that the power button has been pressed and released (a single tap) and issues the shutdown command. The logs certainly support this.

 

The gracefull shutdown is described here. (bottom of page 85). As stated in the manual anything less than 4 seconds triggers a clean (graceful) shutdown. I'm just curiious as to whether nor not I can easily tap into this.

 

cheers

 

Brian

 

 

Hoff
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Call HP support, and ask for the official answer.

 

I'd expect that a "normal" SHUTDOWN.COM shutdown sequence (only on V8.3-1H1 MANAGE V2.0 and later) would invoke SYSHUTDWN_0010.COM and would then invoke SYSHUTDWN.COM as part of its normal processing, or that there'd be OpenVMS documentation around that documented the variant shutdown path processing for the front-panel button.

 

It would not surprise me to learn that the cited soft power-off text in that rx2800 manual refers to Microsoft Windows and to operating systems that have implemented the feature; that the hardware team's "aspirational" support for this feature within the operating systems was what was documented there.  Not, um, reality.  

 

(And while I have a test server available, I don't have an rx2800 available for "target practice" testing.)

 

Volker Halle
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

according to the OpenVMS Alpha sources listings (module [SMDRIVER]SMHANDLER), the following shutdown command would be issued from routine shutdown_system:

 

@SYS$SYSTEM:SHUTDOWN 2  YES NO LATER NO POWER_OFF

 

This command has parameters P4 and P5 in the wrong order ! P4 should be "YES" for invocation of SYSHUTDWN.COM and P5 should be "LATER". And "POWER_OFF" should be P7, i.e. P6 is missing at all (should be "NO" for no automatic reboot).

 

You should maybe search in your copy of SYS$SYSTEM:SYS$SMHANDLER.EXE for the SHUTDOWN command parameters used in your OpenVMS version.

 

Volker.

Brian Reiter
Valued Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hi Volker,

 

I'd already tried that, I can see the error messages the process outputs when it detects the event but I can't see the construction of the command line.

 

This is the start of what I get in the log

 

SYS$SYSROOT:[SYSMGR]SYS$SMHANDLER.LOG;52

$ Set NoOn
$ VERIFY = F$VERIFY(F$TRNLNM("SYLOGIN_VERIFY"))
12-DEC-2011 11:59:58.30 %SMHANDLER-S-STARTUP, server management event handler st
artup
12-DEC-2011 11:59:58.30 ASTs queued, waiting for event....
12-DEC-2011 12:00:36.59 *** In Fatal AST routine
12-DEC-2011 12:00:36.59 Event Mask = 40000
12-DEC-2011 12:00:36.59 Starting system shutdown....
12-DEC-2011 12:00:36.59 lib$spawn status = 1
12-DEC-2011 12:00:36.59 AST routine complete...


        SHUTDOWN -- Perform an Orderly System Shutdown
                    on node CATA1


%SHUTDOWN-I-OPERATOR, this terminal is now an operator's console

 

So its doing a spawn, I may have a look at SHUTDOWN.COM and verify what is being passed.

 

cheers

 

Brian.

Hoff
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

That SHUTDOWN command will probably also malfunction if/when the SHUTDOWN$MINIMUM_MINUTES logical name is defined.

 

>You should maybe search in your copy of SYS$SYSTEM:SYS$SMHANDLER.EXE for the SHUTDOWN command parameters used in your OpenVMS version.

 

Use the strings tool.

Volker Halle
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

just add a couple of SHOW SYMB P1 up to SHOW SYMB P7 into the beginning of SYS$SYSTEM:SHUTDOWN.COM and press the Power button again...

 

Or $ DEFINE/SYSTEM SHUTDOWN$VERIFY TRUE

 

The actual shutdown command and parameters strings are nearly impossible to find in SYS$SMHANDLER.EXE

 

Volker. 

John Gillings
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

   You've discovered the weakest part of OpenVMS - shutdown and startup. For most folk the time between startups and shutdowns is measured in years, so startups almost never get debugged properly. Looks like you've found a rather basic typo in this new feature (that no one else has ever heard of?)

 

  First step, report the bug to HP, including a reference to this thread. Chances are they will refuse to fix it, claiming that "some people may be dependent on the bug" - these days most of the "engineering" done is in manufacturing excuses to not fix things that are clearly and unarguably bugs.

 

   Since the buggy line is inside an image, the best way to get around it is to make your own SHUTDOWN.COM. Make a copy of the original, calling it REAL_SHUTDOWN.COM and write your own SYS$COMMON:[SYSEXE]SHUTDOWN.COM

 

Two approaches, first is to unconditionally shutdown your application and pass the parameters to the real routine. For example

 

 

SYS$COMMON:[SYSEXE]SHUTDOWN.COM

$ real=F$PARSE("REAL_SHUTDOWN",";",F$ENVIRONMENT("PROCEDURE"))
$ @dev:[dir]MY_APPLICATION_CLEAN_SHUTDOWN
$ @'real' "''p1'" "''p2'" "''p3'" "''p4'" "''p5'" "''p6'" "''p7'" "''p8'"


 

Another is to recognise the buggy parameter list and correct it in line. Any other set of parameters is passed through directly. For example:  (assuming you agree with Volker's parameters):

 

SYS$COMMON:[SYSEXE]SHUTDOWN.COM

$ real=F$PARSE("REAL_SHUTDOWN",";",F$ENVIRONMENT("PROCEDURE"))
$ IF p1.EQS.2.AND.p2.EQS."YES".AND.p3.EQS."NO".AND.p4.EQS."LATER".AND.p5.EQS."NO".AND.p6.EQS."POWER_OFF" 
$ THEN 
$   @'real' 2 YES NO YES LATER NO POWER_OFF
$ ELSE
$   @'real' "''p1'" "''p2'" "''p3'" "''p4'" "''p5'" "''p6'" "''p7'" "''p8'"
$ ENDIF 


 

Add your application shutdown to SYSHUTDWN.COM

 

You'll need to remember to save and restore your customised version of SHUTDOWN.COM when the system is upgraded or patched.

 

The first approach means you can be sure your application will be shutdown REGARDLESS of parameters. This may make sense in your case. The second means that if HP pulls their finger out and fixes the bug, all you need do is restore the default SHUTDOWN.COM.

 

Good Luck!

A crucible of informative mistakes
Hoff
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

>Since the buggy line is inside an image, the best way to get around it is to make your own SHUTDOWN.COM. Make a copy of the original, calling it REAL_SHUTDOWN.COM and write your own SYS$COMMON:[SYSEXE]SHUTDOWN.COM

 

Another option: patch the image to invoke something called DOWNSHUT.COM or such, fix the parameter settings in your DOWNSHUT.COM, and invoke the real SHUTDOWN.COM from there.  Keeping the same number of characters in the name makes the patch (far) easier.

 

If you're so included, use xxd, find and wack the string, xxd back, check the file attributes, and Bob's Your Uncle.

 

Or PATCH /ABSOLUTE works.

 

There's very little (no?) documentation on this button-based power shutdown feature anywhere obvious in the VMS manuals, so whether this is even considered supported could be open to discussion.

Brian Reiter
Valued Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Hmmm, I'm not sure there is a bug, or at least not in the IA64 version of OpenVMS. The parameters geting passed through to SHUTDOWN.COM are:

 

1  0

2  %SMHANDLER-I-SHUTDOWN, HP Integrated Lights Out, shutdown activated

3  YES

4   NO
5  LATER

6  NO

7  POWER_OFF

8

 

Which looks to be valid. So tweaking SHUTDOWN.COM to trigger a specific site shutdown if the P2 parameter contains the text  "HP Integrated Lights Out " would be a quick solution. A bit of a hack though. 

 

So, are there any clues on how the SMHANDLER communicates with the ILO? Pity there isn't an interface akin to $SET_SYSTEM_EVENT.

 

I have suggested to the Office of OpenVMS Programs that it may be useful to allow the users to hook into this method of doing a system shutdown.

Volker Halle
Honored Contributor

Re: RX2800 - Clean shutdown of OpenVMS when power button tapped.

Brian,

 

thanks for providing this information. This indicates, that the parameters of the shutdown invocation (inside SYS$SMHANDLER.EXE) have been fixed in one of the recent versions of OpenVMS (my example was from V7.3-1).

 

P4 is still NO, which means SYSHUTDWN.COM will not be executed.

 

As mentioned by Hoff, your (V8.4) SHUTDOWN.COM should be calling SYSHUTDWN_0010.COM, that would be a supported way to attempt to modify the shutdown behaviour.

 

SYS$SMHANDLER will assign a channel to SMA0: and queue an IO$_ACPCONTROL read with an AST. The AST will fire, after SMDRIVER receives an 'environmental interrupt'.

 

Volker.