Patents by Inventor Brian W. O'Krafka

Brian W. O'Krafka 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: 11360908
    Abstract: Systems, methods and/or devices are used to perform memory-efficient mapping of block/object addresses. In one aspect, a method of managing a storage system having one or more storage devices includes a tiered data structure in which each node has a logical ID and entries in the nodes reference other nodes in the tiered data structure using the logical IDs. As a result, when a child node is updated and stored to a new location, but retains its logical ID, its parent node does not need to be updated, because the logical ID in the entry referencing the child node remains unchanged. Further, the storage system uses a secondary mapping table to translate the logical IDs to the corresponding physical locations of the corresponding nodes. Additionally, the secondary mapping table is cached in volatile memory, and as a result, the physical location of a required node is determined without accessing non-volatile memory.
    Type: Grant
    Filed: July 10, 2020
    Date of Patent: June 14, 2022
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Brian W. O'Krafka, Frederic H. Tudor, Niranjan Patre Neelakanta, Manavalan Krishnan, Johann George, Evgeniy Firsov
  • Patent number: 11243837
    Abstract: A system and method improve the performance of non-volatile memory storage by rebuilding, on the fly, “lost data” in response to a read request, which identifies data to be read or recovered, by identifying a parity data storage device in a set of data storage devices that contains parity corresponding to the identified data; sending a reconstruction request to a respective data storage device, which may be the parity data storage device or other data storage device in the system, to reconstruct the identified data, and receiving the identified data from the respective data storage device. The reconstruction request commands the respective data storage device to retrieve, via peer-to-peer read requests, from other data storage devices, data from one or more data blocks, and to reconstruct the identified data based on the retrieved data and parity data locally stored at the parity data storage device.
    Type: Grant
    Filed: April 30, 2020
    Date of Patent: February 8, 2022
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Brian W. O'Krafka, Sanjay Subbarao
  • Patent number: 10956050
    Abstract: In response to receiving a request to perform a transaction with two or more memory operations on one or more tiered data structures, the memory controller: writes a start transaction record to the log stream including a transaction identifier corresponding to the transaction; and performs the two or more memory operations. For a first memory operation associated with a key, the memory controller: writes a new data object in a datastore; assigns, in a key-map, a location of the new data object to the key; maintains an old data object in the datastore whose location was previously assigned to the key; and writes an operation commit record to a log stream upon completion of the first memory operation. In accordance with a determination that the two or more memory operations are complete, the memory controller writes a transaction commit record to the log stream including the transaction identifier.
    Type: Grant
    Filed: January 14, 2015
    Date of Patent: March 23, 2021
    Assignee: SanDisk Enterprise IP LLC
    Inventors: Frederic H. Tudor, Harihara Kadayam, Brian W. O'Krafka, Johann George
  • Patent number: 10860508
    Abstract: Data management functions are offloaded from a main controller to individual storage devices in a multi-device storage environment. The main controller receives a data management request from a host system, and responds by determining one or more storage devices and one or more data management operations to be performed by the one or more storage devices. The main controller initiates performance of a data management function corresponding to the data management request, by sending one or more data management commands to the one or more storage devices, and initiating one or more data transfers, such as a direct memory access operation to transfer data between a memory buffer of a storage device and a host memory buffer of the host system, and an internal data transfer between two or more of the storage devices using an internal communication fabric of the data storage subsystem.
    Type: Grant
    Filed: March 26, 2018
    Date of Patent: December 8, 2020
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Sanjay Subbarao, Brian W. O'Krafka, Anand Kulkarni, Warren Fritz Kruger
  • Publication number: 20200341905
    Abstract: Systems, methods and/or devices are used to perform memory-efficient mapping of block/object addresses. In one aspect, a method of managing a storage system having one or more storage devices includes a tiered data structure in which each node has a logical ID and entries in the nodes reference other nodes in the tiered data structure using the logical IDs. As a result, when a child node is updated and stored to a new location, but retains its logical ID, its parent node does not need to be updated, because the logical ID in the entry referencing the child node remains unchanged. Further, the storage system uses a secondary mapping table to translate the logical IDs to the corresponding physical locations of the corresponding nodes. Additionally, the secondary mapping table is cached in volatile memory, and as a result, the physical location of a required node is determined without accessing non-volatile memory.
    Type: Application
    Filed: July 10, 2020
    Publication date: October 29, 2020
    Inventors: Brian W. O'Krafka, Frederic H. Tudor, Niranjan Patre Neelakanta, Manavalan Krishnan, Johann George, Evgeniy Firsov
  • Patent number: 10761929
    Abstract: A system and method improve the performance of non-volatile memory storage by rebuilding, on the fly, “lost data” in response to a read request, which identifies data to be read or recovered, by identifying a parity data storage device in a set of data storage devices that contains parity corresponding to the identified data; sending a reconstruction request to a respective data storage device, which may be the parity data storage device or other data storage device in the system, to reconstruct the identified data, and receiving the identified data from the respective data storage device. The reconstruction request commands the respective data storage device to retrieve, via peer-to-peer read requests, from other data storage devices, data from one or more data blocks, and to reconstruct the identified data based on the retrieved data and parity data locally stored at the parity data storage device.
    Type: Grant
    Filed: March 26, 2018
    Date of Patent: September 1, 2020
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Brian W. O'Krafka, Sanjay Subbarao
  • Patent number: 10747676
    Abstract: Systems, methods and/or devices are used to perform memory-efficient mapping of block/object addresses. In one aspect, a method of managing a storage system having one or more storage devices includes a tiered data structure in which each node has a logical ID and entries in the nodes reference other nodes in the tiered data structure using the logical IDs. As a result, when a child node is updated and stored to a new location, but retains its logical ID, its parent node does not need to be updated, because the logical ID in the entry referencing the child node remains unchanged. Further, the storage system uses a secondary mapping table to translate the logical IDs to the corresponding physical locations of the corresponding nodes. Additionally, the secondary mapping table is cached in volatile memory, and as a result, the physical location of a required node is determined without accessing non-volatile memory.
    Type: Grant
    Filed: July 12, 2016
    Date of Patent: August 18, 2020
    Assignee: SanDisk Technologies LLC
    Inventors: Brian W. O'Krafka, Frederic H. Tudor, Niranjan Patre Neelakanta, Manavalan Krishnan, Johann George, Evgeniy Firsov
  • Publication number: 20200257590
    Abstract: A system and method improve the performance of non-volatile memory storage by rebuilding, on the fly, “lost data” in response to a read request, which identifies data to be read or recovered, by identifying a parity data storage device in a set of data storage devices that contains parity corresponding to the identified data; sending a reconstruction request to a respective data storage device, which may be the parity data storage device or other data storage device in the system, to reconstruct the identified data, and receiving the identified data from the respective data storage device. The reconstruction request commands the respective data storage device to retrieve, via peer-to-peer read requests, from other data storage devices, data from one or more data blocks, and to reconstruct the identified data based on the retrieved data and parity data locally stored at the parity data storage device.
    Type: Application
    Filed: April 30, 2020
    Publication date: August 13, 2020
    Inventors: Vladislav Bolkhovitin, Brian W. O'Krafka, Sanjay Subbarao
  • Patent number: 10725859
    Abstract: A system and method improve the performance of non-volatile memory storage by offloading parity computations to facilitate high speed data transfers, including direct memory access (DMA) transfers, between a remote host and a non-volatile memory based storage system, such as a flash memory based data storage device (e.g., SSD). In conjunction with writing to non-volatile memory storage, a stripe map is used to target a selected data storage device for parity generation. All data of a stripe is transmitted to the selected data storage device to generate the parity and the generated parity is propagated from the selected data storage device to other data storage devices in the stripe. The data for the stripe may also be propagated from the selected data storage device to the other data storage devices in the stripe.
    Type: Grant
    Filed: March 26, 2018
    Date of Patent: July 28, 2020
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Brian W. O'Krafka, Sanjay Subbarao
  • Patent number: 10705952
    Abstract: Systems, methods, and/or devices are used to store metadata in a storage system. In one aspect, a first user space module sends a logical memory request to a memory management module of a kernel space module. The logical memory request includes data and metadata. A second user space module obtains the metadata of the logical memory request. A storage engine of the second user space module determines, in accordance with the obtained metadata, a location in non-volatile memory for the data. A second user space module generates a physical memory request including an indication of the non-volatile memory for the data. The second user space module transmits the physical memory request to the kernel space memory management module.
    Type: Grant
    Filed: May 17, 2016
    Date of Patent: July 7, 2020
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Vishal Kanaujia, Ramesh Chander, Manavalan Krishnan, Brian W. O'Krafka, Johann George
  • Patent number: 10642525
    Abstract: A main controller in a data storage system having multiple storage devices determines an initial set of memory block candidates for data lifetime operations by receiving from each of a plurality of the storage devices information identifying one or more potential memory block candidates, with respective received memory blocks having been classified by respective storage devices as potential candidates. The main controller determines a set of related memory blocks, and, based on received usage information for the candidate memory blocks and the related memory blocks, selects a target group of memory blocks and initiates performance of the data lifetime operations on the memory blocks of the selected target group.
    Type: Grant
    Filed: February 22, 2018
    Date of Patent: May 5, 2020
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Sanjay Subbarao, Brian W. O'Krafka, Anand Kulkarni
  • Patent number: 10565123
    Abstract: A host compiles code to perform a set of one or more database operations on target and embeds an indication of whether the target data is randomly accessed data or sequentially accessed data. The compiled code is transmitted to the compute engine inside a memory system that maintains a first portion of memory for storing sequentially accessed data and a second portion of memory for storing randomly accessed data. The memory system (e.g. SSD) maintains reduced size L2P tables in volatile working memory by maintaining coarse L2P tables in the working memory for use with sequentially accessed data and maintaining fine L2P tables in the working memory for use with randomly accessed data. The compute engine uses the compiled code to perform the set of one or more database operations on the target data using the working memory.
    Type: Grant
    Filed: October 5, 2017
    Date of Patent: February 18, 2020
    Assignee: Western Digital Technologies, Inc.
    Inventors: Seung-Hwan Song, Arup De, Pankaj Mehra, Brian W. O'Krafka
  • Patent number: 10474528
    Abstract: A system and method pertains to operating non-volatile memory systems. Technology disclosed herein efficiently uses memory available in non-volatile storage devices in a non-volatile memory system. In some aspects, non-volatile storage devices enforce a redundancy coding stripe across the non-volatile storage devices formed from chunks of data having internal addresses assigned in a coordinated scheme across the storage devices. In some aspects, non-volatile storage devices enforce a redundancy coding stripe across the non-volatile storage devices at the same internal addresses in the respective non-volatile storage devices.
    Type: Grant
    Filed: October 2, 2017
    Date of Patent: November 12, 2019
    Assignee: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Warren Fritz Kruger, Brian W O'Krafka, Sanjay Subbarao
  • Patent number: 10379948
    Abstract: Technology disclosed herein efficiently uses memory available in non-volatile storage devices in a non-volatile memory system. In one aspect, a manager collects enough data to fill an entire chunk of a redundancy coding stripe, and requests that the entire chunk be written together in a selected non-volatile storage device. The selected non-volatile storage device may return an internal address at which the entire chunk was written. The manager may store a stripe map that identifies the internal addresses at which each chunk was stored.
    Type: Grant
    Filed: October 2, 2017
    Date of Patent: August 13, 2019
    Assignee: Western Digital Technologies, Inc.
    Inventors: Brian W O'Krafka, Vladislav Bolkhovitin, Sanjay Subbarao
  • Publication number: 20190179559
    Abstract: A main controller in a data storage system having multiple storage devices determines an initial set of memory block candidates for data lifetime operations by receiving from each of a plurality of the storage devices information identifying one or more potential memory block candidates, with respective received memory blocks having been classified by respective storage devices as potential candidates. The main controller determines a set of related memory blocks, and, based on received usage information for the candidate memory blocks and the related memory blocks, selects a target group of memory blocks and initiates performance of the data lifetime operations on the memory blocks of the selected target group.
    Type: Application
    Filed: February 22, 2018
    Publication date: June 13, 2019
    Inventors: Vladislav Bolkhovitin, Sanjay Subbarao, Brian W. O'Krafka, Anand Kulkarni
  • Patent number: 10289340
    Abstract: Systems, methods and/or devices are used to coalesce metadata and data writes via write serialization with device-level address remapping. In one aspect, a method of managing a storage system having one or more storage devices includes a serialized write operation to the storage system, in which a serialization segment accumulates data objects and mapping information until the segment is full, at which time the serialization segment is written to the storage system in a single contiguous write. As a result, the number of I/O operations is decreased from a minimum of two (one to write data and one to write updated mapping information) to a single write operation. Further, if the serialization segment contains existing valid data prior to accumulating data objects and mapping information, the valid data is moved to the beginning of the serialization segment using either a remap or xcopy operation.
    Type: Grant
    Filed: February 8, 2017
    Date of Patent: May 14, 2019
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Brian W. O'Krafka, Johann George, Vladislav Bolkhovitin, Manavalan Krishnan, Evgeniy Firsov
  • Publication number: 20190102250
    Abstract: Technology disclosed herein efficiently uses memory available in non-volatile storage devices in a non-volatile memory system. In one aspect, a manager collects enough data to fill an entire chunk of a redundancy coding stripe, and requests that the entire chunk be written together in a selected non-volatile storage device. The selected non-volatile storage device may return an internal address at which the entire chunk was written. The manager may store a stripe map that identifies the internal addresses at which each chunk was stored.
    Type: Application
    Filed: October 2, 2017
    Publication date: April 4, 2019
    Applicant: Western Digital Technologies, Inc.
    Inventors: Brian W. O'Krafka, Vladislav Bolkhovitin, Sanjay Subbarao
  • Publication number: 20190102249
    Abstract: A system and method pertains to operating non-volatile memory systems. Technology disclosed herein efficiently uses memory available in non-volatile storage devices in a non-volatile memory system. In some aspects, non-volatile storage devices enforce a redundancy coding stripe across the non-volatile storage devices formed from chunks of data having internal addresses assigned in a coordinated scheme across the storage devices. In some aspects, non-volatile storage devices enforce a redundancy coding stripe across the non-volatile storage devices at the same internal addresses in the respective non-volatile storage devices.
    Type: Application
    Filed: October 2, 2017
    Publication date: April 4, 2019
    Applicant: Western Digital Technologies, Inc.
    Inventors: Vladislav Bolkhovitin, Warren Fritz Kruger, Brian W. O'Krafka, Sanjay Subbarao
  • Patent number: 10185658
    Abstract: Systems, methods and/or devices are used for efficient implementation of optimized host-based garbage collection strategies using xcopy and arrays of flash devices. In one aspect, a method of managing a storage system having one or more storage devices includes a host-based garbage collection operation that includes identifying two or more logical stripes in accordance with data storage information stored at the host system, and enabling a process of coalescing valid data in the two or more logical stripes. Further, the use of an internal copy operation (e.g., xcopy), allows the host-based garbage collection operation to occur without transferring data back to the host, thus minimizing the number of I/O operations between the host and storage devices. Additionally, use of the host-based garbage collection operation allows more sophisticated garbage collection algorithms (e.g., matching the current workload) to be used, and ensures that multiple logical stripes are available to write data.
    Type: Grant
    Filed: July 12, 2016
    Date of Patent: January 22, 2019
    Assignee: SANDISK TECHNOLOGIES LLC
    Inventors: Brian W. O'Krafka, Vladislav Bolkhovitin, Vivek Shivhare
  • Publication number: 20180341606
    Abstract: Data management functions are offloaded from a main controller to individual storage devices in a multi-device storage environment. The main controller receives a data management request from a host system, and responds by determining one or more storage devices and one or more data management operations to be performed by the one or more storage devices. The main controller initiates performance of a data management function corresponding to the data management request, by sending one or more data management commands to the one or more storage devices, and initiating one or more data transfers, such as a direct memory access operation to transfer data between a memory buffer of a storage device and a host memory buffer of the host system, and an internal data transfer between two or more of the storage devices using an internal communication fabric of the data storage sub system.
    Type: Application
    Filed: March 26, 2018
    Publication date: November 29, 2018
    Inventors: Vladislav Bolkhovitin, Sanjay Subbarao, Brian W. O'Krafka, Anand Kulkarni, Warren Fritz Kruger