| CPC G06F 12/123 (2013.01) [G06F 12/0802 (2013.01); G06F 2212/7201 (2013.01)] | 14 Claims |

|
1. A method comprising:
receiving a request to write first data to a persistent storage device, the request comprising a first logical block addressing (LBA) value;
writing the first data to a first cache line of a cache;
updating a mapping between the first LBA value and the first cache line;
receiving a subsequent request to write second data to the persistent storage device, the subsequent request comprising the first LBA value;
determining that the first LBA value exists in the mapping;
determining a dirty cache line corresponding to the first LBA value;
updating the corresponding dirty cache line to the second data of the subsequent request;
pushing the corresponding dirty cache line onto an end of a least recently used (LRU) queue of cache lines, wherein the LRU queue maintains an order in which respective cache lines were written to the LRU queue without retaining an age of each of the cache lines;
reporting the second data as having been written to the persistent storage device;
determining that third data is to be evicted from the cache;
evicting the third data from the cache;
popping a second cache line from a head of the LRU queue;
attempting to write the third data at the second cache line to the persistent storage device; and
if the write of the third data at the second cache line to the persistent storage device fails, adding the second cache line back to the head of the LRU queue for a re-attempt at eviction.
|