STORAGE CONTROLLER CACHE MEMORY OPERATIONS THAT FOREGO REGION LOCKING
First Claim
1. A Redundant Array of Independent Disks (RAID) storage controller comprising:
- an interface operable to receive Input/Output (I/O) requests from a host;
a Direct Memory Access (DMA) module;
a memory comprising buffer segments that store data for a logical volume, and further comprising cache entries that correlate buffer segments with Logical Block Addresses (LBAs) of the logical volume; and
a control unit operable to detect an incoming read request, to query the cache entries to identify buffer segments storing data for the read request, to generate a Scatter Gather List (SGL) indicating the identified buffer segments, and to direct the DMA module to transfer data to the host based on the SGL,wherein the control unit is further operable to detect an incoming write request that updates LBAs referenced by the read request, to update a cache entry by eliminating a reference to one of the identified buffer segments and adding a new reference to a new buffer segment, and after the cache entry has been updated, to prevent the identified buffer segment from being overwritten before the DMA module has finished reading data from the identified buffer segment.
5 Assignments
0 Petitions
Accused Products
Abstract
Methods and structure for managing cache memory for a storage controller. One exemplary embodiment a Redundant Array of Independent Disks (RAID) storage controller. The storage controller includes an interface operable to receive Input/Output (I/O) requests from a host, a Direct Memory Access (DMA) module, a memory comprising cache data for a logical volume, and a control unit. The control unit is able to generate Scatter Gather Lists (SGLs) that indicate the location of cache data for incoming read requests. Each SGL is stored in the memory, and at least one SGL points to cache data that is no longer indexed by the cache. The control unit is also able to service an incoming read request based on the SGL, by directing the DMA module to transfer the cache data that is no longer indexed to the host.
34 Citations
20 Claims
-
1. A Redundant Array of Independent Disks (RAID) storage controller comprising:
-
an interface operable to receive Input/Output (I/O) requests from a host; a Direct Memory Access (DMA) module; a memory comprising buffer segments that store data for a logical volume, and further comprising cache entries that correlate buffer segments with Logical Block Addresses (LBAs) of the logical volume; and a control unit operable to detect an incoming read request, to query the cache entries to identify buffer segments storing data for the read request, to generate a Scatter Gather List (SGL) indicating the identified buffer segments, and to direct the DMA module to transfer data to the host based on the SGL, wherein the control unit is further operable to detect an incoming write request that updates LBAs referenced by the read request, to update a cache entry by eliminating a reference to one of the identified buffer segments and adding a new reference to a new buffer segment, and after the cache entry has been updated, to prevent the identified buffer segment from being overwritten before the DMA module has finished reading data from the identified buffer segment. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for operating a Redundant Array of Independent Disks (RAID) storage controller, the method comprising:
-
receiving a read request directed to Logical Block Addresses (LBAs) of a logical volume; querying cache entries in memory that identify buffer segments in the memory which are correlated with the LBAs, wherein the buffer segments store data for the logical volume; generating a Scatter Gather List (SGL) indicating the identified buffer segments; directing a Direct Memory Access (DMA) module to transfer data to the host based on the SGL; detecting an incoming write request that updates LBAs referenced by the read request; updating a cache entry based on the write request by eliminating a reference to one of the identified buffer segments and adding a reference for a new buffer segment storing the updated LBAs; and in response to updating the cache entry, preventing the identified buffer segment from being overwritten before the DMA module has finished reading data from the identified buffer segment. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer readable medium embodying programmed instructions which, when executed by a processor, are operable for directing the processor to:
-
receive a read request directed to Logical Block Addresses (LBAs) of a logical volume; querying cache entries in memory that identify buffer segments in the memory which are correlated with the LBAs, wherein the buffer segments store data for the logical volume; generate a Scatter Gather List (SGL) indicating the identified buffer segments; direct a Direct Memory Access (DMA) module to transfer data to the host based on the SGL; detect an incoming write request that updates LBAs referenced by the read request; update a cache entry based on the write request by eliminating a reference to one of the identified buffer segments and adding a reference for a new buffer segment storing the updated LBAs; and in response to updating the cache entry, prevent the identified buffer segment from being overwritten before the DMA module has finished reading data from the identified buffer segment. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification