Patents Assigned to Fusion-IO, Inc.
  • Publication number: 20140351526
    Abstract: Techniques are disclosed relating to processing data in a storage controller. In one embodiment, a method includes receiving data at a storage controller of a storage device. The method further includes processing data units of the data in parallel via a plurality of write pipelines in the storage controller. The method further includes writing the data units to a storage medium of the storage device. In some embodiments, the method may include inserting header information into the data for a plurality of data units before processing, and the header information may include sequence information. In some embodiments, writing the data units may include writing according to a sequence determined prior to processing the data units.
    Type: Application
    Filed: April 16, 2014
    Publication date: November 27, 2014
    Applicant: Fusion-io, Inc.
    Inventor: James G. Peterson
  • Patent number: 8898376
    Abstract: Methods, storage controllers, and systems for grouping data stored on an array of solid-state storage elements are described. One method includes sequentially writing user data to an append point at a head of a log stored in an array of solid-state storage elements. The user data is stored in a plurality of logical erase blocks of the array. The method further includes selecting partially invalidated logical erase blocks of the array based on a characteristic for the partially invalidated logical erase blocks and arranging valid portions of the selected partially invalidated logical erase blocks into groups based on the characteristic. The method further includes writing the groups of valid portions to the log.
    Type: Grant
    Filed: June 4, 2012
    Date of Patent: November 25, 2014
    Assignee: Fusion-IO, Inc.
    Inventor: Joshua Aune
  • Publication number: 20140344488
    Abstract: Apparatuses, systems, and methods are disclosed for a virtual channel for data transfers between devices. A method includes presenting an address space for a memory buffer. The address space may be larger than a physical capacity of the memory buffer. A method includes controlling, from a peripheral device, a rate at which a data source transfers data to a memory buffer using a presented address space based on a rate at which a data target transfers data from the memory buffer using the presented address space so that an amount of data stored in the memory buffer remains at or below a physical capacity of the memory buffer.
    Type: Application
    Filed: September 4, 2013
    Publication date: November 20, 2014
    Applicant: Fusion-io, Inc.
    Inventors: David Flynn, Robert Wipfel
  • Patent number: 8892980
    Abstract: An apparatus, system, and method are disclosed for providing error correction for a data storage device. A determination module determines an error-correcting code (“ECC”) characteristic of the data storage device. An ECC module validates requested data read from the data storage device using a hardware ECC decoder. In response to the requested data satisfying a correction threshold, a software ECC decoder module validates the data using a software ECC decoder. The software ECC decoder is configured according to the ECC characteristic of the data storage device.
    Type: Grant
    Filed: June 15, 2011
    Date of Patent: November 18, 2014
    Assignee: Fusion-io, Inc.
    Inventor: Jeremy Fillingim
  • Publication number: 20140337562
    Abstract: Apparatuses, systems, methods, and computer program products are disclosed for managing a journal. A method may include reordering storage commands based on different storage volumes associated with the storage commands. A method may include reordering storage commands based on different snapshots associated with the storage commands. A method may include adjusting a frequency of writing data from a write buffer based on a rate of write requests. A method may include adjusting a ratio of storage capacity for storing mirrored write data to storage capacity for storing non-mirrored read data.
    Type: Application
    Filed: May 8, 2014
    Publication date: November 13, 2014
    Applicant: Fusion-io, Inc.
    Inventors: Kelly E. Long, Sebastian P. Sobolewski, Paul A. Ashmore
  • Publication number: 20140297929
    Abstract: Apparatuses, systems, methods, and computer program products are disclosed for a memory controller. An apparatus includes a volatile memory medium located on a memory module. An apparatus includes a non-volatile memory medium located on a memory module. A memory controller is located on a memory module. A memory controller may be configured to provide access to at least a non-volatile memory medium over a direct wire interface with a processor.
    Type: Application
    Filed: March 31, 2014
    Publication date: October 2, 2014
    Applicant: Fusion-io, Inc.
    Inventors: David Nellans, Robert Wipfel
  • Publication number: 20140289447
    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: September 25, 2014
    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: 20140281307
    Abstract: Techniques are disclosed relating to handling snapshot data for a storage device. In one embodiment, a computing system maintains information that indicates the state of data associated with an application at a particular point in time. In this embodiment, the computing system assigns an epoch number to a current epoch, where the current epoch is an interval between the particular point in time and a future point in time. In this embodiment, the computing system writes, during the current epoch, a block of data to the storage device. In this embodiment, the writing the block of data includes storing the epoch number with the block of data.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: James G. Peterson, Nisha Talagala, Swaminathan Sundararaman, Sriram Subramanian
  • Publication number: 20140279941
    Abstract: Apparatuses, systems, and methods are disclosed for managing multiple sets of metadata. A method includes maintaining a first set of metadata on a volatile recording medium and a second set of metadata on a non-volatile recording medium. The first and second sets of metadata are associated with one or more logical addresses for data stored on the non-volatile recording medium. The first and second sets of metadata relate to a state of the data. A method includes updating the second set of metadata in response to a first operation performed on the data. The second set may be updated based on the first operation. A method includes updating the first set of metadata in response to a subsequent operation performed on the data. The first set may be updated based on the first operation.
    Type: Application
    Filed: March 15, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventor: David Atkisson
  • Publication number: 20140281119
    Abstract: An apparatus, system, and method are disclosed for managing configuration parameters of a non-volatile storage device. The method includes storing a first set of configuration parameters for a non-volatile recording device. The first set of configuration parameters are configured for a storage operation on a storage element of the non-volatile recording device. The method also includes storing a second set of configuration parameters for the non-volatile recording device during execution of the storage operation on the storage element. The second set of configuration parameters are configured for a second storage operation on the storage element of the non-volatile recording device.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: Jea Hyun, Robert Wood, Hairong Sun
  • Publication number: 20140269090
    Abstract: An apparatus, system, and method are disclosed for managing erase operations for a data storage medium. A method includes determining whether a use threshold for one or more non-volatile storage cells is satisfied. A method includes performing a default erase operation for the one or more storage cells in response to determining that the use threshold is not satisfied. A method includes performing an extended erase operation for the one or more storage cells in response to determining that the use threshold is satisfied. An extended erase operation may include a greater number of erase pulse iterations than a default erase operation.
    Type: Application
    Filed: March 15, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: David Flynn, Hairong Sun, Jea Woong Hyun, Robert Wood
  • Publication number: 20140281819
    Abstract: An apparatus, system, and method are disclosed for managing data reliability. A priority module is configured to receive a storage request for a non-volatile memory device. The storage request may include data associated with a priority. The non-volatile memory device includes a plurality of cells, and each cell encodes a plurality of bits. The bits for a cell provide distinct levels of quality of service. A select module is configured to select a bit for storing the data based on the priority of the data and the level of quality of service of the selected bit. A data management module is configured to manage the data to satisfy a write order for the plurality of bits.
    Type: Application
    Filed: March 15, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: Robert Wood, David Flynn
  • Publication number: 20140281260
    Abstract: Techniques are disclosed relating to determining statistics associated with the storage of data on a medium. In one embodiment, a computing system maintains a management statistic for a storage device, and uses the management statistic as a proxy for a workload statistic for a storage block within the storage device. In some embodiments, the storage block is a first storage block included within a second storage block of the storage device. In one embodiment, the management statistic is a timestamp indicative of when a write operation was performed for the second storage block; the workload statistic is a write frequency of the first storage block. In one embodiment, the management statistic is a number of read operations performed for the second storage block; the using includes deriving, based on the number of read operation, a read frequency for the first storage block as the workload statistic.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: James G. Peterson, Swaminathan Sundararaman
  • Publication number: 20140281333
    Abstract: Techniques are disclosed relating to storing translations in memory that are usable to access data on a recording medium. In one embodiment, a request is sent for a memory allocation within a non-pageable portion of a memory in a computer system. Responsive to the request, allocated memory is received. Translations usable to map logical addresses to physical addresses within a storage device are stored within the allocated memory. In some embodiments, the translations are usable to access an area within the storage device used to store pages evicted from the memory. In one embodiment, a size of the memory allocation is determined based on a size of the area. In another embodiment, a size of the memory allocation is determined based on a size of a partition including the area. In some embodiments, the storage device is a solid-state storage array.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: James G. Peterson, Igor Sharovar, David Atkisson
  • Publication number: 20140282514
    Abstract: Techniques are disclosed relating to enabling virtual machines to access data on a physical recording medium. In one embodiment, a computing system provides a logical address space for a storage device to an allocation agent that is executable to allocate the logical address space to a plurality of virtual machines having access to the storage device. In such an embodiment, the logical address space is larger than a physical address space of the storage device. The computing system may then process a storage request from one of the plurality of virtual machines. In some embodiments, the allocation agent is a hypervisor executing on the computing system. In some embodiments, the computing system tracks utilizations of the storage device by the plurality of virtual machines, and based on the utilizations, enforces a quality of service level associated with one or more of the plurality of virtual machines.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: Neil Carson, Nisha Talagala, Mark Brinicombe, Robert Wipfel, Anirudh Badam, David Nellans
  • Publication number: 20140281842
    Abstract: An apparatus, system, and method are disclosed for accessing non-volatile cells. An interface module is configured to receive data for storage on a non-volatile memory medium. The non-volatile memory medium includes an array of cells, and each cell encodes a non-power-of-two number of states, or abodes per cell. A base conversion module is configured to convert the data from a binary representation to a representation in a non-binary base. The non-binary base uses a number of unique digits equal to the non-power-of-two number of abodes per cell. A write module is configured to store the converted data to the array of cells.
    Type: Application
    Filed: March 14, 2013
    Publication date: September 18, 2014
    Applicant: FUSION-IO, INC.
    Inventors: Robert Wood, David Flynn, Jeremy Fillingim, Warner Losh
  • Publication number: 20140258775
    Abstract: Apparatuses, systems, and methods are disclosed for reconfiguring an array of storage elements. A storage element error module is configured to determine that one or more storage elements in an array of storage elements are in error. An array of storage elements stores a first ECC block and first parity data generated from the first ECC block. A data reconfiguration module is configured to generate a second ECC block comprising at least a portion of data of a first ECC block. A new configuration storage module is configured to store a second ECC block and associated second parity data on fewer storage elements than a number of storage elements in an array.
    Type: Application
    Filed: May 23, 2014
    Publication date: September 11, 2014
    Applicant: Fusion-io, Inc.
    Inventors: David Flynn, Jonathan Thatcher, Joshua Aune, Jeremy Fillingim, Bill Inskeep, John Strasser, Kevin Vigor
  • Patent number: 8832528
    Abstract: In various embodiments, an apparatus, system, and method may increase data integrity in a redundant storage system. In one embodiment, a request is received for data stored at a storage system having a plurality of storage elements, where one or more of the plurality of storage elements include parity information. A determination is made that one of the plurality of storage elements is unavailable, the unavailable storage element being a functional storage element and including at least a portion of the data. Responsive to the determination, the data is reconstructed based on at least a portion of the parity information and data from one or more of the plurality of storage elements other than the unavailable storage element; a response is provided to the request such that the response includes the reconstructed data.
    Type: Grant
    Filed: May 18, 2010
    Date of Patent: September 9, 2014
    Assignee: Fusion-io, Inc.
    Inventors: Jonathan Thatcher, David Flynn, Joshua Aune, Jeremy Fillingim, Bill Inskeep, John Strasser, Kevin Vigor
  • Patent number: 8825937
    Abstract: Apparatuses, systems, and methods are disclosed for managing contents of a cache. A method includes receiving a read request for data stored in a non-volatile cache. A method includes determining whether a read request satisfies a frequent read threshold for a cache. A method includes writing data of a read request forward on a sequential log-based writing structure of a cache in response to determining that the read request satisfies a frequent read threshold.
    Type: Grant
    Filed: February 25, 2013
    Date of Patent: September 2, 2014
    Assignee: Fusion-io, Inc.
    Inventors: David Atkisson, David Flynn
  • Publication number: 20140237159
    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: August 21, 2014
    Applicant: Fusion-io, Inc.
    Inventors: David Flynn, Stephan Uphoff, Xiangyong Ouyang, David Nellans, Robert Wipfel