A method of processing read I/O requests in a computer system having applications running therein, the applications including virtual memory pages mapped to machine memory pages of a machine memory, the method comprising: maintaining a tracking data structure which indicates a first group of machine memory pages, each having at least two virtual memory pages mapped thereto, and a second group of machine memory pages, each having only one virtual memory page mapped thereto, characterised by: maintaining the tracking data structure to further include a third group of machine memory pages, each having no virtual memory pages mapped thereto, and to further indicate, for each of said machine memory pages, a corresponding location in a storage volume from which its contents were read or are being read, and a pending status flag indicating whether or not a read from the storage volume is pending, and; in response to a read request, determining using the tracking data structure that a machine memory page in the first group or the second group contains or will contain data stored in a location of the storage volume indicated in the read request, and mapping a virtual memory page associated with the read request to the machine memory page, wherein a read request issued by any of the applications is conditionally issued to the storage volume based on the tracking data structure. maintaining a tracking data structure which indicates a first group of machine memory pages, each having at least two virtual memory pages mapped thereto, and a second group of machine memory pages, each having only one virtual memory page mapped thereto, characterised by: maintaining the tracking data structure to further include a third group of machine memory pages, each having no virtual memory pages mapped thereto, and to further indicate, for each of said machine memory pages, a corresponding location in a storage volume from which its contents were read or are being read, and a pending status flag indicating whether or not a read from the storage volume is pending, and; in response to a read request, determining using the tracking data structure that a machine memory page in the first group or the second group contains or will contain data stored in a location of the storage volume indicated in the read request, and mapping a virtual memory page associated with the read request to the machine memory page, wherein a read request issued by any of the applications is conditionally issued to the storage volume based on the tracking data structure. maintaining the tracking data structure to further include a third group of machine memory pages, each having no virtual memory pages mapped thereto, and to further indicate, for each of said machine memory pages, a corresponding location in a storage volume from which its contents were read or are being read, and a pending status flag indicating whether or not a read from the storage volume is pending, and; in response to a read request, determining using the tracking data structure that a machine memory page in the first group or the second group contains or will contain data stored in a location of the storage volume indicated in the read request, and mapping a virtual memory page associated with the read request to the machine memory page, wherein a read request issued by any of the applications is conditionally issued to the storage volume based on the tracking data structure.