A method and apparatus for manipulating data in a storage device that is
coupled to a host computer. Manipulations that can be performed by the
storage device include moving non-contiguous blocks of data between the
host computer and the storage device in a single operation. Other
manipulations can be performed directly by the storage device without
passing data to or from the host computer and include copying data from
one logical object that is defined on the host computer to another,
initializing, backing-up, transforming, or securely deleting a logical
object that is defined by the host computer with a single command. In one
embodiment, an application programming interface is provided that allows
a relationship between logical objects on a host computer and storage
locations on a storage device to be communicated between the host
computer and the storage device. By providing the storage device with
knowledge of the relationship between a logical object and the storage
locations corresponding to that logical object, data corresponding to the
logical object can be manipulated directly by the storage device, rather
than by the host computer. In another embodiment, a is graphical
visualization routine is provided that displays the global mapping of a
logical object to a set of physical blocks on the storage device for each
layer of mapping below the logical object.