Patents Assigned to Fusion-io
  • Patent number: 8205015
    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: September 16, 2011
    Date of Patent: June 19, 2012
    Assignee: Fusion-io, Inc.
    Inventors: David Flynn, Michael Zappe, Jonathan Thatcher
  • Publication number: 20120151118
    Abstract: An auto-commit memory is capable of implementing a pre-configured, triggered commit action in response to a failure condition, such as a loss of power, invalid shutdown, fault, or the like. A computing device may access the auto-commit memory using memory access semantics (using a memory mapping mechanism or the like), bypassing system calls typically required in virtual memory operations. Since the auto-commit memory is pre-configured to commit data stored thereon in the event of a failure, users of the auto-commit memory may view these memory semantic operations as being instantly committed. Since operations to commit the data are taken out of the write-commit path, the performance of applications that are write-commit bound may be significantly improved.
    Type: Application
    Filed: December 13, 2011
    Publication date: June 14, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, David Nellans, John Strasser, James G. Peterson, Robert Wipfel
  • Patent number: 8199511
    Abstract: Embodiments are described including a device comprising a carrier frame. The device includes a first connector on a first side of the carrier frame, and the first connector connects to a host system when the carrier frame is inserted into the host system. The device includes a second connector on a second side of the carrier frame, where the second side of the carrier frame is perpendicular to the first side. The second connector electrically couples to the first connector and connects to an input/output (I/O) adapter card inserted into a third side of the carrier frame, where the third side perpendicular to the first side. Consequently, the device has a flat structure that receives an adapter card and reorients the electrical connection of the adapter card. The device includes external visual status indicators and a switch for hot-swapping of the adapter card carrier in a running host system.
    Type: Grant
    Filed: April 1, 2009
    Date of Patent: June 12, 2012
    Assignee: Fusion-io, Inc.
    Inventors: Daehwan Kim, Kiron Malwankar
  • Patent number: 8195978
    Abstract: An apparatus, system, and method are disclosed for detecting and replacing failed data storage. A read module reads data from an array of memory devices. The array includes two or more memory devices and one or more extra memory devices storing parity information from the memory devices. An ECC module determines, using an error correcting code (“ECC”), if one or more errors exist in tested data and if the errors are correctable using the ECC. The tested data includes data read by the read module. An isolation module selects a memory device in response to the ECC module determining that errors exists in the data read by the read module and that the errors are uncorrectable using the ECC. The isolation module also replaces data read from the selected memory device with replacement data and available data wherein the tested data includes the available data combined with the replacement data.
    Type: Grant
    Filed: May 18, 2009
    Date of Patent: June 5, 2012
    Assignee: Fusion-IO. Inc.
    Inventors: David Flynn, Jonathan Thatcher, Joshua Aune, Jeremy Fillingim, Bill Inskeep, John Strasser, Kevin Vigor
  • Patent number: 8195912
    Abstract: An apparatus, system, and method are disclosed for efficiently mapping virtual and physical addresses. A forward mapping module uses a forward map to identify physical addresses of data of a data segment from a virtual address. The data segment is identified in a storage request. The virtual addresses include discrete addresses within a virtual address space where the virtual addresses sparsely populate the virtual address space. A reverse mapping module uses a reverse map to determine a virtual address of a data segment from a physical address. The reverse map maps the data storage device into erase regions such that a portion of the reverse map spans an erase region of the data storage device erased together during a storage space recovery operation. A storage space recovery module uses the reverse map to identify valid data in an erase region prior to an operation to recover the erase region.
    Type: Grant
    Filed: April 6, 2008
    Date of Patent: June 5, 2012
    Assignee: Fusion-IO, Inc
    Inventors: David Flynn, Michael Zappe, John Strasser, David Atkisson, Jonathan Thatcher
  • 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
  • Publication number: 20120124294
    Abstract: An apparatus, system, and method are disclosed for satisfying storage requests while destaging cached data. A monitor module samples a destage rate for a nonvolatile solid-state cache, a total cache write rate for the cache, and a dirtied data rate. The dirtied data rate comprises a rate at which write operations increase an amount of dirty data in the cache. A target module determines a target cache write rate for the cache based on the destage rate, the total cache write rate, and the dirtied data rate to target a destage write ratio. The destage write ratio comprises a predetermined ratio between the dirtied data rate and the destage rate. A rate enforcement module enforces the target cache write rate such that the total cache write rate satisfies the target cache write rate.
    Type: Application
    Filed: January 24, 2012
    Publication date: May 17, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Atkisson, Jonathan Ludwig
  • Patent number: 8174835
    Abstract: Embodiments are described including a device comprising a carrier frame. The device includes a first connector on a first side of the carrier frame, and the first connector connects to a host system when the carrier frame is inserted into the host system. The device includes a second connector on a second side of the carrier frame, where the second side of the carrier frame is perpendicular to the first side. The second connector electrically couples to the first connector and connects to an input/output (I/O) adapter card inserted into a third side of the carrier frame, where the third side perpendicular to the first side. Consequently, the device has a flat structure that receives an adapter card and reorients the electrical connection of the adapter card. The device includes external visual status indicators and a switch for hot-swapping of the adapter card carrier in a running host system.
    Type: Grant
    Filed: April 1, 2009
    Date of Patent: May 8, 2012
    Assignee: Fusion-io, Inc.
    Inventors: Daehwan Kim, Kiron Malwankar
  • Patent number: 8175085
    Abstract: A scaling device or striper improves the lane efficiency of switch fabric. The striper controls or adjusts transfer modes and payload sizes of a large variety of devices operating with different protocols. The striper interfaces between network devices and the switch fabric, and the resulting switching system is configurable by a single controller. A source device sends a data packet to its corresponding striper for transmission across the switch fabric to a destination device. The corresponding striper parses the packet to determine its type and payload length, and divides the packet into numerous smaller segments when the payload length exceeds a predetermined length. The segments may be stored in the striper to adapt to the available bandwidth of the switch. The segments are sent across the switch fabric and reassembled at a destination striper. The packet as reassembled is forwarded to the destination device.
    Type: Grant
    Filed: January 14, 2009
    Date of Patent: May 8, 2012
    Assignee: Fusion-io, Inc.
    Inventors: Kiron Malwankar, Daniel Talayco
  • 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: 20120079174
    Abstract: A method for a direct interface between a memory controller and a non-volatile memory controller using a command protocol includes receiving a command from a memory controller to a non-volatile memory controller over a wire interface by way of a command protocol. The memory controller is coupled to one or more processors and the non-volatile memory controller, in one embodiment, is coupled to non-volatile memory media. The command protocol includes a control path that enables the memory controller to distinguish among different memory modules. The non-volatile memory controller stores data sequentially on the non-volatile memory media to preserve an ordered sequence of memory operations performed on the non-volatile memory media. The method includes executing the command within the non-volatile memory controller in response to determining that the non-volatile memory controller is capable of satisfying the command.
    Type: Application
    Filed: September 28, 2011
    Publication date: March 29, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Nellans, Robert Wipfel
  • Publication number: 20120079175
    Abstract: An apparatus, system, and method are disclosed for executing data transformations for a data storage device. A storage controller module executes a storage operation for a set of data within a data storage device. A transformation module determines to apply a data transformation to the set of data in response to a transformation indicator. A processing module applies the data transformation to the set of data internally on the data storage device prior to completing the storage operation.
    Type: Application
    Filed: September 28, 2011
    Publication date: March 29, 2012
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, David Nellans, Robert Wipfel
  • Publication number: 20120066439
    Abstract: An apparatus, system, and method are disclosed for managing lifetime for a data storage device. A target module determines a write bandwidth target for a data storage device. An audit module monitors write bandwidth of the data storage device relative to the write bandwidth target. A throttle module adjusts execution of one or more write operations on the data storage device in response to the write bandwidth of the data storage device failing to satisfy the write bandwidth target.
    Type: Application
    Filed: October 13, 2011
    Publication date: March 15, 2012
    Applicant: FUSION-IO, INC.
    Inventor: Jeremy Fillingim
  • Publication number: 20120063231
    Abstract: Methods, storage controllers, and systems for non-volatile storage element programming are described. One method includes programming user data in pages associated with a set of wordlines of an erase block of a non-volatile, solid-state storage element. The method further includes selecting at least one of the wordlines of the set programmed with the user data and restricting further programming of user data in the pages associated with the selected wordline. In some embodiments, the selected wordline occurs subsequent to the pages associated with the other wordlines of the set in a page programming order for the erase block.
    Type: Application
    Filed: September 15, 2011
    Publication date: March 15, 2012
    Applicant: FUSION-IO, INC.
    Inventors: Robert Barry Wood, Jae Woong Hyun, Hairong Sun
  • 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: 20120030408
    Abstract: A virtual storage layer (VSL) for a non-volatile storage device presents a logical address space of a non-volatile storage device to storage clients. Storage metadata assigns logical identifiers in the logical address space to physical storage locations on the non-volatile storage device. Data is stored on the non-volatile storage device in a sequential log-based format. Data on the non-volatile storage device comprises an event log of the storage operations performed on the non-volatile storage device. The VSL presents an interface for requesting atomic storage operations. Previous versions of data overwritten by the atomic storage device are maintained until the atomic storage operation is successfully completed. Data pertaining to a failed atomic storage operation may be identified using a persistent metadata flag stored with the data on the non-volatile storage device. Data pertaining to failed or incomplete atomic storage requests may be invalidated and removed from the non-volatile storage device.
    Type: Application
    Filed: July 28, 2011
    Publication date: February 2, 2012
    Applicant: Fusion-io, Inc.
    Inventors: David Flynn, Stephan Uphoff, Xiangyong Ouyang, David Nellans, Robert Wipfel