A method for efficiently destaging write data from a storage controller to storage devices (348a-n), comprising: determining, by the storage controller, that a cache element (352a-n) should be transferred from a write cache of the storage controller to the storage devices (348a-n), wherein cache elements (352a-n) are fixed size portions of the write cache; calculating, by the storage controller, if a dirty watermark is above a dirty watermark maximum value, wherein the dirty watermark identifies the amount of dirty data in the write cache, wherein dirty data is data in the write cache that has not yet been written to storage devices; and identifying (1208, 1212), by the storage controller, in response to calculating that a dirty watermark is above a dirty watermark maximum value, a first cache element (352a-n) to destage from the write cache to the storage devices (348a-n); characterized in that the method further comprises: removing, by the storage controller, a first data container comprising the first cache element (352a-n) from a destage stream, the destage stream comprising only full data containers, a full data container comprising all of the dirty or valid cache elements in a stripe (404, 408, 412, 416) of a RAID group; transferring, by the storage controller, the first data container from the write cache to the storage devices (348a-n); incrementing, by the storage controller, an active destage count, wherein the active destage count is a current number of host write requests issued to a virtual disk that have not yet been completed, wherein the virtual disk is the RAID group comprising one or more specific storage devices (348a-n); and repeating determining, calculating, identifying, removing, transferring, and incrementing, by the storage controller, if the active destage count is less than an active destage count maximum value; wherein the destage stream and the first data container correspond to the virtual disk; wherein the storage controller concatenates a plurality of full data containers to create the first data container if the full data containers of the plurality of full data containers are adjacent in terms of logical block addresses, when performing said step of identifying the first cache element as a better cache element to destage. determining, by the storage controller, that a cache element (352a-n) should be transferred from a write cache of the storage controller to the storage devices (348a-n), wherein cache elements (352a-n) are fixed size portions of the write cache; calculating, by the storage controller, if a dirty watermark is above a dirty watermark maximum value, wherein the dirty watermark identifies the amount of dirty data in the write cache, wherein dirty data is data in the write cache that has not yet been written to storage devices; and identifying (1208, 1212), by the storage controller, in response to calculating that a dirty watermark is above a dirty watermark maximum value, a first cache element (352a-n) to destage from the write cache to the storage devices (348a-n); characterized in that the method further comprises: removing, by the storage controller, a first data container comprising the first cache element (352a-n) from a destage stream, the destage stream comprising only full data containers, a full data container comprising all of the dirty or valid cache elements in a stripe (404, 408, 412, 416) of a RAID group; transferring, by the storage controller, the first data container from the write cache to the storage devices (348a-n); incrementing, by the storage controller, an active destage count, wherein the active destage count is a current number of host write requests issued to a virtual disk that have not yet been completed, wherein the virtual disk is the RAID group comprising one or more specific storage devices (348a-n); and repeating determining, calculating, identifying, removing, transferring, and incrementing, by the storage controller, if the active destage count is less than an active destage count maximum value; removing, by the storage controller, a first data container comprising the first cache element (352a-n) from a destage stream, the destage stream comprising only full data containers, a full data container comprising all of the dirty or valid cache elements in a stripe (404, 408, 412, 416) of a RAID group; transferring, by the storage controller, the first data container from the write cache to the storage devices (348a-n); incrementing, by the storage controller, an active destage count, wherein the active destage count is a current number of host write requests issued to a virtual disk that have not yet been completed, wherein the virtual disk is the RAID group comprising one or more specific storage devices (348a-n); and repeating determining, calculating, identifying, removing, transferring, and incrementing, by the storage controller, if the active destage count is less than an active destage count maximum value; wherein the destage stream and the first data container correspond to the virtual disk; wherein the storage controller concatenates a plurality of full data containers to create the first data container if the full data containers of the plurality of full data containers are adjacent in terms of logical block addresses, when performing said step of identifying the first cache element as a better cache element to destage.