A method for processing IO requests in order by a storage device , the method comprising: receiving a first I/O command and a second I/O command, the first I/O command and the second I/O command being assigned a sequence tag; issuing the first I/O command and the second I/O command to one or more storage channels based on their respective sequence tags; collecting a command completion notice of the first I/O command or the second I/O command when the first I/O command or the second I/O command has been respectively completed; and issuing a command completion notification to a host based on the sequence tag of the associated completed first I/O command or second I/O command, characterized in that : the issuing of the command completion notification to the host comprises: determining if the sequence tag associated with a completed I/O command is the lowest sequence tag of all of the sequence tags associated with I/O commands awaiting processing, based on determining that the sequence tag of the completed I/O command is the sequence tag of the lowest outstanding I/O command, issuing to the host all command completion notifications for completed I/O commands having sequence tags that are sequential to the determined lowest sequence tag, including the completed I/O command having the lowest sequence tag, and based on determining that the sequence tag of the completed I/O command is not the sequence tag of the lowest outstanding I/O command, placing the command completion notice in a buffer. receiving a first I/O command and a second I/O command, the first I/O command and the second I/O command being assigned a sequence tag; issuing the first I/O command and the second I/O command to one or more storage channels based on their respective sequence tags; collecting a command completion notice of the first I/O command or the second I/O command when the first I/O command or the second I/O command has been respectively completed; and issuing a command completion notification to a host based on the sequence tag of the associated completed first I/O command or second I/O command, characterized in that : the issuing of the command completion notification to the host comprises: determining if the sequence tag associated with a completed I/O command is the lowest sequence tag of all of the sequence tags associated with I/O commands awaiting processing, based on determining that the sequence tag of the completed I/O command is the sequence tag of the lowest outstanding I/O command, issuing to the host all command completion notifications for completed I/O commands having sequence tags that are sequential to the determined lowest sequence tag, including the completed I/O command having the lowest sequence tag, and based on determining that the sequence tag of the completed I/O command is not the sequence tag of the lowest outstanding I/O command, placing the command completion notice in a buffer. determining if the sequence tag associated with a completed I/O command is the lowest sequence tag of all of the sequence tags associated with I/O commands awaiting processing, based on determining that the sequence tag of the completed I/O command is the sequence tag of the lowest outstanding I/O command, issuing to the host all command completion notifications for completed I/O commands having sequence tags that are sequential to the determined lowest sequence tag, including the completed I/O command having the lowest sequence tag, and based on determining that the sequence tag of the completed I/O command is not the sequence tag of the lowest outstanding I/O command, placing the command completion notice in a buffer. <EOS>