Patent ID: 7523236

Claim:
A switch coupled between a plurality of host units and a device for communicating therebetween and comprising: a) a first serial advanced technology attachment (SATA) port coupled to a first host unit and including a first host task file, said first port for accessing, to the device, by the first host unit, the first host task file responsive to commands sent by the first host unit; b) a second SATA port coupled to a second host unit and including a second host task file, said second port for accessing to the device, by the second host unit, the second host task file responsive to commands sent by the second host unit; c) a third parallel ATA (PATA) port including a device task file, coupled to the device, for accessing the device, by the first or second host units, the device supports queuing of the commands sent by the first and second host units and generates an original queue depth value indicative of a number of commands that the device can queue from either of the first or second host units; and d) an arbitration and control circuit, coupled to said first host task file, said second host task file, and said device task file for selecting one of the first host or second host units to concurrently access the device, through the switch, by accepting the commands from either of the first or second host units, at any given time, including when the device is not in an idle state, the arbitration and control circuit being responsive to the original queue depth value and alters the original queue depth value to be a new queue depth value that is less than the original queue depth value so that each of the first and second host units is assigned less than the number of commands indicated by the original queue depth value but that a total number of commands queued by the first and second host units remains the same as the original queue depth value thereby misrepresenting the original queue depth value to the first and second host units to be less than the original queue death value thereby preventing the commands sent by the first and second host units from being lost by an overrun of the original queue depth value by either of the first or second host units.