Host-Initiated Read Ahead on Logical Devices
AssigneeAvago Technologies International Sales Pte. Limited
InventorArun Prakash Jana
Life of this patent
Estimating the term…
Abstract
Solutions for providing host-initiated read ahead caching on a virtual disk. In some implementations, the virtual disk might be part of a RAID environment. Some solutions expose to a host operating system the read ahead functionality of the virtual disk and allow the host to request prefetching of data from the virtual disk.
Claims20
A redundant array of independent disks (RAID) controller to manage a virtual disk comprising one or more spans, each span comprising one or more arms, each arm corresponding a different physical disk, the RAID controller comprising hardware circuitry and firmware:
- the hardware circuitry configured to:
- expose to an operating system of a host computer in communication with the RAID controller at least a portion of a small computer system interface (SCSI) block limits vital product data (VPD) page, the block limits VPD page comprising a maximum prefetch length field indicating that the virtual disk supports read ahead operations;
- receive from the operating system of the host device a prefetch command, the prefetch command comprising a requested SCSI input-output operation (IO) and a SCSI IO immediate prefetch flag indicating whether RAID controller should prefetch the data specified by the SCSI IO immediately;
- generate an accelerated IO (ACIO) from the SCSI IO, the ACIO including a read ahead operation code (OPCODE);
- unset a firmware IO flag in the ACIO to indicate that the ACIO is hardware generated;
- if the SCSI IO immediate prefetch flag in the SCSI IO is set:
- determine that the SCSI IO immediate prefetch flag in the SCSI IO is set;
- and
- set an ACIO immediate prefetch flag in the ACIO, based at least in part on the SCSI IO immediate prefetch flag;
- send the ACIO to the firmware based at least in part on determining that the SCSI immediate prefetch flag is set in the SCSI IO;
- send the ACIO for execution on the virtual disk;
- read from the virtual disk the data requested by the SCSI IO;
- cache the data requested by the SCSI IO in a read ahead cache;
- and
- send a cache completion message to the firmware, the cache completion message comprising the ACIO and indicating the data requested by the SCSI IO has been cached;
- and
- the firmware configured to:
- if the immediate prefetch bit in the SCSI IO is set:
- receive the ACIO;
- identify the ACIO as hardware generated, based at least in part on the unset firmware IO flag;
- determine that the immediate prefetch flag is set in the SCSI IO;
- and
- send an immediate completion message indicating that the requested data will be cached, based at least in part on a determination that the immediate prefetch flag is set in the SCSI IO;
- if the immediate prefetch flag in the SCSI IO is not set:
- receive the cache completion message;
- identify the ACIO as hardware generated, based at least in part on the unset firmware IO flag;
- and
- send a prefetch completion message indicating that the requested data has been cached, based at least in part on identification of the ACIO as hardware generated.
A device comprising:
- logic to manage a virtual disk comprising one or more spans, each span comprising one or more arms, each arm corresponding a different physical disk;
- logic to expose a application programming interface (API) indicating that the virtual disk supports read ahead operations;
- logic to receive a prefetch command, the prefetch command comprising a requested SCSI input-output operation (IO);
- logic to send a completion message in response to the prefetch command, the completion message indicating a status of the SCSI IO.
A method, comprising:
- managing a virtual disk comprising one or more spans, each span comprising one or more arms, each arm corresponding a different physical disk;
- exposing a small computer system interface application programming interface (API) indicating that the virtual disk supports read ahead operations indicating that the virtual disk supports read ahead operations;
- receiving a prefetch command, the prefetch command comprising a requested SCSI input-output operation (IO);
- reading from the virtual disk the data requested by the SCSI IO;
- caching the data requested by the SCSI IO in a read ahead cache;
- and
- sending a completion message indicating that the requested data has been cached.
Dependencies are inferred from the claim text.