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).

  • Patent number: 9600368
    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: March 31, 2016
    Date of Patent: March 21, 2017
    Assignee: EMC IP HOLDING COMPANY LLC
    Inventor: Jeffrey S. Bonwick
  • Patent number: 9600409
    Abstract: A method for managing data. The method includes receiving a first request to write data to persistent storage and in response to the first request, writing the data to a short-lived block in the persistent storage, where the data is short-lived data or data of unknown longevity. The method further includes performing a modified garbage collection operation that includes: selecting a first frag page in a first block, determining that the first frag page is live, and migrating, based on the determination that the first frag page is live, the first frag page to a long-lived block in the persistent storage, where the long-lived block is distinct from the short-lived block and wherein the long-lived block does not include any short-lived data.
    Type: Grant
    Filed: August 29, 2014
    Date of Patent: March 21, 2017
    Assignee: EMC IP HOLDING COMPANY LLC
    Inventor: Jeffrey S. Bonwick
  • Patent number: 9513994
    Abstract: A method for storing data including calculating: a first set of parity values using the data, a second set of parity values using the first set of parity values, and a third set of parity values using the data, and the first set and second set of parity values. The method further includes storing a portion of the data in a grid, where the grid includes grids locations that are each associated with a physical location, where each physical location is determined using a unique combination of at least a first value determined using a first independent fault domain and a second value determined using a second independent fault domain. The method further includes storing parity values from the first set of parity values and parity values from the second set of parity values in the grid, and storing the third set of parity values in an associated parity grid.
    Type: Grant
    Filed: March 21, 2013
    Date of Patent: December 6, 2016
    Assignee: EMC IP Holding Company LLC
    Inventor: Jeffrey S. Bonwick
  • Publication number: 20160343429
    Abstract: Embodiments of the technology relate to storing user data and metadata in persistent storage in the event of a power failure and then recovering such stored data and metadata when power is restored.
    Type: Application
    Filed: June 30, 2015
    Publication date: November 24, 2016
    Inventors: Nils Nieuwejaar, Jeffrey S. Bonwick
  • Publication number: 20160320986
    Abstract: In general, embodiments of the technology relate to a method and system protecting data in persistent storage. More specifically, various embodiments of the technology relate to using different replication schemes to protect different types of data within the persistent storage.
    Type: Application
    Filed: April 29, 2015
    Publication date: November 3, 2016
    Inventor: Jeffrey S. Bonwick
  • Publication number: 20160217037
    Abstract: A method for storing data. The method includes receiving data to write to persistent storage, calculating parity values for a grid using the data, where each of the parity values is associated with one selected from of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group. The method further includes writing the data to a data grid in the persistent storage, where the data grid is part of the grid, and writing the parity values for the grid to a portion of the grid, where the portion of the grid comprises physical locations associated with a Row Q Parity Group, a Row P Parity Group, a Column Q Parity Group, a Column P Parity Group, and an Intersection Parity Group, wherein the portion of the grid is distinct from the data grid.
    Type: Application
    Filed: March 31, 2016
    Publication date: July 28, 2016
    Inventor: Jeffrey S. Bonwick
  • Publication number: 20160217038
    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: Application
    Filed: March 31, 2016
    Publication date: July 28, 2016
    Inventor: Jeffrey S. Bonwick
  • Patent number: 9378149
    Abstract: A method for rebuilding an in-memory data structure. The method includes selecting a table of contents (TOC) entry of a TOC page in persistent storage, where the TOC entry includes an object identifier (ID) of an object, an offset ID, and a birth time. The method further includes determining, based on the object ID, that the in-memory data structure includes object metadata for the object including a mod time and an object map pointer to an object map tree. The method further includes that the birth time in the TOC entry is greater than the mod time, updating a stored physical address in the object map tree based on the offset ID to a physical address derived from the TOC entry; and updating the mod time stored in the object metadata to the birth time.
    Type: Grant
    Filed: August 29, 2014
    Date of Patent: June 28, 2016
    Assignee: EMC Corporation
    Inventor: Jeffrey S. Bonwick
  • 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
  • Publication number: 20160093397
    Abstract: A method for reading data from persistent storage. The method includes receiving a client read request that includes a logical address for data from a client, determining a physical address using the logical address where the physical address includes a page number for a physical page in the persistent storage, determining a retention time for the data, determining a program/erase (P/E) cycle value associated with the physical page, obtaining at least one read threshold value using the P/E cycle value, the retention time, and the page number, issuing a control module read request including the at least one read threshold value to a storage module that includes the physical page, and obtaining the data from the physical page using the at least one read threshold value.
    Type: Application
    Filed: September 30, 2014
    Publication date: March 31, 2016
    Inventors: Haleh Tabrizi, Rajiv Agarwal, Michael Francis Barrientos, Jeffrey Paul Ferreira, Jeffrey S. Bonwick, Michael W. Shapiro
  • Publication number: 20160092304
    Abstract: A method for managing persistent storage. The method includes selecting a page for a proactive read request, where the page is located in the persistent storage. The method further includes issuing the proactive read request to the page, receiving, in response to the proactive read request, a bit error value (BEV) for data stored on the page, obtaining a BEV threshold (T) for the page, wherein T is determined using a program/erase cycle value associated with the page and a retention time of the data stored on the page, making a first determination that the BEV is greater than T, based on the first determination: identifying an m-page, where the m-page is a set of pages and the page is in the set of pages, and setting the m-page as non-allocatable for future operations.
    Type: Application
    Filed: September 30, 2014
    Publication date: March 31, 2016
    Inventors: Haleh Tabrizi, Rajiv Agarwal, Jeffrey Paul Ferreira, Jeffrey S. Bonwick, Michael W. Shapiro
  • Publication number: 20160062882
    Abstract: A method for managing data. The method includes receiving a first request to write data to persistent storage and in response to the first request, writing the data to a short-lived block in the persistent storage, where the data is short-lived data or data of unknown longevity. The method further includes performing a modified garbage collection operation that includes: selecting a first frag page in a first block, determining that the first frag page is live, and migrating, based on the determination that the first frag page is live, the first frag page to a long-lived block in the persistent storage, where the long-lived block is distinct from the short-lived block and wherein the long-lived block does not include any short-lived data.
    Type: Application
    Filed: August 29, 2014
    Publication date: March 3, 2016
    Applicant: EMC CORPORATION
    Inventor: Jeffrey S. Bonwick
  • 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
  • Publication number: 20150205670
    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: Application
    Filed: December 19, 2014
    Publication date: July 23, 2015
    Inventor: Jeffrey S. Bonwick
  • Publication number: 20150095697
    Abstract: A method for storing data including calculating: a first set of parity values using the data, a second set of parity values using the first set of parity values, and a third set of parity values using the data, and the first set and second set of parity values. The method further includes storing a portion of the data in a grid, where the grid includes grids locations that are each associated with a physical location, where each physical location is determined using a unique combination of at least a first value determined using a first independent fault domain and a second value determined using a second independent fault domain. The method further includes storing parity values from the first set of parity values and parity values from the second set of parity values in the grid, and storing the third set of parity values in an associated parity grid.
    Type: Application
    Filed: March 21, 2013
    Publication date: April 2, 2015
    Inventor: Jeffrey S. Bonwick
  • 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: 8938594
    Abstract: A method for resilvering a storage pool includes determining whether any of a first plurality of blocks in the storage pool, comprising metadata, require resilvering, determining whether any of a second plurality of blocks in the storage pool, comprising data, require resilvering, resilvering all of the first plurality of blocks that require resilvering, and resilvering all of the second plurality of blocks that require resilvering, wherein all of the first plurality of blocks that require resilvering are resilvered prior to resilvering any of the second plurality of blocks.
    Type: Grant
    Filed: April 19, 2006
    Date of Patent: January 20, 2015
    Assignee: Oracle America, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • 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