3.1.4.3.7.18 CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION

The CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION control code SHOULD<210> be used to upgrade the operational version of the cluster.

Servers that do not support this control fail this method and return error code 0x00000001 (ERROR_INVALID_FUNCTION).

The client MUST provide a 32-bit value in the buffer designated by the lpInBuffer parameter indicating whether the server is to check the possibility of the cluster version upgrade or perform the cluster version upgrade.

The server MUST set the buffer designated by the lpOutBuffer parameter to a 32-bit value containing the cluster major version number, if the method completes successfully and if the client set lpInBuffer to 0x00000002. In other cases, the client MUST ignore lpOutBuffer.

Upon accepting this method, the server MUST proceed only after determining that no upgrade to the cluster operational version is in progress, waiting for any in-progress upgrade to complete if necessary.

If the client provides an input value of 0x00000001:

  • The server MUST determine whether at least one node in the cluster supports an increment of the current major version by one.

    • If not, the server returns 0x00000000 (ERROR_SUCCESS).

    • If so, the server determines whether all nodes support an increment of the cluster major version by one.

      • If so, the server returns 0x00000000 (ERROR_SUCCESS).

      • Otherwise, the server returns 0x00001755 (ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS).

If the client provides an input value of 0x00000002:

  • The server MUST determine whether at least one node in the cluster supports an increment of the current major version by one.

    • If not, the server returns 0x00000000 (ERROR_SUCCESS) and set lpOutBuffer to the current major version.

    • If so, the server determines whether all nodes support an increment of the cluster major version by one.

      • If not, the server MUST return 0x00001755 (ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS).

      • If so, the server MUST set in the cluster nonvolatile state that an upgrade to the cluster operational version is in progress. The server MUST then upgrade the cluster major version to the current major version plus one. How the server increments the major version is implementation-specific. Upon successful upgrade of the cluster major version, the server MUST return 0x00000000 (ERROR_SUCCESS) and set lpOutBuffer to the new cluster major version.

The server MUST fail this method with 0x00000057 (ERROR_INVALID_PARAMETER) if the client sets lpInBuffer to any other value

The server MUST accept a CLUSCTL_CLUSTER_UPGRADE_CLUSTER_VERSION cluster control code request if its protocol server state is in the read/write state, as specified in section 3.1.1.