1. A computer-implemented method for storing information on a data storage medium comprising: receiving a write command containing data in a data storage controller, the data storage controller including a write cache having a sequential log, the data storage controller also including an index structure indicating the location of data in the sequential log; determining if the data already exists on the log, and if not, writing the data on the log contained in the write cache at a location recorded in the index structure; if the data already exists on the log as indicated by the index structure, invalidating the data on the index structure and writing the new data on the log at an available location determined by the index structure; and determining if a migration condition exists, and if so, transferring data in the log from a plurality of write commands to the data storage medium: