Patent ID: 7421552

Claim:
A data storage system, comprising: a volatile-memory storage cache; a flash-based memory vault; a controller coupled to the volatile-memory storage cache and the flash-based memory vault, the controller being configured to: while the controller is being powered by a primary power source, perform data storage operations on behalf of a set of hosts using the volatile-memory storage cache and a set of magnetic disk drives, receive a power failure signal indicating that the controller is now being powered by a backup power source rather than by the primary power source, and move data from the volatile-memory storage cache to a flash-based memory vault in response to the power failure signal, a first storage processor having a first storage cache and a first memory vault; a second storage processor having a second storage cache and a second memory vault, the first and second storage caches being configured to mirror data, the first and second storage caches forming the volatile-memory storage cache of the data storage system, the first and second memory vaults forming the flash-based memory vault; and wherein the controller, when moving the data from the volatile-memory storage cache to the flash-based memory vault, is configured to: store contents of the first storage cache to the first memory vault, and store contents of the second storage cache to the second memory vault; and wherein the controller is further configured to: receive a power normal signal, restore the first and second storage caches from the first and second memory vaults which form the flash-based memory vault in response to the power normal signal, the first and second storage caches mirroring each other once the first and second storage caches have been restored, when restoring the first and second storage caches, transfer a top portion of the contents of the first storage cache stored in the first memory vault back to the first storage cache without transferring a bottom portion of the contents of the first storage cache store in the first memory vault, when restoring the first and second storage caches, transfer a bottom portion of the contents of the second storage cache stored in the second memory vault back to the second storage cache without transferring a top portion of the contents of the second storage cache store in the second memory vault, when restoring the first and second storage caches, copy the bottom portion of the contents transferred back to the second storage cache from the second storage cache to the first storage cache, and when restoring the first and second storage caches, copy the top portion of the contents transferred back to the first storage cache from the first storage cache to the second storage cache.