HP OpenVMS Systems Documentation

Content starts here

HP OpenVMS Version 8.2 New Features and Documentation Overview


Previous Contents Index

6.12.5 Controlling Which Systems Manage Merge and Copy Operations

When a system fails or aborts a shadow set, this significant event causes every shadow set to be reassessed by all other systems with that shadow set mounted. All active minimerge, full merge, or copy operations cease at this time, returning their resources to those systems. (However, if a system is performing a minicopy operation, that operation continues to completion.)

Those systems wait a predetermined amount of time, measured in seconds, before each attempts to manage any shadow set in a transient state. This pause is called a significant-event recovery delay. It is the total of the values specified for two system parameters, SHADOW_REC_DLY and RECNXINTERVAL. (The default value for each is 20 seconds.)

If the value of the significant-event recovery delay is the same on all systems, it is not possible to predict which systems will manage which shadow set. However, by making the value of the significant-event recovery delay different on all systems, you can predict when a specific system will begin to manage transient-state operations.

6.12.6 Managing Merge Operations

A merge transient state is an event that cannot be predicted. The management of merge activity, on a specific system for multiple shadow sets, can be predicted if the priority level settings for the shadow sets differ.

In the following example, there are four shadow sets, and the SHADOW_MAX_COPY parameter on this system is equal to 1. The value of 1 means that only one merge or copy operation can occur at the same time. This example illustrates how the priority level is used to select shadow sets when only merge operations are involved.

Two shadow sets are assigned a priority level and two have the default priority level of 5000.

The four shadow sets DSA1, DSA20, DSA22, and DSA42, are mounted on two systems. DSA20 and DSA42 are minimerge enabled.


$ SET SHADOW/PRIORITY=7000 DSA1:
$ SET SHADOW/PRIORITY=3000 DSA42:
! DSA20: and DSA22: are at the default priority level of 5000

In this example, when one of the systems fails, all shadow sets are put into a merge-required state. After the significant-event recovery delay time elapses, this system evaluates the shadow sets, and the operations are performed in the following order:

  1. A minimerge operation starts first on DSA20, even though its priority of 5000 is lower than DSA1's priority of 7000. A minimerge operation always takes precedence over other operations. DSA20 and DSA42 are both minimerge enabled, but DSA20's higher priority causes its minimerge operation to start first.
  2. A minimerge operation starts on DSA42. Its priority of 3000 is the lowest of all the shadow sets, but a minimerge operation takes precedence over other operations.
  3. Because there are no other minimerge capable units, DSA1, with a priority level of 7000, is selected to start a merge operation, and it runs to completion.
  4. A merge operation starts on DSA22, the one remaining shadow set whose priority is the default value of 5000, and runs to completion.

6.12.7 Managing Copy Operations

A copy transient state can be predicted by the user because it is the result of direct user action. Therefore, a full copy operation caused by adding a device to a shadow set is not considered a significant event in the cluster. The copy operation is managed by the first system that has an available resource.

In the following example, assume there are four shadow sets, and the SHADOW_MAX COPY parameter on this system is equal to 1. Recall that the shadow sets that are not assigned a specific level will have a default priority level assigned.

For the following example, assume that:

  • DSA1, DSA20, DSA22, and DSA42 are mounted on multiple systems.
  • Only DSA42 is minimerge enabled.
  • DSA22 is already in a full copy state being managed on this system.
  • DSA1 has a priority level of 7000.
  • DSA42 has a priority level of 3000.
  • DSA20 has a priority level of 3000.
  • DSA22 has a default priority level of 5000.

The user adds a device to DSA1. This is not a significant event, and this system will not interrupt the full copy operation of the DSA22 in favor of performing the DSA1 full copy operation.

To expand on this example, assume that a system fails (a significant event) before the copy operations have completed. All shadow sets will be put into a merge required state. Specifically, DSA1, DSA20, and DSA22 are put into a full merge state, and DSA42 is put into a minimerge state.

