US 8,554,963 B1
Storage system with multicast DMA and unified address space
Michael W. Shapiro, San Francisco, Calif. (US); Jeffrey S. Bonwick, Los Altos, Calif. (US); and William H. Moore, Fremont, Calif. (US)
Assigned to DSSD, Inc., Menlo Park, Calif. (US)
Filed by Michael W. Shapiro, San Francisco, Calif. (US); Jeffrey S. Bonwick, Los Altos, Calif. (US); and William H. Moore, Fremont, Calif. (US)
Filed on Mar. 23, 2012, as Appl. No. 13/428,705.
Int. Cl. G06F 13/28 (2006.01); G06F 3/00 (2006.01); G06F 15/167 (2006.01)
U.S. Cl. 710—23  [710/3; 710/22; 710/26; 709/203; 709/213; 709/216; 711/4; 711/5; 711/104] 21 Claims
OG exemplary drawing
 
1. A method for writing data, comprising:
receiving, from a client, a request to write data, wherein the data is located in client memory;
making a first determination to store a first copy of the data in a first persistent storage in a first storage module and to store a second copy of the data in a second persistent storage in a second storage module;
based on the first determination selecting, by a storage appliance, a first location in a first memory to write the first copy of the data, a second location in a second memory to write the second copy of the data, wherein the first memory is located in the first storage module and the second memory is located in the second storage module, wherein the storage appliance comprises the first storage module and the second storage module;
programming a direct memory access (DMA) engine to read the data from the client memory and issue a first write request to a multicast address, wherein the first location, the second location, and a third location are associated with the multicast address;
after programming:
receiving, from the DMA engine, the first request at a switch in a switch fabric in the storage appliance;
in response to receiving the first request, generating, in the switch, a second request to write the first copy to the first location, a third request to write the second copy to the second location, and a fourth request to write the third copy to the third location, wherein the third location is in a third memory in a control module in the storage appliance;
wherein the first copy of the data is written to the first location in response to the second request;
wherein the second copy of the data is written to the second location in response to the third request;
wherein the third copy of the data is written to the third location in response to the fourth request;
wherein the DMA engine reads the data from the client memory;
wherein the first memory, the second memory, the third memory, and, at least a portion of the client memory are part of a storage fabric accessible by a unified address space.