Method of executing perform locked operation instructions for supporting recovery of data consistency if lost due to processor failure, and a method of recovering the data consistency after processor failure
First Claim
1. A method of maintaining the integrity of data in a computer system against processor failure while executing perform locked operation (PLO) instructions, the data being stored in data resources accessible through storage of the computer system, each instance of execution of a PLO instruction (PLO instance) comprising the steps of:
- structuring a save area in the storage for each processor in the computer system capable of executing PLO instructions, each PLO instance of execution having one or more operands specified by the PLO instruction of the PLO instance, the one or more operands including specifications for generating store operand values of data items to be stored in a resource unit specified by a blocking symbol in the PLO instance,associating a resource-inconsistency (RI) indicator with each processor'"'"'s save area, the RI indicator being setable to at least a first state (RI state) and a second state (non-RI state), the non-RI state indicating resource data consistency in the resource unit, and the RI state indicating potential resource inconsistency in the resource unit specified by the PLO instance, and store operand values having been generated by using store operands specified in the PLO instance,initiating execution of the PLO instance by a processor while the RI indicator of the processor'"'"'s save area is set to the non-RI state, andwriting in the processor'"'"'s save area each store operand value targeted for changing a data item in the resource unit while the RI indicator of the processor'"'"'s save area is set to the non-RI state, and also writing in the processor'"'"'s save area in association with each store operand value a resource address at which the store operand value is to be written in the resource unit.
1 Assignment
0 Petitions
Accused Products
Abstract
Provides a processor method of executing instances of a Perform Locked Operation (PLO) instruction for enabling a recovery of the consistency of a resource unit being changed by a PLO instance when processor failure occurs anywhere during execution of the PLO instance. The method uses a PLO save area for each processor in a computer system capable of executing PLO instructions. Each PLO save area has a resource-inconsistency (RI) indicator having an RI state and a non-RI state, and stores the function code (FC) of the PLO instance. The RI state indicates that the resource is in a non-usable potentially inconsistent state, and the non-RI state indicates the resource is in the consistent state and may be used. A processor executing a PLO instance writes into its PLO save area all resource addresses where a change is to be made in the resource unit, and also writes in its PLO save area all operand values which will be used to change the resource at the associated addresses. After the processor has successfully written all of these addresses and associated operand data values into its PLO save area, the processor sets its RI indicator to the RI state, and then stores into the resource unit the data values stored in its PLO save area at the resource addresses also stored in its PLO save area, according to the FC also stored therein. After completing all changes in the resource, the processor sets its RI indicator to the non-RI (resource consistent) state. If the processor should ever fail while executing a PLO instance, it signals its failing condition to the system. Then, a RCR method is executed by any operational processor (acting as a RCR processor) to recover the consistency of the resource unit. The RCR method uses the state of the RI indicator with the failed processor'"'"'s PLO save area, the FC stored therewith, and the content of the failed processor'"'"'s PLO save area to restore the consistency of the resource unit.
87 Citations
27 Claims
-
1. A method of maintaining the integrity of data in a computer system against processor failure while executing perform locked operation (PLO) instructions, the data being stored in data resources accessible through storage of the computer system, each instance of execution of a PLO instruction (PLO instance) comprising the steps of:
-
structuring a save area in the storage for each processor in the computer system capable of executing PLO instructions, each PLO instance of execution having one or more operands specified by the PLO instruction of the PLO instance, the one or more operands including specifications for generating store operand values of data items to be stored in a resource unit specified by a blocking symbol in the PLO instance, associating a resource-inconsistency (RI) indicator with each processor'"'"'s save area, the RI indicator being setable to at least a first state (RI state) and a second state (non-RI state), the non-RI state indicating resource data consistency in the resource unit, and the RI state indicating potential resource inconsistency in the resource unit specified by the PLO instance, and store operand values having been generated by using store operands specified in the PLO instance, initiating execution of the PLO instance by a processor while the RI indicator of the processor'"'"'s save area is set to the non-RI state, and writing in the processor'"'"'s save area each store operand value targeted for changing a data item in the resource unit while the RI indicator of the processor'"'"'s save area is set to the non-RI state, and also writing in the processor'"'"'s save area in association with each store operand value a resource address at which the store operand value is to be written in the resource unit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of maintaining integrity of data in a computer system by a processor in the computer system executing a program containing a perform locked operation (PLO) instruction specifying a function for changing data in a resource unit stored in a computer system, the PLO instruction having operands for specifying where and what in the resource unit is to be changed by execution of the PLO instruction, the processor performing the steps of:
-
executing by a processor preparatory instructions for determining values of operands of a PLO instance to be executed representing a PLO instruction specifying where and what in a resource unit is to be changed by execution of the PLO instance, including preparing operand addresses for locating in the resource insertions and/or deletions of data and for preparing operand values of data to be inserted and/or deleted in the resource unit at prepared operand addresses, operands of the PLO instance including one or more comparands, each comparand value prepared by fetching a predetermined location associated with the resource unit, each comparand value being changeable by another processor executing another PLO instance for changing the resource unit and, storing each prepared operand value, including each comparand value, for the operands of a PLO instance to be executed, initiating execution of the PLO instance by the processor, comparing each prepared comparand value with a current value of the comparand operand fetched from a predetermined location associated with the resource unit to test if the resource unit has been changed since the prepared comparand value was prepared, if the comparing step finds an equal condition, generating store operand values of the PLO instance for changing the resource unit and generating the addresses in the resource unit at which the store operand values are to be stored, and storing the store operand values and the addresses in a save area of the processor executing the PLO instance, setting to a locked state a hardware lock associated with a blocking symbol specified by the PLO instance for locking the resource unit from being changed by any other processor in the computer system, again comparing each prepared comparand value with a current value of the comparand operand fetched from a predetermined location associated with the resource unit to test if the resource unit has been changed since the prepared comparand value was prepared, if the again comparing step finds an equal condition, setting a resource-inconsistency (RI) indicator of the processor'"'"'s PLO save area to a RI state in preparation for changing the resource unit, accessing the resource unit at locations specified by the addresses stored in the processor'"'"'s save area to change the resource unit with the operand values stored in the processor'"'"'s save area in accordance with a function code (FC) specified in the PLO instance being executed, resetting the RI indicator to a non-RI state after completion of changes of the resource unit, and resetting to an unlocked state the hardware lock associated with the blocking symbol specified in the PLO instance to enable the resource unit to be accessed by any processor in the computer system. - View Dependent Claims (13)
-
-
14. A method of maintaining integrity of data in a computer system by a processor in the computer system executing a program containing a perform locked operation (PLO) instruction specifying a function for changing data in a resource unit stored in a computer system, the PLO instruction having operands for specifying where and what in the resource unit is to be changed by execution of the PLO instruction, the processor performing the steps of:
-
executing by a processor preparatory instructions for determining values of operands of a PLO instance to be executed representing a PLO instruction specifying where and what in a resource unit is to be changed by execution of the PLO instance, including preparing operand addresses for locating in the resource insertions and/or deletions of data and for preparing operand values of data to be inserted and/or deleted in the resource unit at prepared operand addresses, operands of the PLO instance including one or more comparands, each comparand value prepared by fetching a predetermined location associated with the resource unit, each comparand value being changeable by another processor executing another PLO instance for changing the resource unit and, storing each prepared operand value, including each comparand value, for the operands of a PLO instance to be executed, initiating execution of the PLO instance by the processor setting to a locked state a hardware lock associated with a blocking symbol specified by the PLO instance for locking the resource unit from being changed by any other processor in the computer system, comparing each prepared comparand value with a current value of the comparand operand fetched from a predetermined location associated with the resource unit to test if the resource unit has been changed since the prepared comparand value was prepared, if the comparing step finds an equal condition, generating store operand values of the PLO instance for changing the resource unit and generating the addresses in the resource unit at which the store operand values are to be stored, and storing the store operand values and the addresses in a save area of the processor executing the PLO instance, setting a resource-inconsistency (RI) indicator of the processor'"'"'s PLO save area to a RI state in preparation for changing the resource unit, accessing the resource unit at locations specified by the addresses stored in the processor'"'"'s save area to change the resource unit with the operand values stored in the processor'"'"'s save area in accordance with a function code (FC) specified in the PLO instance being executed, resetting the RI indicator to a non-RI state after completion of changes of the resource unit, and resetting to an unlocked state the hardware lock associated with the blocking symbol specified in the PLO instance to enable the resource unit to be accessed by any processor in the computer system.
-
-
15. A method of maintaining the integrity of data in a computer system against processor failure while executing a PLO instance of a PLO instruction, each PLO instance specifying a blocking symbol associated with a resource unit, each processor in the computer system capable of executing PLO instances having a PLO save area, and during execution of each PLO instance the PLO save area storing PLO operand values, and addresses of the operand values, which change the resource unit associated with the blocking symbol in an executing PLO instance, the method comprising the steps of:
-
detecting by an operational processor a processor identifier (PID) with a fail signal communicated from a failed processor in the computer system executing a PLO instance of a PLO instruction, accepting by the operational processor of the communicated PID to temporarily become a recovery processor for preserving the consistency of the resource unit, accessing by the recovery processor a resource-inconsistency (RI) indicator associated with the failed processor'"'"'s PLO save area, and detecting a setting of a RI indicator which may be set to an RI state to indicate the resource unit may be in an inconsistent state or to a non-RI state to indicate the resource unit is in a consistent state, the RI state existing only if the lock on the resource unit was in locked state when the processor failed, if the RI indicator is found by the recovery processor to be in the RI state, restoring the resource unit to the consistent state by the recovery processor utilizing the contents of the failed processor'"'"'s PLO save area to change the resource unit in the same way as would have been done by the failed processor if it had not failed, locating by the recovery processor a hardware lock entry for the resource unit, and resetting the lock entry to the unlocked state, terminating the recovery operation, and the recovery processor returning to other operations. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)
-
-
27. A method of maintaining integrity of data in a computer system when a processor in the computer system is executing a program containing a perform locked operation (PLO) instruction specifying a function for changing data in a resource unit stored in a computer system, the PLO instruction having operands for specifying where and what in the resource unit is to be changed by execution of the PLO instruction, the processor performing the steps of:
-
detecting an occurance of a failure by the processor while executing a PLO instance of a PLO instruction, signaling to a predesignated entity in the computer system a processor failing indication with associated information including the PID of the failing processor and an indication that the failing processor is executing a PLO instance, receiving by the predesignated entity the processor failing indication with the associated information, sending by the predesignated entity a recovery signal with the associated information to one or more operational processors in the computer system, and one of the operational processors accepting the recovery signal to temporarily become a resource-consistency-recovery (RCR) processor for recovering the consistency of a resource subjected to the PLO instance in execution by the failing processor, performing by the RCR processor the steps of setting the RI indicator to the RI state after the writing step and the also writing step have stored all of the store operand values and associated resource addresses in the processor'"'"'s save area, copying each store operand value from the processor'"'"'s save area to the associated resource address in the resource unit while the RI indicator is set to the RI state for changing the resource unit, setting the RI indicator of the processor'"'"'s save area to the non-RI state after the copying step has completed changing the resource unit by copying all of the store operand values from the processor'"'"'s save area into the resource unit for recovering the consistency of the resource and leaving the resource unit in an unlocked condition for the resource unit to be reliably used in an execution of a later PLO instance by any operational processor in the computer system, terminating operations as a RCR processor to enable the processor to return to other processing tasks which may be unrelated to RCR operations.
-
Specification