After the significant event recovery delay expires, this system begins to evaluate all the shadow sets in a transient state. The operations take place in the following order:

  1. A minimerge operation starts on DSA42 and continues until completion. This operation takes priority over other operations, regardless of its priority level.
  2. A copy operation starts on DSA1. The full merge operation is not started because a copy operation takes precedence over a full merge operation.
  3. A merge operation is started and completed on DSA1.
  4. A copy operation is started and completed on DSA22.
  5. A merge operation is started and completed on DSA22.
  6. A merge operation is started and completed on DSA20.

Thus, in this example, the priority level is used to direct the priority of merge and copy operations on this system.

6.12.8 Managing Transient States in Progress

SHADOW_MAX_COPY is a dynamic system parameter that governs the use of system resources by shadowing. Shadowing can be directed to immediately respond to changes in this parameter setting with the following DCL command:


$ SET SHADOW/EVALUATE=RESOURCES

This command stops all the current merge and copy operations on the system on which it is issued. It then restarts the work using the new value of SHADOW_MAX_COPY.

This command is also useful in other circumstances. For example, if a shadow set had a priority level of 0 or another low value, the SET SHADOW /PRIORITY=n command can be used to increase the value. Then, by using the /EVALUATE=RESOURCES qualifier, the priority of shadow sets in a transient state is reevaluated.

The /PRIORITY and /EVALUATE=RESOURCES command qualifiers can be used on the same command line.

When a significant event occurs, all of the SHADOW_MAX_COPY resources are applied. If the value of SHADOW_MAX_COPY is modified using the SYSGEN SET and WRITE ACTIVE commands, and then a SET SHADOW /EVALUATE=RESOURCES is issued, the new value of SHADOW_MAX_COPY has a direct and immediate affect.

To determine which system is controlling a transient operation, enter the following command:


$ SHOW SHADOW/ACTIVE DSAn:

To determine the priority values assigned to each shadow set, enter the following command:


$ SHOW SHADOW/BY_PRIORITY DSAn:

6.13 Visible Impact of Transient State Events

Table 6-1 summarizes the user-visible impact of transient state events from the viewpoint of a shadow set on one system in an OpenVMS Cluster system. For each type of transient state event, the effects on the shadow set, when a merge (full merge, HBMM, or controller minimerge) or copy (full or minicopy) operation was already underway, are listed. The terms Canceled, Restarted, Continued, and Suspended, described in the table key have the same meaning in this table as in Volume Shadowing for OpenVMS messages.

Note also the following characteristics of merge and copy operations:

  • If both a merge and a copy are pending on a shadow set, the merge is done before the copy if and only if the merge is a minimerge. This applies to controller-based minimerges, host-based minimerges, full copies, and minicopies.
  • If an event that specifies a delay occurs during the delay for some prior event, no additional delay is incurred. The merges or copies required for the current event are considered when the prior delay expires.
  • If an event that specifies no delay occurs during the delay for some prior event, the merges or copies required for the "no delay" event are not considered until the prior delay expires.

Table 6-1 Visible Impact of Transient State Events
Event1 Shadow Set (SS) Focus New work required What happens to prior merge/copy on SS? Delay2
      Prior full merge or HBMM Prior controller minimerge Prior full copy Prior minicopy  
Failure of other system that had at least one mounted SS in common with this system. All SSs that were mounted on failed system. Merge required. Canceled and is restarted. If on failed system, it restarts. Otherwise, minimerge continues with added work. Canceled but is eventually continued. Canceled but is eventually continued. Continued as full copy if minicopy master bitmap was on failed system. Yes
  All other SSs with prior merge or copy state. No new work. Canceled but is continued. No change. Canceled but is continued. Canceled but is continued. Yes
               
Failure of a system that did not have any SS mounted in common with this system. All other SSs with prior merge or copy state. No new work. No change. No change. No change. No Change. Yes
               
