An UPS allows extra time for a write to be completed before power is finally lost. The battery backup allows cached write data to be maintained until power is restored so that the cached write can be completed. The danger is that power can be lost after the data has been written to the cache but before the data has been written to disk. Existing systems are typically configured such that the host is informed that a write has been completed once the write data has been written to a write cache of a disk drive or an array controller. In order to assure reliability in the event of unexpected power failures, high-performance RAID arrays generally require a battery backup or uninterruptable power supply (UPS). Existing RAID arrays, however, suffer from various deficiencies. These arrays are often configured to operate as Redundant Arrays of Inexpensive Disks, otherwise known as RAID arrays, to provide added speed and reliability. The present invention relates generally to Redundant Arrays of Inexpensive Disks and more particularly, the invention relates to technology for increasing the performance of these disk arrays.ĭisk arrays provide vast amounts of storage as well as flexibility in speed and reliability. A method for reliably writing data to a disk drive, the method comprising: caching write data of write operations received from a host system deferring transmission to a host system of write completion interrupts for the write operations until after any cached write data has been written to a disk medium determining that a command has not been received from the host system within a predetermined amount of time after a receipt of a previous command and performing a cache flush in response to the determination, wherein the cache flush causes any cached write data to be written to the disk medium. A method for reliably writing data to a disk drive, the method comprising, on a disk drive controller, for write operations for which write data has been cached by the controller, deferring transmission to a host system of write completion interrupts for the write operations until a cache flush of the write data has been completed, and repeating a cache flush when a command is not received from the host system within a predetermined amount of time after a receipt of a previous command.ġ2. The method of claim 1, wherein the cache is an array write cache.ġ1. The method of claim 1, wherein the cache is a disk drive write cache.ġ0. The method of claim 7, wherein the write command received in (a) is the first write command received since the cache was last flushed.ĩ. The method of claim 1, further comprising: (g) determining that at least a predetermined amount of time has passed since (a) and (h) performing (d) in response to (g).Ĩ. The method of claim 1, further comprising: (g) determining that at least a predetermined number of read commands have been received have been received since (a) without an intervening write command and (h) performing (d) in response to (g).ħ. The method of claim 1, further comprising: (g) determining that a command has not been received from the host system within a predetermined amount of time after (a) and (h) performing (d) in response to (g).Ħ. The method of claim 3, further comprising, in conjunction with retrieving the identification, removing the identification from the queue.ĥ. The method of claim 1, wherein the identification is stored in a queue.Ĥ.
The method of claim 1, further comprising repeating (a), (b), and (c) a plurality of times before performing (d).ģ. A method for reliably writing data to a disk drive, the method comprising: (a) receiving a write command from a host system (b) storing, in a cache, write data that is associated with the write command and that is to be written to the disk drive (c) storing an identification of the write command (d) flushing the cache to force cached write data to be written to disk media (e) in response to (d), retrieving the stored identification of the write command and (f) sending a completion interrupt to the host based at least upon the retrieved identification of the write command, whereby the completion interrupt is not sent to the host if a power loss interrupts the completion of the write command after the write data is stored in the cache but before the write data is written to disk media.Ģ.