A driver for a data storage device includes an access command and a
verification command. The access command initiates an access (write,
erase or read) of the data storage device while allowing a calling
application to continue running without having to wait for the completion
of the access. The verification command queries a preceding access. If
the query indicates failure of the preceding access, the verification
command repeats the preceding access until the preceding access succeeds.
The verification command is called by the access command before the
access command initiates a new access. The verification command also is
called by an application following a sequence of related access command
calls. A write access command saves the data to be written in a memory
separate from the data storage device, in case the verification command
needs that data to repeat a failed write.