SS aborted on another system, with writes in restart queue on the aborting system; SS is also mounted on this system. Aborted SS. Merge required. Canceled and is restarted. If on failed system, it restarts. Otherwise, minimerge continues with added work. Canceled but is continued. Canceled but is continued. Yes
  All other SSs with prior merge or copy state. No new work. Canceled but is continued. No change. Canceled but is continued. Canceled but is continued. Yes
               
Other system dismounts a SS that has a merge or copy in progress on its system; SS is also mounted on this system. SS dismounted on other system. No new work. Continued. Restarted. Continued. Continued. No
  All other SSs with prior merge or copy state. No change. No change. No change. No change. No change. No
               
A member is added to a SS that is mounted on this system. Specified SS. Copy required. Canceled but is continued. No change. No change. No change. No
  All other SSs with prior merge or copy state. No new work. No change. No change. No change. No change. No
               
Mount a SS that requires a merge or copy; SS is not mounted on any other system. Specified SS. Copy and/or merge required. Restarted as full merge. Restarted as full merge. Restarted. Restarted as full copy. No
               
SET SHADOW /DEMAND_MERGE command issued on any system for SS mounted on this system. Specified SS does not use controller minimerge. Merge required. Restarted. Not applicable. Canceled but is continued. Canceled but is continued. No
  Specified SS uses controller minimerge. Full merge required. Restarted Suspended and restarted as full merge. Canceled but is continued. Canceled but is continued. No
  All other SSs with prior merge or copy state. No change. No change. No change. No change. No change. No
               
SET SHADOW /EVAL=RESOURCES command issued on this system. All SSs mounted on this system with prior merge or copy state. No change. Canceled but is continued. No change. Canceled but is continued. Canceled but is continued. Yes

1Each event is described from the perspective of one system in a cluster.
2Delay represents a predetermined length of time that elapses before the operation begins. It is the total of the values specified for the SHADOW_REC_DLY and RECNXINTERVAL system parameters.

Key to Merge or Copy Operation Actions (same definitions as in shadowing messages)
Canceled---Operation is stopped so that it can be restarted or continued on any system that is eligible.
Restarted---Operation must start over again on the same system at LBN 0 when the operation is resumed.
Continued---Operation continues at the LBN where it left off when it was canceled or suspended.
Suspended---Operation is stopped such that the operation for that SS can be initiated, restarted, or continued only on the same system where the suspended operation was active.


Chapter 7
Linker Utility

This chapter provides an overview of the differences as well as considerations you should review before linking programs on OpenVMS I64 systems. Major topics include:

For release notes on the linker, refer to the HP OpenVMS Version 8.2 Release Notes.

7.1 Linker Utility New Features

The purpose of the linker is to create images (that is, files that contain binary code and data). The linker ported to OpenVMS I64 is different from the linker on OpenVMS VAX and Alpha systems because it accepts OpenVMS I64 object files and produces OpenVMS I64 images. As on OpenVMS VAX and Alpha systems, the primary type of image created is an executable image. This image can be activated at the DCL command line by entering the RUN command.

The OpenVMS I64 Linker also creates shareable images. A shareable image is a collection of procedures and data that are exported via the SYMBOL_VECTOR option that can be called by executable images or other shareable images. Shareable images are included in an input file via a link operation that creates an executable or shareable image.

When linking modules, the primary type of input file to the OpenVMS I64 Linker is the object file. Object files are produced by language processors such as compilers or assemblers. Because the object files produced by these compilers are unique to the Intel® Itanium® architecture, some aspects of linking modules on OpenVMS I64 systems are different from linking on VAX and Alpha systems. Overall, however, the OpenVMS I64 Linker interface as well as functional capabilities (for example, symbol resolution, virtual memory allocation, and image initialization) are similar to those on OpenVMS VAX and Alpha systems.

7.1.1 Differences When Linking on OpenVMS I64 Systems

Although linking on OpenVMS I64 systems is similar to linking on OpenVMS Alpha systems, some differences exist. The following qualifiers or options are ignored by the OpenVMS I64 linker:

  • /REPLACE
  • /SECTION_BINDING
  • /HEADER
  • PER_PAGE---The per_page keyword in /DEMAND_ZERO=PER_PAGE (the per_page keyword will be supported in a future release, although with a slightly different meaning)
  • DZRO_MIN
  • ISD_MAX

