Patent ID: 8321639

Claim:
A method of tracking and processing commands received by a storage device, the method comprising: determining one or more requested logical block addresses (LBAs) of a received command, including a starting LBA and a length of one or more LBAs of the received command; determining whether command reordering is restricted; and if command reordering is not restricted: processing the received commands; otherwise, if command reordering is restricted: conflict checking each received command by: checking one or more small command tracking structures for one or more active small commands in conflict with the received command; and checking one or more large command tracking structures for one or more active large commands in conflict with the received command; if no conflict is detected: tracking and processing the received command by: determining whether the received command is (i) an exclusive command requesting exclusive access to the requested LBAs or ii a non-exclusive command requesting non-exclusive access to the requested LBAs; for each exclusive command having a length less than or equal to a predetermined size: allocating, if appropriate, at least one tracking entry in the one or more small command tracking structures; and updating fields of the at least one allocated tracking entry, wherein the updated fields correspond to the requested LBAs; otherwise, for each exclusive command with length greater than the predetermined size: allocating a tracking entry in an exclusive large command tracking structure; and updating the tracking entry with the starting LBA and length of the received command; otherwise, if a conflict is detected: queuing the received command in a general command queue of the storage device.