Patent ID: 7743224

Claim:
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.