Patent ID: 8359431

Claim:
A storage subsystem comprising: a plurality of storage apparatuses for storing data; a storage controller for storing, in a cache memory, data updated in response to an access request from a host computer and generating a command for controlling data input to and output from an access target designated by the access request; and a memory controller for specifying a storage apparatus to be the access target from among the plurality of storage apparatuses based on the command generated by the storage controller and sending/receiving data to/from the specified storage apparatus, wherein the plurality of storage apparatuses includes a plurality of nonvolatile semiconductor memories having a block group that is a storage unit for the data, wherein when executing destaging processing for writing a plurality of pieces of update data existing in the cache memory to any blocks in the plurality of nonvolatile semiconductor memories, the storage controller generates a specific command as a command for executing the destaging processing, adds each of the pieces of the update data and a plurality of parameters, each indicating where each of the pieces of the update data is to be stored, to the specific command generated, and transfers the specific command, to which each of the parameters and each of the pieces of the update data are added, to the memory controller, wherein the memory controller stores each of the pieces of the update data in a block of the nonvolatile semiconductor memory designated by each of the parameters based on the specific command, wherein each block in each of the plurality of the nonvolatile semiconductor memories includes a user area and a log buffer area having smaller storage capacity than that of the user area, wherein when the memory controller stores each of the pieces of the update data in each of the designated blocks, if the capacity of each of the pieces of the update data is equal to or less than the storage capacity of the log buffer area in each of the designated blocks, the memory controller stores each of the pieces of the update data in the log buffer area in each of the designated blocks, and wherein if the capacity of each of the pieces of the update data is larger than the storage capacity of the log buffer area in each of the designated blocks, the memory controller reads data from the user area in each of the designated blocks, overwrites each piece of the data read from the user area with each of the pieces of the update data, and stores the data overwritten with each of the pieces of the update data in the user area in each of the designated blocks.