Patents Assigned to DSSD, Inc.
  • Patent number: 9460039
    Abstract: A PCIe Fabric that includes an IO tier switch, hub tier switches, and a target device connected to one of the hub tier switches. The IO tier switch is configured to receive a TLP from a client, make a determination that an address in the TLP is not associated with any multicast address range in the first IO tier switch and is not associated with any downstream port in the first IO tier switch, and, based on the determinations, route the TLP to the first hub tier switch via a upstream port on the IO tier switch. The hub tier switch is configured to make a determination that the TLP is associated with a multicast group, and, based on the determination, generate a rewritten TLP and route the rewritten TLP to a target device via a downstream port on the hub tier switch.
    Type: Grant
    Filed: March 5, 2015
    Date of Patent: October 4, 2016
    Assignee: DSSD, Inc.
    Inventor: Jeffrey Benjamin Davis
  • Patent number: 9367396
    Abstract: A method and system for service-aware parity placement in a storage system, including after receiving the service notification specifying a target SD: writing a RAID stripe to the persistent storage, where the parity block of the RAID stripe is stored on the target SD and none of the data blocks in the RAID stripe are stored on the target SD. The method further includes performing a modified garbage collection operation that includes identifying a live RAID stripe in the persistent storage, writing a new RAID stripe to a new location in the persistent storage, where the new RAID stripe includes a copy of at least a portion of data from the live RAID stripe and a parity block in the new RAID stripe is stored on the target SD, and issuing a removal notification when the modified garbage collection operation is completed.
    Type: Grant
    Filed: December 19, 2014
    Date of Patent: June 14, 2016
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 9363317
    Abstract: A method for writing data to a storage pool. The method includes receiving a virtual identifier (ID) and an offset for an object, extracting a node identifier (ID) that identifies a first storage server in the storage pool from the virtual ID, obtaining an object layout (OL) for the object from the first storage server, hashing an object ID and an offset ID to obtain a hashed value, where the virtual ID comprises the object ID and where the as offset ID is generated from the offset, identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the hashed value hashed value, and issuing a write request to write data to the object in the second storage server, where the write request comprises the object ID and the offset.
    Type: Grant
    Filed: October 24, 2013
    Date of Patent: June 7, 2016
    Assignee: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Publication number: 20160011988
    Abstract: A method including creating a transaction object for a transaction identified by a TOI and associated with an object identified by an OID, storing a TE and a MD frag for the transaction object, receiving a write request to write data to the transaction object, storing second TE including a TOI and offset and a data frag including the data, storing an entry including a hash value and a physical address of the data frag, and receiving a commit request to commit the transaction. In response to the commit request storing a third TE and a second MD frag for the transaction object, where the second MD frag identifies the object and specifies that the transaction is committed and updating a second entry including a second hash value and a second physical address for a second data frag to replace the second physical address with the physical address.
    Type: Application
    Filed: February 25, 2014
    Publication date: January 14, 2016
    Applicant: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Publication number: 20150304422
    Abstract: A method for writing data to a storage pool. The method includes receiving a virtual identifier (ID) and an offset for an object, extracting a node identifier (ID) that identifies a first storage server in the storage pool from the virtual ID, obtaining an object layout (OL) for the object from the first storage server, hashing an object ID and an offset ID to obtain a hashed value, where the virtual ID comprises the object ID and where the as offset ID is generated from the offset, identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the hashed value hashed value, and issuing a write request to write data to the object in the second storage server, where the write request comprises the object ID and the offset.
    Type: Application
    Filed: October 24, 2013
    Publication date: October 22, 2015
    Applicant: DSSD, INC.
    Inventor: Michael W. Shapiro
  • Patent number: 9152499
    Abstract: A method for calculating parity values including calculating a first set of parity values using datum stored in RAID Grid locations in a first PCB, where datum associated with the RAID Grid locations in the first PCB is obtained in a first order that is based on a Hilbert curve. The method further includes calculating a second set of parity values using datum stored in RAID Grid locations in a second PCB, where datum associated with the RAID Grid locations in the second PCB is obtained in a second order that is based on the Hilbert curve. The method further includes storing at least a portion of the first set of parity values and a second set of parity values in a cache, memory, or persistent storage, where each of the first parity values and second parity values is associated with a separate RAID Grid location in the RAID Grid.
    Type: Grant
    Filed: October 9, 2014
    Date of Patent: October 6, 2015
    Assignee: DSSD, Inc.
    Inventors: Todor Ivanov Mollov, Jeffrey S. Bonwick
  • Publication number: 20150205667
    Abstract: A method and system for service-aware data placement. The method includes receiving a service notification specifying a target SD and, after receiving the service notification, receiving a request to write data, writing a RAID stripe that includes data blocks and a parity block, where the parity block is not stored on the target SD and none of the data blocks is stored on the target SD. The method further includes performing a modified garbage collection operation that includes identifying a live RAID stripe with includes N data blocks, writing a new RAID stripe that includes N?1 data blocks and a second parity block, where the second parity block and none of the N?1 data blocks is stored on the target SD, and issuing a removal notification that indicates that the target SD may be removed.
    Type: Application
    Filed: January 23, 2014
    Publication date: July 23, 2015
    Applicant: DSSD, INC.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 9015353
    Abstract: A method including intercepting a OFR for a file issued by an application to a FS, forwarding the OFR to the FS, receiving from the FS a FD for the file, issuing a SR for the file to the FS. The further method includes receiving from the FS status information for a target device on which the file is located, where the status information includes an OID for the file, storing a mapping of FD to the OID, intercepting a first FOR for the file, making a determination the that the first FOR is one of a read request and a write request, based on the determination, making another determination that the target device supports the direct I/O protocol, and issuing a DI request to the target device using the OID for the file, where the DI request is not processed by the FS.
    Type: Grant
    Filed: March 14, 2013
    Date of Patent: April 21, 2015
    Assignee: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Patent number: 9003090
    Abstract: A PCIe Fabric that includes an IO tier switch, hub tier switches, and a target device connected to one of the hub tier switches. The IO tier switch is configured to receive a TLP from a client, make a determination that an address in the TLP is not associated with any multicast address range in the first IO tier switch and is not associated with any downstream port in the first IO tier switch, and, based on the determinations, route the TLP to the first hub tier switch via a upstream port on the IO tier switch. The hub tier switch is configured to make a determination that the TLP is associated with a multicast group, and, based on the determination, generate a rewritten TLP and route the rewritten TLP to a target device via a downstream port on the hub tier switch.
    Type: Grant
    Filed: March 25, 2014
    Date of Patent: April 7, 2015
    Assignee: DSSD, Inc.
    Inventor: Jeffrey Benjamin Davis
  • Patent number: 8949692
    Abstract: A method and system for service-aware parity placement in a storage system, including after receiving the service notification specifying a target SD: writing a RAID stripe to the persistent storage, where the parity block of the RAID stripe is stored on the target SD and none of the data blocks in the RAID stripe are stored on the target SD. The method further includes performing a modified garbage collection operation that includes identifying a live RAID stripe in the persistent storage, writing a new RAID stripe to a new location in the persistent storage, where the new RAID stripe includes a copy of at least a portion of data from the live RAID stripe and a parity block in the new RAID stripe is stored on the target SD, and issuing a removal notification when the modified garbage collection operation is completed.
    Type: Grant
    Filed: January 23, 2014
    Date of Patent: February 3, 2015
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 8924776
    Abstract: A method for calculating parity values including calculating a first set of parity values using datum stored in RAID Grid locations in a first PCB, where datum associated with the RAID Grid locations in the first PCB is obtained in a first order that is based on a Hilbert curve. The method further includes calculating a second set of parity values using datum stored in RAID Grid locations in a second PCB, where datum associated with the RAID Grid locations in the second PCB is obtained in a second order that is based on the Hilbert curve. The method further includes storing at least a portion of the first set of parity values and a second set of parity values in a cache, memory, or persistent storage, where each of the first parity values and second parity values is associated with a separate RAID Grid location in the RAID Grid.
    Type: Grant
    Filed: December 4, 2013
    Date of Patent: December 30, 2014
    Assignee: DSSD, Inc.
    Inventors: Todor Ivanov Mollov, Jeffrey S. Bonwick
  • Patent number: 8819304
    Abstract: A system and method for clients, a control module, and storage modules to participate in a unifed address space in order to and read and write data efficiently using direct-memory access. The method for reading data includes determining a first location in a first memory to write a first copy of the data, a second location in a second memory to write a second copy of the data, where the first memory is located in a first storage module including a first persistent storage and the second memory is located in a second storage module including a second persistent storage. The method further includes programming a direct memory access engine to read the data from the client memory and issue a first write request to a multicast address, where the first location, the second location, and a third location are associated with the multicast address.
    Type: Grant
    Filed: September 30, 2013
    Date of Patent: August 26, 2014
    Assignee: DSSD, Inc.
    Inventors: Michael W. Shapiro, Jeffrey S. Bonwick, William H. Moore
  • Publication number: 20140032697
    Abstract: A system and method for clients, a control module, and storage modules to participate in a unifed address space in order to and read and write data efficiently using direct-memory access. The method for reading data includes determining a first location in a first memory to write a first copy of the data, a second location in a second memory to write a second copy of the data, where the first memory is located in a first storage module including a first persistent storage and the second memory is located in a second storage module including a second persistent storage. The method further includes programming a direct memory access engine to read the data from the client memory and issue a first write request to a multicast address, where the first location, the second location, and a third location are associated with the multicast address.
    Type: Application
    Filed: September 30, 2013
    Publication date: January 30, 2014
    Applicant: DSSD, INC.
    Inventors: Michael W. Shapiro, Jeffrey S. Bonwick, William H. Moore
  • Patent number: 8601206
    Abstract: A method including creating a transaction object for a transaction identified by a TOI and associated with an object identified by an OID, storing a TE and a MD frag for the transaction object, receiving a write request to write data to the transaction object, storing second TE including a TOI and offset and a data frag including the data, storing an entry including a hash value and a physical address of the data frag, and receiving a commit request to commit the transaction. In response to the commit request storing a third TE and a second MD frag for the transaction object, where the second MD frag identifies the object and specifies that the transaction is committed and updating a second entry including a second hash value and a second physical address for a second data frag to replace the second physical address with the physical address.
    Type: Grant
    Filed: March 14, 2013
    Date of Patent: December 3, 2013
    Assignee: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Patent number: 8595385
    Abstract: In general, the invention relates to a method for writing data to server submission queues in a storage controller. The method includes receiving an I/O request, where the I/O request includes a command, where the I/O request is associated with a vSQ, and where the vSQ appears to the client as a set of memory locations in memory operatively connected to a storage controller. The method further includes obtaining a vSQ ID associated with the vSQ, identifying a sSQ based on the vSQ and a vSQ-to-sSQ mapping, generating a submission queue entry comprising the command and the vSQ ID, and sending the submission queue entry to the storage controller, where the sSQ is located in the memory and where the storage controller is configured to place the submission queue entry in the sSQ.
    Type: Grant
    Filed: May 28, 2013
    Date of Patent: November 26, 2013
    Assignee: DSSD, Inc.
    Inventors: Michael W. Shapiro, Todor Mollov
  • Patent number: 8589659
    Abstract: A method for writing data to a storage pool. The method includes receiving a virtual identifier (ID) and an offset for an object, extracting a node identifier (ID) that identifies a first storage server in the storage pool from the virtual ID, obtaining an object layout (OL) for the object from the first storage server, hashing an object ID and an offset ID to obtain a hashed value, where the virtual ID comprises the object ID and where the offset ID is generated from the offset, identifying a second storage server in the storage pool using a global namespace layout (GL), the OL, and the hashed value, and issuing a write request to write data to the object in the second storage server, where the write request comprises the object ID and the offset.
    Type: Grant
    Filed: November 8, 2012
    Date of Patent: November 19, 2013
    Assignee: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Patent number: 8578106
    Abstract: A method for writing data to submission queues in a storage controller including receiving an input/output (I/O) request from a client application, where the client application is associated with a virtual port and where the virtual port is associated with a physical port. The method further includes determining a size of the I/O request, identifying a queue group based on the size of the I/O request and the virtual port, where the queue group includes submission queues and is associated with the virtual port. The method further includes identifying a submission queue, sending the I/O request to a storage controller over the physical port, where the queue group is located in memory operatively connected to the storage controller and where the storage controller is configured to place the I/O request in the submission queue.
    Type: Grant
    Filed: November 9, 2012
    Date of Patent: November 5, 2013
    Assignee: DSSD, Inc.
    Inventor: Michael W. Shapiro
  • Patent number: 8554997
    Abstract: A method for storing data. The method includes receiving a request to write data, determining that the storage mode for the data is mirrored mode, selecting a Redundant Array of Independent Devices (RAID) grid location in a RAID grid to write the data based on the storage mode, writing the data to memory, updating a data structure to indicate that the RAID grid location is filled, and determining a data grid is filled. Based on the determination, determining a first physical address and a second physical address in persistent storage corresponding to the RAID grid location; writing the data to a first physical location in the persistent storage corresponding to the first physical address and writing the data to a second physical location in the persistent storage corresponding to the second physical address, and writing the parity values associated with data grid to the persistent storage.
    Type: Grant
    Filed: January 18, 2013
    Date of Patent: October 8, 2013
    Assignee: DSSD, Inc.
    Inventors: Jeffrey S. Bonwick, Michael W. Shapiro
  • Patent number: 8554963
    Abstract: A system and method for clients, a control module, and storage modules to participate in a unified address space in order to and read and write data efficiently using direct-memory access. The method for reading data includes determining a first location in a first memory to write a first copy of the data, a second location in a second memory to write a second copy of the data, where the first memory is located in a first storage module including a first persistent storage and the second memory is located in a second storage module including a second persistent storage. The method further includes programming a direct memory access engine to read the data from client memory and issue a first write request to a multicast address, where the first location, the second location, and a third location are associated with the multicast address.
    Type: Grant
    Filed: March 23, 2012
    Date of Patent: October 8, 2013
    Assignee: DSSD, Inc.
    Inventors: Michael W. Shapiro, Jeffrey S. Bonwick, William H. Moore
  • Publication number: 20130254435
    Abstract: A system and method for clients, a control module, and storage modules to participate in a unified address space in order to and read and write data efficiently using direct-memory access. The method for reading data includes determining a first location in a first memory to write a first copy of the data, a second location in a second memory to write a second copy of the data, where the first memory is located in a first storage module including a first persistent storage and the second memory is located in a second storage module including a second persistent storage. The method further includes programming a direct memory access engine to read the data from client memory and issue a first write request to a multicast address, where the first location, the second location, and a third location are associated with the multicast address.
    Type: Application
    Filed: March 23, 2012
    Publication date: September 26, 2013
    Applicant: DSSD, INC.
    Inventors: Michael W. Shapiro, Jeffrey S. Bonwick, William H. Moore