Patent ID: 8145836

Claim:
A method for emulating a block-based storage device configured to receive block-based commands while storing data in a file-based data storage device configured to receive file-level commands and comprising a file system and storage resources to store the data in accordance with the file system, the method comprising: receiving a block-based command intended for processing by an emulated block-based storage device, wherein the emulated block-based storage device is represented by a file stored in the file-based data storage device; determining whether the block-based command is a read command or a write command for accessing data stored in the emulated block-based storage device; if the block-based command is a read command or a write command: adding an entry to a command list data structure for the block-based command wherein the entry includes a unique identifier corresponding to the block-based command, translating the block-based command into at least one file-level command compatible with the file system of the file-based data storage device, transmitting the at least one file-level command to the file-based data storage device, receiving a response from the file-based data storage device including an identifying tag, comparing the identifying tag in the response from the file-based data storage device to one or more unique identifiers corresponding to one or more block-based commands in the command list data structure, dropping the response if the identifying tag does not correspond to the unique identifier of any entries in the command list data structure, if the identifying tag does correspond to the unique identifier of the entry in the command list data structure: removing the entry in the command list data structure, and providing data in the response to a requester of the block-based command; and if the block-based command is not a read command or a write command, processing the block-based command without accessing the file-based data storage device or by accessing metadata relating to attributes of the file.