Patent ID: 8219794

Claim:
A method comprising: receiving, by a storage subsystem, new firmware from a storage server for an I/O module in the storage subsystem; storing, by the storage subsystem, state data for the I/O module; rebooting, by the storage subsystem, a CPU for the I/O module to load the new firmware; determining after reboot, by the storage subsystem, that the reboot was for loading the new firmware based on the stored state data; initializing, by the storage subsystem, the I/O module to use the new firmware, wherein the initializing is based on the stored state data, does not reset I/O routing hardware on the I/O module, and is independent of the I/O module processing a request to access data stored on disks coupled to the I/O module; restoring, by the storage subsystem, a software state for the I/O module using the stored state data; restoring a hardware state for the I/O module using the stored state data; comparing a copy of hardware registers in the stored state data to current hardware registers; sending a primitive to the storage server for the storage server to discover a change in the storage subsystem if the hardware registers do not match; and managing, by the storage subsystem, the I/O routing hardware on the I/O module using the new firmware.