1. A method of performing a storage operation in a storage device including a non-volatile memory that is controlled by a storage device controller and that provides storage for a processor in a host device, the method comprising: receiving a storage command from the processor at the storage device controller; in the storage device controller, performing the storage operation to implement the storage command in the non-volatile memory; in the storage device controller, collecting host device data describing a current status of the host device that affects the duration of the storage operation associated with the storage command implemented by the storage device controller and storage device data describing a current status of the storage device; wherein the storage device controller is configured to operate in at least two operational modes; in the first operational mode; in the storage device controller, estimating a storage operation completion time of the storage operation based at least upon the collected data; and in the storage device controller, sending the estimated storage operation completion time to the processor wherein said estimating of the storage operation completion time is completed and sent to the processor prior to performing the storage operation to implement the storage command; in the second operational mode; in the storage device controller, estimating the storage operation completion time of the storage operation based at least upon the collected data; and in the storage device controller, sending the estimated storage operation completion time to the processor wherein said estimating of the storage operation completion time is completed and sent to the processor while the storage operation to implement the storage command is performed but prior to the completion of the storage operation.