A method of transferring data between a memory and a disk drive in a computer system comprising a memory and a disk subsystem, wherein the disk subsystem comprises a controller and a disk drive coupled to the controller, the method comprising the steps of:
- the controller occasionally receiving a high-level data transfer request which identifies a data transfer between noncontiguous memory addresses and noncontiguous disk sectors;
- the controller reading a contiguous block of sectors on said disk drive, wherein said contiguous block of sectors includes said noncontiguous disk sectors and disk sectors not involved in said transfer;
- the controller generating one or more high-level data transfer requests into two or more atomic transfer requests for said contiguous block of sectors, wherein said controller inserts one or more no-operation requests into said transfer requests corresponding to data read from said disk sectors not involved in said transfer, wherein said no-operation requests are interspersed with said atomic transfer requests so that said two or more atomic transfer requests and said no-operation requests form a contiguous sequence of memory addresses;
- and
- the controller executing said atomic transfer requests to transfer data from said noncontiguous disk sectors to said noncontiguous memory addresses, wherein said no-operation requests prevent said data read from said disk sectors not involved in said transfer from being transferred.