Patents by Inventor Jonathan Thatcher

Jonathan Thatcher 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: 8189407
    Abstract: An apparatus, system, and method are disclosed for improving performance in a non-volatile solid-state storage device. Non-volatile solid-state storage media includes a plurality of storage cells. The plurality of storage cells is configured such that storage cells in an empty state store initial binary values that satisfy a bias. An input module receives source data for storage in the plurality of storage cells of the non-volatile solid-state storage media. Bits of the source data have a source bias that is different from the bias of the plurality of storage cells. A bit biasing module biases the bits of the source data toward the bias of the plurality of storage cells. A write module writes the biased source data to the plurality of storage cells of the non-volatile solid-state storage media.
    Type: Grant
    Filed: December 29, 2010
    Date of Patent: May 29, 2012
    Assignee: Fusion-io, Inc.
    Inventors: John Strasser, Jonathan Thatcher, Jeremy Fillingim, David Flynn, Lance Smith, Robert Wood, James Peterson
  • Publication number: 20120131413
    Abstract: An apparatus, system, and method are disclosed to increase data integrity in a redundant storage system. The receive module receives a read request to read data from an ECC chunk spanning N storage elements of an array of N+P storage elements. The N storage elements each store a portion of the ECC chunk and the P storage elements store parity data. The data read module reads data from each of X number of storage elements of the N+P storage elements where (N+P)>X?N. The ECC correction module corrects the read data of the ECC chunk using Error Correcting Code (“ECC”) in response to the ECC chunk comprising a number of bit errors below a correctable bit error threshold. The substitution module may correct the read data with substitute data from a substitute storage element.
    Type: Application
    Filed: May 18, 2010
    Publication date: May 24, 2012
    Applicant: FUSION-IO, INC.
    Inventors: Jonathan Thatcher, David Flynn, Joshua Aune, Jeremy Fillingim, Bill Inskeep, John Strasser, Kevin Vigor
  • Patent number: 8161353
    Abstract: An apparatus, system, and method are disclosed for validating that correct data is read from a storage device. A read request receiver module receives a read storage request to read a data segment of a file or object stored on a data storage device. The storage request includes one or more source parameters for the data segment. The source parameters include one or more virtual addresses that identify the data segment. A hash generation module generates one or more hash values from the virtual addresses. A read data module reads the requested data segment and returns one or more data packets and corresponding stored hash values stored with the data packets. The stored hash values were generated from a data segment written to the data storage device that contains data of the data packets. A hash check module verifies that the generated hash values match the respective stored hash values.
    Type: Grant
    Filed: April 6, 2008
    Date of Patent: April 17, 2012
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher
  • Patent number: 8156392
    Abstract: An apparatus, system, and method are disclosed for bad block remapping. A bad block identifier module identifies one or more data blocks on a solid-state storage element as bad blocks. A log update module writes at least a location of each bad block identified by the bad block identifier module into each of two or more redundant bad block logs. A bad block mapping module accesses at least one bad block log during a start-up operation to create in memory a bad block map. The bad block map includes a mapping between the bad block locations in the bad block log and a corresponding location of a replacement block for each bad block location. Data is stored in each replacement block instead of the corresponding bad block. The bad block mapping module creates the bad block map using one of a replacement block location and a bad block mapping algorithm.
    Type: Grant
    Filed: April 6, 2009
    Date of Patent: April 10, 2012
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, David Atkisson, Michael Zappe, Joshua Aune, Kevin Vigor
  • Publication number: 20120084611
    Abstract: An apparatus, system, and method are disclosed for bad block remapping. A bad block identifier module identifies one or more data blocks on a solid-state storage element as bad blocks. A log update module writes at least a location of each bad block identified by the bad block identifier module into each of two or more redundant bad block logs. A bad block mapping module accesses at least one bad block log during a start-up operation to create in memory a bad block map. The bad block map includes a mapping between the bad block locations in the bad block log and a corresponding location of a replacement block for each bad block location. Data is stored in each replacement block instead of the corresponding bad block. The bad block mapping module creates the bad block map using one of a replacement block location and a bad block mapping algorithm.
    Type: Application
    Filed: November 15, 2011
    Publication date: April 5, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, David Atkisson, Michael Zappe, Joshua Aune, Kevin Vigor
  • Patent number: 8151082
    Abstract: An apparatus, system, and method are disclosed for converting a storage request to an append data storage command. A storage request receiver module receives a storage request from a requesting device. The storage request is to store a data segment onto a data storage device. The storage request includes source parameters for the data segment. The source parameters include a virtual address. A translation module translates the storage request to storage commands. At least one storage command includes an append data storage command that directs the data storage device to store data of the data segment and the one or more source parameters with the data, including a virtual address, at one or more append points. A mapping module maps source parameters of the data segment to locations where the data storage device appended the data packets of the data segment and source parameters.
    Type: Grant
    Filed: April 6, 2008
    Date of Patent: April 3, 2012
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, Michael Zappe, John Strasser, Jonathan Thatcher
  • Publication number: 20120059981
    Abstract: An apparatus, system, and method are disclosed for storage space recovery. A storage division selection module selects a first storage division for recovery. The first storage division comprises a portion of solid-state storage in a solid-state storage device. A data recovery module reads valid data from the first storage division in response to selecting the first storage division for recovery. The data recovery module stores the valid data in a second storage division of the solid-state storage device. The data recovery module passes the valid data through at least a portion of a write data pipeline for the solid-state storage device without passing the valid data to a host device and/or without routing the valid data outside of a solid-state storage controller for the solid-state storage device.
    Type: Application
    Filed: November 15, 2011
    Publication date: March 8, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Bert Lagerstedt, John Strasser, Jonathan Thatcher, John Walker, Michael Zappe, Stephan Uphoff, Joshua Aune, Kevin Vigor
  • Publication number: 20120011340
    Abstract: A virtual storage layer (VSL) for a non-volatile storage device presents a large, logical address space having a logical capacity that may exceed the storage capacity of the non-volatile storage device. The VSL implements persistent storage operations within the logical address space; storage operations performed within the logical address space may be persisted on the non-volatile storage device. The VSL maintains storage metadata to allocate ranges of the logical address space to storage entities. The VSL provides for allocation of contiguous logical address ranges, which may be implemented by segmenting logical identifiers into a first portion referencing storage entities, and a second portion referencing storage entity offsets. The VSL persists data on the non-volatile storage device in a sequential, log-based format. Accordingly, storage clients, such as file systems, databases, and other applications, may delegate logical allocations, physical storage bindings, and/or crash-recovery to the VSL.
    Type: Application
    Filed: January 6, 2011
    Publication date: January 12, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Jonathan Thatcher
  • Publication number: 20120005443
    Abstract: An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.
    Type: Application
    Filed: September 16, 2011
    Publication date: January 5, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Michael Zappe, Jonathan Thatcher
  • Patent number: 8074011
    Abstract: An apparatus, system, and method are disclosed for storage space recovery after reaching a read count limit. A read module reads data in a storage division of solid-state storage. A read counter module then increments a read counter corresponding to the storage division. A read counter limit module determines if the read count exceeds a maximum read threshold, and if so, a storage division selection module selects the corresponding storage division for recovery. A data recovery module reads valid data packets from the selected storage division, stores the valid data packets in another storage division of the solid-state storage, and updates a logical index with a new physical address of the valid data.
    Type: Grant
    Filed: November 18, 2008
    Date of Patent: December 6, 2011
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, Bert Lagerstedt, John Strasser, Jonathan Thatcher, John Walker, Michael Zappe, Stephan Uphoff, Joshua Aune, Kevin Vigor
  • Publication number: 20110296277
    Abstract: An apparatus, system, and method are disclosed for a front-end, distributed redundant array of independent drives (“RAID”). A storage request receiver module receives a storage request to store object or file data in a set of autonomous storage devices forming a RAID group. The storage devices independently receive storage requests from a client over a network, and one or more of the storage devices are designated as parity-mirror storage devices for a stripe. The striping association module calculates a stripe pattern for the data. Each stripe includes N data segments, each associated with N storage devices. The parity-mirror association module associates a set of the N data segments with one or more parity-mirror storage devices. The storage request transmitter module transmits storage requests to each storage device. Each storage request is sufficient to store onto the storage device the associated data segments. The storage requests are substantially free of data.
    Type: Application
    Filed: August 5, 2011
    Publication date: December 1, 2011
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
  • Patent number: 8069383
    Abstract: An apparatus, system, and method are disclosed for bad block remapping. A bad block identifier module identifies one or more data blocks on a solid-state storage element as bad blocks. A log update module writes at least a location of each bad block identified by the bad block identifier module into each of two or more redundant bad block logs. A bad block mapping module accesses at least one bad block log during a start-up operation to create in memory a bad block map. The bad block map includes a mapping between the bad block locations in the bad block log and a corresponding location of a replacement block for each bad block location. Data is stored in each replacement block instead of the corresponding bad block. The bad block mapping module creates the bad block map using one of a replacement block location and a bad block mapping algorithm.
    Type: Grant
    Filed: April 6, 2009
    Date of Patent: November 29, 2011
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, David Atkisson, Michael Zappe, Joshua Aune, Kevin Vigor
  • Publication number: 20110289267
    Abstract: An apparatus, system, and method are disclosed for solid-state storage as cache for high-capacity, non-volatile storage. The apparatus, system, and method are provided with a plurality of modules including a cache front-end module and a cache back-end module. The cache front-end module manages data transfers associated with a storage request. The data transfers between a requesting device and solid-state storage function as cache for one or more HCNV storage devices, and the data transfers may include one or more of data, metadata, and metadata indexes. The solid-state storage may include an array of non-volatile, solid-state data storage elements. The cache back-end module manages data transfers between the solid-state storage and the one or more HCNV storage devices.
    Type: Application
    Filed: August 5, 2011
    Publication date: November 24, 2011
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
  • Patent number: 8046500
    Abstract: An apparatus, system, and method are disclosed for coordinating storage requests in a multi-processor/multi-thread environment. An append/invalidate module generates a first append data storage command from a first storage request and a second append data storage command from a second storage request. The storage requests overwrite existing data with first and second data including where the first and second data have at least a portion of overlapping data. The second storage request is received after the first storage request. The append/invalidate module updates an index by marking data being overwritten as invalid. A restructure module updates the index based on the first data and updates the index based on the second data. The updated index is organized to indicate that the second data is more current than the first data regardless of processing order. The modules prevent access to the index until the modules have completed updating the index.
    Type: Grant
    Filed: October 7, 2010
    Date of Patent: October 25, 2011
    Assignee: Fusion-io, Inc.
    Inventors: David Flynn, Michael Zappe, Jonathan Thatcher
  • Publication number: 20110258512
    Abstract: An apparatus, system, and method are disclosed for storing data on a solid-state storage device. A method includes receiving a storage request to store data on the solid-state storage device, representing the data in an object entry in an object index maintained by a solid-state storage device controller, storing the data as one or more object data segments on the solid-state storage device, and referencing in the object entry the one or more object data segments on the solid-state storage device.
    Type: Application
    Filed: June 30, 2011
    Publication date: October 20, 2011
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, David Atkisson, Bert Lagerstedt, John Strasser, Jonathan Thatcher, Michael Zappe
  • Publication number: 20110252190
    Abstract: An apparatus, system, and method are disclosed for managing data with an empty data segment directive at the requesting device. The apparatus, system, and method include a token directive generation module and a token directive transmission module. The token directive generation module generates a storage request with a token directive. The token directive includes a request to store on the storage device a data segment token. The token directive substitutes for a series of repeated, identical characters or a series of repeated, identical character strings to be stored as a data segment. The token directive includes at least a data segment identifier and a data segment length. The data segment token and the token directive are substantially free from data of the data segment. The token directive transmission module transmits the token directive to the storage device.
    Type: Application
    Filed: May 27, 2011
    Publication date: October 13, 2011
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Jonathan Thatcher, Michael Zappe
  • Patent number: 8019938
    Abstract: An apparatus, system, and method are disclosed for solid-state storage as cache for high-capacity, non-volatile storage. The apparatus, system, and method are provided with a plurality of modules including a cache front-end module and a cache back-end module. The cache front-end module manages data transfers associated with a storage request. The data transfers between a requesting device and solid-state storage function as cache for one or more HCNV storage devices, and the data transfers may include one or more of data, metadata, and metadata indexes. The solid-state storage may include an array of non-volatile, solid-state data storage elements. The cache back-end module manages data transfers between the solid-state storage and the one or more HCNV storage devices.
    Type: Grant
    Filed: December 6, 2007
    Date of Patent: September 13, 2011
    Assignee: Fusion-I0, Inc.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
  • Patent number: 8019940
    Abstract: An apparatus, system, and method are disclosed for a front-end, distributed redundant array of independent drives (“RAID”). A storage request receiver module receives a storage request to store object or file data in a set of autonomous storage devices forming a RAID group. The storage devices independently receive storage requests from a client over a network, and one or more of the storage devices are designated as parity-mirror storage devices for a stripe. The striping association module calculates a stripe pattern for the data. Each stripe includes N data segments, each associated with N storage devices. The parity-mirror association module associates a set of the N data segments with one or more parity-mirror storage devices. The storage request transmitter module transmits storage requests to each storage device. Each storage request is sufficient to store onto the storage device the associated data segments. The storage requests are substantially free of data.
    Type: Grant
    Filed: December 6, 2007
    Date of Patent: September 13, 2011
    Assignee: Fusion-io, Inc.
    Inventors: David Flynn, John Strasser, Jonathan Thatcher, Michael Zappe
  • Patent number: 8015440
    Abstract: An apparatus, system, and method are disclosed for data storage with progressive redundant array of independent drives (“RAID”). A storage request receiver module, a striping module, a parity-mirror module, and a parity progression module are included. The storage request receiver module receives a request to store data of a file or of an object. The striping module calculates a stripe pattern for the data. The stripe pattern includes one or more stripes, and each stripe includes a set of N data segments. The striping module writes the N data segments to N storage devices. Each data segment is written to a separate storage device within a set of storage devices assigned to the stripe. The parity-mirror module writes a set of N data segments to one or more parity-mirror storage devices within the set of storage devices. The parity progression module calculates a parity data segment on each parity-mirror device in response to a storage consolidation operation, and stores the parity data segments.
    Type: Grant
    Filed: December 6, 2007
    Date of Patent: September 6, 2011
    Assignee: Fusion-IO, Inc.
    Inventors: David Flynn, David Atkisson, Jonathan Thatcher, Michael Zappe
  • Publication number: 20110179225
    Abstract: An apparatus, system, and method are disclosed for a shared, front-end, distributed redundant array of independent drives (“RAID”). A multiple storage request receiver module receives at least two storage requests from at least two clients to store file or object data in one or more storage devices of a storage device set. The storage requests are concurrent and have at least a portion of the data in common. The storage device set includes autonomous storage devices forming a RAID group. Each storage device is capable of independently receiving storage requests from a client over a network. A striping module calculates a stripe pattern and writes N data segments per stripe to N storage devices. A parity-mirror module writes a set of N data segments to parity-mirror storage devices. A sequencer module ensures completion of a first storage request prior to executing a second storage request.
    Type: Application
    Filed: March 29, 2011
    Publication date: July 21, 2011
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Jonathan Thatcher, Michael Zappe