Method and apparatus for virtual load regions in storage system controllers
First Claim
1. A method for managing storage controller code, comprising:
- storing a first version of storage controller code in a first region of storage controller memory associated with a first storage controller;
storing a second version of storage controller code in a second region of said storage controller memory associated with said first storage controller;
maintaining region management information in storage controller memory, wherein said region management information is not stored in said first or second regions of said storage controller memory;
determining from information included in one of the first and second versions of storage controller code that said first or second version of storage controller code is to be designated said primary version, wherein said determining comprises said first storage controller reading said first and second versions of storage controller code;
in response to determining from said information included in one of the first and second versions of storage controller code that said first or second version of storage controller code is to be designated said primary version, designating in said region management information said primary version of storage controller code;
in response to said determining said primary version, executing said primary version to control at least aspects of operation of said first storage controller, wherein at said time of executing said first version of storage controller code is stored in said first region of said storage controller memory and said second version of storage controller code is stored in said second region of said storage controller memory;
detecting a failure in operation of said first storage controller while executing said primary version of said storage controller code;
in response to said detecting a failure of operation of said first storage controller while executing said primary version of said storage controller code;
a) stopping execution of said primary version of said storage controller code;
b) designating in said region management information the other of the first or second version of storage controller code originally designated as the primary version of storage controller code and removing a designation in said region management information of said first or second version of storage controller code originally designated as the primary version; and
c) after designating in said region management information said other of the first or second version of storage controller code originally designated as the primary version, executing said other of the first or second version of storage controller code originally designated as the primary version, wherein between said stopping execution of said primary version of storage controller code and executing said other of the first or second version of storage controller code originally designated as the primary version no copying of storage controller code is performed.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and apparatuses for facilitating the management of multiple controller code versions for implementing operational aspects of storage system controllers are provided. In particular, multiple versions of storage controller code are loaded into the physical memory of a storage controller. The logical region in which a particular controller code version is loaded may be designated in metadata as a primary, secondary or other region. The controller code that is associated with a logical version designated as the primary region is selected by the storage controller for execution upon a storage controller reboot. Accordingly, time consuming copy operations are not required in order to switch between different versions of storage controller code.
-
Citations
19 Claims
-
1. A method for managing storage controller code, comprising:
-
storing a first version of storage controller code in a first region of storage controller memory associated with a first storage controller; storing a second version of storage controller code in a second region of said storage controller memory associated with said first storage controller; maintaining region management information in storage controller memory, wherein said region management information is not stored in said first or second regions of said storage controller memory; determining from information included in one of the first and second versions of storage controller code that said first or second version of storage controller code is to be designated said primary version, wherein said determining comprises said first storage controller reading said first and second versions of storage controller code; in response to determining from said information included in one of the first and second versions of storage controller code that said first or second version of storage controller code is to be designated said primary version, designating in said region management information said primary version of storage controller code; in response to said determining said primary version, executing said primary version to control at least aspects of operation of said first storage controller, wherein at said time of executing said first version of storage controller code is stored in said first region of said storage controller memory and said second version of storage controller code is stored in said second region of said storage controller memory; detecting a failure in operation of said first storage controller while executing said primary version of said storage controller code; in response to said detecting a failure of operation of said first storage controller while executing said primary version of said storage controller code; a) stopping execution of said primary version of said storage controller code; b) designating in said region management information the other of the first or second version of storage controller code originally designated as the primary version of storage controller code and removing a designation in said region management information of said first or second version of storage controller code originally designated as the primary version; and c) after designating in said region management information said other of the first or second version of storage controller code originally designated as the primary version, executing said other of the first or second version of storage controller code originally designated as the primary version, wherein between said stopping execution of said primary version of storage controller code and executing said other of the first or second version of storage controller code originally designated as the primary version no copying of storage controller code is performed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A data storage system controller, comprising:
-
memory, including; a first version of storage controller code loaded into a first region of said memory; a second version of storage controller code loaded into a second region of said memory, wherein said first version of storage controller code is different than said second version of storage controller code; and region management information, wherein said region management information is not stored in first or second regions of said memory; and a processor, wherein said processor executes a said first version of storage controller code from said first region of said memory in response to a designation included in one of said first and second versions of storage controller code and maintained in said region management information of said first region of said memory as containing a primary version of said storage controller code, wherein said processor reads said designation in said first and second versions of storage controller code and writes said designation to said region management information, wherein said processor executes said second version of said storage controller code from said second region of said memory in response to a designation maintained in said region management information of said second region of said memory as containing a primary version of said storage controller code without requiring a copying operation, and wherein said processor switches between execution of said first version of storage controller code and said second version of storage controller code without copying code from one region to another. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A data storage system, comprising:
means for controlling data input/output operations, including; means for storing instructions for execution, including at least a first region containing a first set of execution instructions, and a second region containing a second set of execution instructions, wherein said first set of execution instructions are different than said second set of execution instructions; means for storing management information, wherein one of said first and second sets of execution instructions includes information designating one of said first and second sets of instructions as a primary set of execution instructions, wherein said means for storing management information are different than said means for storing instructions for execution, wherein said means for storing management information reads said information designating said one of said first and second sets of instructions as a primary set of execution instructions; means for executing instructions, wherein one of said first and second sets of execution instructions designated as said primary set of execution instructions is executed from a corresponding one of said first and second regions of said memory, wherein said set of execution instructions that is designated as primary and that is executed does not need to be copied to said means for storing after execution of said first set of execution instructions. - View Dependent Claims (17, 18, 19)
Specification