The following qualifiers and options are not allowed by the OpenVMS I64 Linker:

  • /SYSTEM
  • A file spec keyword with the /DEBUG= qualifier
  • The base address must be null in CLUSTER=cluster_name,base_address...
  • BASE=
  • UNIVERSAL=

The following list contains new qualifiers that are supported by the OpenVMS I64 Linker:

  • /BASE_ADDRESS
  • /SEGMENT_ATTRIBUTE
  • /FP_MODE
  • /EXPORT_SYMBOL_VECTOR
  • /PUBLISH_GLOBAL_SYMBOLS
  • The GROUP_SECTIONS and SECTION_DETAILS keywords for the /FULL qualifier

These qualifiers and options are described in the following sections.

7.1.1.1 Data Types of Symbols must Match on I64

On OpenVMS Alpha, there can be a symbol that is defined as a piece of data but referenced as if it were a function. There is no way, using the Alpha object language, that this situation can be detected by the linker.

But on OpenVMS I64, the linker can detect a symbol's data type mismatch. The OpenVMS I64 linker receives information which marks a symbol as a function (FUNC), a piece of data (OBJECT) or unknown (NOTYPE). It also receives relocations which tell the linker when to create a function descriptor for symbols that are defined or referenced as a function.

If the types of a symbol are not unknown (not NOTYPE), they must match. If the definer sets the type as unknown, the referencer type cannot be a function.

For example, take the two modules FIRST.C and SECOND.C:



FIRST.C

#include <stdio.h>

int a;
int aa;
extern int second ();


void main () {

        printf ("The address of 'a'  is %x\n", &a);
        printf ("The address of 'aa' is %x\n", &aa);
        second ();
}

SECOND.C

#include <stdio.h>

extern int a();
extern int aa();

void second () {

        printf ("The address of 'a'  is %x\n", &a);
        printf ("The address of 'aa' is %x\n", &aa);
}

When you link FIRST and SECOND, you get the following informational messages (based on the symbol descriptors) and warning messages (based on the relocations) from the linker:


$ link first,second
%ILINK-I-DIFTYPE, symbol AA of type OBJECT cannot be referenced as type FUNC
        module: SECOND
        file: DISK$USER:[JOE]SECOND.OBJ;5
%ILINK-I-DIFTYPE, symbol A of type OBJECT cannot be referenced as type FUNC
        module: SECOND
        file: DISK$USER:[JOE]SECOND.OBJ;5
%ILINK-W-RELODIFTYPE, relocation requests the linker to build a function
descriptor for a non-function type of symbol
        symbol: A
        relocation section: .rela$CODE$ (section header entry: 19)
        relocation type: RELA$K_R_IA_64_LTOFF_FPTR22
        relocation entry: 1
        module: SECOND
        file: DISK$USER:[JOE]SECOND.OBJ;5
%ILINK-W-RELODIFTYPE, relocation requests the linker to build a function
descriptor for a non-function type of symbol
        symbol: AA
        relocation section: .rela$CODE$ (section header entry: 19)
        relocation type: RELA$K_R_IA_64_LTOFF_FPTR22
        relocation entry: 4
        module: SECOND
        file: DISK$USER:[JOE]SECOND.OBJ;5

To eliminate these informational and warning messages, change the type of the symbols "A" and "AA" to be a function or a piece of data. For example, change the declarations in FIRST.C to functions:


#include <stdio.h>

int a();
int aa();
extern int second ();


void main () {

        printf ("The address of 'a'  is %x\n", &a);
        printf ("The address of 'aa' is %x\n", &aa);
        second ();
}

int a () {
        return 1;
}

int aa () {
        return 1;
}

After this change, your link will be free of informationals and warnings:


$ link first,second
$

Another alternative is to change the references to "A" and "AA" in SECOND to be references to data.


Previous Next Contents Index