Patents by Inventor Jeffrey S. Bonwick

Jeffrey S. Bonwick has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • 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: 8635190
    Abstract: A computer readable medium includes executable instructions for resilvering a hierarchical block tree in a storage pool. Resilvering the hierarchical block tree involves traversing a branch of the hierarchical block tree only if a birth time of a parent block of the branch is greater than or equal to a lowest birth time on a dirty time log (DTL). Resilvering the hierarchical block tree further involves resilvering a child block in the branch only if the DTL comprises a birth time of the child block.
    Type: Grant
    Filed: April 19, 2006
    Date of Patent: January 21, 2014
    Assignee: Oracle America, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • 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
  • 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: 8549051
    Abstract: The invention relates to a system that includes a file system configured to create a snapshot of a hierarchical block tree (HBT) and a storage pool. After the snapshot has been created, the storage pool includes a snapshot, where the snapshot includes a copy of a first version of a root block and the HBT, where the HBT includes a second version of the root block. Further, the copy of the first version of the root block is created prior to overwriting the first version of the root block with the second version of the root block, the second version of the root block comprises references to a first block and a second block, and the copy of the first version of the root block comprises a reference to the first block and no reference to the second block.
    Type: Grant
    Filed: August 31, 2006
    Date of Patent: October 1, 2013
    Assignee: Oracle America, Inc.
    Inventors: Matthew A. Ahrens, Mark J. Maybee, Jeffrey S. Bonwick
  • 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
  • Patent number: 8495010
    Abstract: A method for writing a data block to a storage pool. The method including receiving a write operation for a block, determining whether the block comprises metadata, and if the block comprises metadata: determining a first replication type for the block, and writing the block to the storage pool in accordance with the first replication type. If the block does not comprise metadata: determining a second replication type for the block and writing the block to the storage pool in accordance with the second replication type.
    Type: Grant
    Filed: April 19, 2006
    Date of Patent: July 23, 2013
    Assignee: Oracle America, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 8464095
    Abstract: In general, embodiments of the invention relate to storing data by receiving a request to write data, in response the request, selecting a first RAID grid location in a RAID grid to write the data, determining a first physical address in persistent storage corresponding to the first RAID grid location, generating a first page comprising the data and first out-of-band (OOB), wherein the first OOB comprises a first grid geometry for the RAID grid, and a first stripe membership for the page within the RAID grid, and writing the first page to a first physical location in persistent storage corresponding to the first physical address.
    Type: Grant
    Filed: November 15, 2012
    Date of Patent: June 11, 2013
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 8448021
    Abstract: A method for storing data. The method including receiving a request to write data. In response the request, selecting, a RAID grid location in a RAID grid to write the data, writing the data to memory, updating a data structure to indicate that the RAID grid location is filled. The method further includes determining, using the data structure, whether a data grid in the RAID grid is filled, where the RAID grid location is in the data grid and based on a determination that the data grid is filled: calculating parity values for the RAID grid using the data, determining a physical address in persistent storage corresponding to the RAID grid location, writing the data to a physical location in persistent storage corresponding to the physical address, and writing the parity values to the persistent storage.
    Type: Grant
    Filed: October 23, 2012
    Date of Patent: May 21, 2013
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 8407377
    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: July 23, 2012
    Date of Patent: March 26, 2013
    Assignee: DSSD, Inc.
    Inventors: Michael W. Shapiro, Jeffrey S. Bonwick, William H. Moore
  • Patent number: 8392428
    Abstract: A method for writing data to persistent storage. The method include receiving a first write request including a key and a value, hashing the key to obtain a hashed key, obtaining a hash table depth (d), obtaining d bits from the hashed key, and making a first determination that a hash frag associated with the d bits from the hashed key exists. In response to the first determination, obtaining the hash frag, making a second determination that there is available space to store a hash frag entry in the hash frag, storing the hash frag entry in the hash frag to obtain an updated hash frag, where the hash frag entry includes the hashed key and value information for the value, and storing the updated hash frag in the persistent storage.
    Type: Grant
    Filed: September 12, 2012
    Date of Patent: March 5, 2013
    Assignee: DSSD, Inc.
    Inventors: Jeffrey S. Bonwick, Nils Nieuwejaar
  • Patent number: 8370567
    Abstract: A method for storing data, including receiving a request to write a first datum defined using a first object ID and a first offset ID to persistent storage. The method further including determining a first physical address in the persistent storage, where the first physical address comprises a first block ID and first sub block ID. The method further includes writing the first datum to the first physical address, generating a first table of contents entry (TE) comprising the first object ID, the first offset ID, and the first sub block ID, and writing the first TE to a second physical address in the persistent storage, where the second physical address comprises the first block ID and a second sub block ID corresponding to the second sub block ID, and where the second sub block is located within a first block corresponding to the first block ID.
    Type: Grant
    Filed: March 23, 2012
    Date of Patent: February 5, 2013
    Assignee: DSSD, Inc.
    Inventors: Jeffrey S. Bonwick, Michael W. Shapiro
  • Patent number: 8341342
    Abstract: A method for storing data including receiving a request to write data and in response the request, selecting a RAID grid location in a RAID grid to write the data. The method further includes writing the data to memory, updating a data structure to indicate that the RAID grid location is filled, identifying a parity value in the RAID grid to update, where the parity value is associated with a second RAID grid location in the RAID grid, updating the parity value using the data and the parity value to obtain an updated parity value and storing the updated parity value in the memory. Prior to the first data grid being filled determining a physical address in persistent storage corresponding to the RAID grid location and writing the data to the first physical address.
    Type: Grant
    Filed: March 23, 2012
    Date of Patent: December 25, 2012
    Assignee: DSSD, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore
  • Patent number: 8327185
    Abstract: A method for storing data. The method including receiving a request to write data. In response the request, selecting, a grid location in a grid to write the data, writing the data to memory, updating a data structure to indicate that the grid location is filled. The method further includes determining, using the data structure, whether a data grid in the grid is filled, where the grid location is in the data grid and based on a determination that the data grid is filled: calculating parity values for the grid using the data, determining a physical address in persistent storage corresponding to the grid location, writing the data to a physical location in persistent storage corresponding to the physical address, and writing the parity values to the persistent storage.
    Type: Grant
    Filed: March 23, 2012
    Date of Patent: December 4, 2012
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 8316260
    Abstract: A method for storing data. The method including receiving a request to write data. In response the request, selecting, a RAID grid location in a RAID grid to write the data, writing the data to memory, updating a data structure to indicate that the RAID grid location is filled. The method further includes determining, using the data structure, whether a data grid in the RAID grid is filled, where the RAID grid location is in the data grid and based on a determination that the data grid is filled: calculating parity values for the RAID grid using the data, determining a physical address in persistent storage corresponding to the RAID grid location, writing the data to a physical location in persistent storage corresponding to the physical address, and writing the parity values to the persistent storage.
    Type: Grant
    Filed: July 23, 2012
    Date of Patent: November 20, 2012
    Assignee: DSSD, Inc.
    Inventor: Jeffrey S. Bonwick
  • Patent number: 8301832
    Abstract: A method for writing data to persistent storage. The method includes receiving a first request to write a first datum to persistent storage including NAND dies, identifying a first NAND die in which to write a first copy of the first datum and a second NAND die in which to write a second copy, generating a second request to write the first copy of the first datum to the first NAND die and a third request to write the second copy to the second NAND die, and waiting until the first NAND die and second NAND die not are busy. Based on a determination that the first NAND die and the second NAND die are not busy: issuing the second request to the first NAND die, and issuing the third request to the second NAND die after the second request is complete.
    Type: Grant
    Filed: March 23, 2012
    Date of Patent: October 30, 2012
    Assignee: DSSD, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Patent number: 8244935
    Abstract: A computer readable storage medium comprising software instructions, which when executed by a processor, perform a method, the method including obtaining a first non-optional Input/Output (I/O) request from an I/O queue, determining that a second non-optional I/O request and an optional I/O request are adjacent to the first non-optional I/O request, generating a new data payload using a first data payload from the first non-optional I/O request, a second data payload for the second non-optional I/O request, and a third data payload corresponding to the optional I/O request, wherein the third data payload is interposed between the first data payload and the second data payload, generating a new non-optional I/O request comprising the new data payload, and issuing the new non-optional I/O request to a storage pool, wherein the new data payload is written to a contiguous storage location in the storage pool.
    Type: Grant
    Filed: June 25, 2010
    Date of Patent: August 14, 2012
    Assignee: Oracle International Corporation
    Inventors: Adam H. Leventhal, Jeffrey S. Bonwick
  • Publication number: 20110320649
    Abstract: A computer readable storage medium comprising software instructions, which when executed by a processor, perform a method, the method including obtaining a first non-optional Input/Output (I/O) request from an I/O queue, determining that a second non-optional I/O request and an optional I/O request are adjacent to the first non-optional I/O request, generating a new data payload using a first data payload from the first non-optional I/O request, a second data payload for the second non-optional I/O request, and a third data payload corresponding to the optional I/O request, wherein the third data payload is interposed between the first data payload and the second data payload, generating a new non-optional I/O request comprising the new data payload, and issuing the new non-optional I/O request to a storage pool, wherein the new data payload is written to a contiguous storage location in the storage pool.
    Type: Application
    Filed: June 25, 2010
    Publication date: December 29, 2011
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Adam H. Leventhal, Jeffrey S. Bonwick
  • Patent number: 8069156
    Abstract: A computer readable medium including executable instructions for resilvering a hierarchical block tree in a storage pool. Resilvering the hierarchical block tree involves determining that a birth time of a parent block of a branch is greater than or equal to a lowest birth time on a dirty time log (DTL) and selectively traversing child indirect blocks in the branch to obtain a child data block, where each of the child indirect blocks includes a block pointer, a data checksum, and a birth time for a referenced block, where the birth time of each of the child indirect blocks is no greater than the birth time of the parent block. Resilvering the hierarchical block tree further involves resilvering the child data block when the DTL includes a birth time of the child data block, where one of the child indirect blocks includes the birth time of the child data block.
    Type: Grant
    Filed: February 17, 2010
    Date of Patent: November 29, 2011
    Assignee: Oracle America, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • Publication number: 20110283113
    Abstract: A processing device may generate a data encryption key configured to encrypt unique data within a clone of an encrypted data set and associated with a set of transaction identifiers of a transaction based file system. The processing device may further wrap the data encryption key with a wrapping key, create a cloned encrypted data set with the data encryption key, and store the wrapped data encryption key with the cloned encrypted data set indexed by at least one of the set of transaction identifiers.
    Type: Application
    Filed: May 14, 2010
    Publication date: November 17, 2011
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Darren J. Moffat, Jeffrey S. Bonwick, William H. Moore, Matthew A. Ahrens, Mark J. Maybee, George Wilson, Neil V. Perrin