1. A method comprising: in a data storage device that includes a controller and a non-volatile memory, performing by the controller: receiving a read command from a host device, wherein the read command includes a starting logical block address (LBA) of the non-volatile memory, a number of logical blocks to read (NLB), and a pointer to a scatter gather list (SGL); instructing the non-volatile memory to read a plurality of logical blocks from the non-volatile memory based on the starting LBA and the NLB; after instructing the non-volatile memory to read the plurality of logical blocks, retrieving the SGL based on the pointer; and transferring a subset of the plurality of logical blocks identified by the SGL to the host device.