An apparatus, comprising: a command queue ; means for generating and adding to the command queue a piece-wise erase command to perform a portion of a block erase operation with respect to a block of pages stored in a non-volatile memory ; means for receiving a read or write command with respect to a page after adding the piece-wise erase command in the command queue and means for adding said read or write command in the command queue; means for determining that the block erase operation did not complete after executing the piece-wise erase command; means for determining, in response to determining that the block erase operation did not complete and that a last received read or write command added to the command queue is a write command, whether a number of write commands that have been queued in the command queue, since the piece-wise erase command has been added to the command queue, exceeds a pre-determined maximum number; means for adding to the command queue an additional instance of the piece-wise erase command to perform an additional portion of the block erase operation in response to determining that the number of write commands exceeds the pre-determined maximum number; and means for receiving and adding to the command queue a further read or write command: in response to the last received read or write command added to the command queue being a read command and, when the last received read or write command added to the command queue is a write command, in response to determining that the number of write commands does not exceed the predetermined maximum number. a command queue ; means for generating and adding to the command queue a piece-wise erase command to perform a portion of a block erase operation with respect to a block of pages stored in a non-volatile memory ; means for receiving a read or write command with respect to a page after adding the piece-wise erase command in the command queue and means for adding said read or write command in the command queue; means for determining that the block erase operation did not complete after executing the piece-wise erase command; means for determining, in response to determining that the block erase operation did not complete and that a last received read or write command added to the command queue is a write command, whether a number of write commands that have been queued in the command queue, since the piece-wise erase command has been added to the command queue, exceeds a pre-determined maximum number; means for adding to the command queue an additional instance of the piece-wise erase command to perform an additional portion of the block erase operation in response to determining that the number of write commands exceeds the pre-determined maximum number; and means for receiving and adding to the command queue a further read or write command: in response to the last received read or write command added to the command queue being a read command and, when the last received read or write command added to the command queue is a write command, in response to determining that the number of write commands does not exceed the predetermined maximum number. in response to the last received read or write command added to the command queue being a read command and, when the last received read or write command added to the command queue is a write command, in response to determining that the number of write commands does not exceed the predetermined maximum number. <EOS>