Pre-read assisted write coalescing for parity virtual disks
AssigneeAvago Technologies International Sales Pte. Limited
InventorsArun Prakash Jana, Amar Deep Kumar
Life of this patent
Estimating the term…
Abstract
Solutions for providing increased performance of write operations that are candidates for coalesced writes but don't end up writing an entire row of new data. In accordance with some embodiments, a controller can perform a pre-read operation early, in some cases as soon as the write request received from the host is identified as a candidate for write coalescing.
Claims20
A redundant array of independent disks (RAID) controller to manage a virtual disk (VD) that employs parity, the VD comprising one or more spans, each span comprising one or more arms, each arm corresponding a physical disk, the VD further comprising a plurality of stripes, each stripe comprising a row from each of the one or more spans, each row of a span comprising a strip from each of the one or more arms of the span, each strip comprising one or more logical blocks (LBA), the RAID controller comprising:
- a command dispatch unit (CDU) comprising:
- hardware circuitry to receive one or more host input-output operations (IO);
- hardware circuitry to identify the one or more host IOs as a candidate for a write coalescing operation;
- hardware circuitry to send a first message to initiate a pre-read of existing data from one or more rows of the VD, based on identifying the host IO as a candidate for a write coalescing operation;
- and
- hardware circuitry to fetch, subsequent to initiation of the pre-read of the existing data from the row of the VD, a plurality LBAs of data from the host;
- a cache manager, comprising:
- hardware circuitry to receive the first message;
- hardware circuitry to allocate one or more cache segments;
- hardware circuitry to re-transmit the first message;
- hardware circuitry to store, in one or more of the plurality of allocated cache segments, the plurality of LBAs received from the host;
- and
- hardware circuitry to mark as dirty the one or more cache segments storing LBAs received from the host;
- and
- a RAID manager, comprising:
- hardware circuitry to receive the re-transmitted first message;
- hardware circuitry to perform, in response to the re-transmitted first message, the pre-read of the existing data from the one or more rows of the VD in parallel with the cache manager storing the plurality of blocks received from the host in the one or more allocated cache segments;
- hardware circuitry to calculate parity data from:
- the received LBAs of data stored in the one or more dirty cache segments;
- and
- at least a portion of the data read from the virtual disk, the at least a portion of the data corresponding to each of one or more non-dirty allocated cache segments;
- and
- hardware circuitry to write to the one or more rows of the VD a set of data comprising the plurality of blocks of received data and the parity data.
A device, comprising:
- logic to manage a virtual disk (VD) employing parity, the VD comprising a plurality of stripes, each stripe comprising a row from each of a plurality of physical disks;
- logic to receive one or more host input-output operations (IO);
- logic to identify the one or more host IOs as a candidate for a write coalescing operation;
- logic to initiate a pre-read of existing data from one or more rows of the VD, based on identifying the host IO as a candidate for a write coalescing operation;
- logic to receive, subsequent to initiation of the pre-read of the existing data from the row of the VD, a plurality logical blocks (LBA) of data from the host;
- logic to perform the pre-read of the existing data from the one or more rows of the VD;
- logic to calculate parity data from the plurality of LBAs of received data and at least some of the data from the row of the VD in the buffer;
- and
- logic to write to the one or more rows of the VD a set of data comprising the plurality of blocks of received data and the parity data.
A method, comprising:
- managing a virtual disk (VD) employing parity, the VD comprising a plurality of stripes, each stripe comprising a row from each of a plurality of physical disks;
- receiving one or more host input-output operations (IO);
- identifying the one or more host IOs as a candidate for a write coalescing operation;
- initiating a pre-read of existing data from one or more rows of the virtual disk (VD), based on identifying the host IO as a candidate for a write coalescing operation;
- receiving, subsequent to initiation of the pre-read of the existing data from the row of the VD, a plurality logical blocks (LBA) of data from the host;
- performing the pre-read of the existing data from the one or more rows of the VD;
- calculating parity data from the plurality of LBAs of received data and at least some of the data from the row of the VD in the buffer;
- and
- writing to the one or more rows of the VD a set of data comprising the plurality of blocks of received data and the parity data.
Dependencies are inferred from the claim text.