IP Library Granted Patent US 9,727,263
Granted Patent B2
US 9,727,263 · App. 15/046,182 · Granted Aug 8, 2017

Method and system for storage of data in a non-volatile media

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,727,263
App. No.
15/046,182
Granted
Aug 8, 2017
Kind
B2
Abstract

A system and method for managing the storage of data in non-volatile memory is described. In an aspect, the data may be described by metadata and a transaction log file that are checkpointed from a volatile memory into the non-volatile memory. Actions that take place between the last checkpointing of a metadata segment and log file segment are discovered by scanning the non-volatile memory blocks, taking account of a record of the highest sector in each block that is known to have been recorded. Any later transactions are discovered and used to update the recovered metadata so that the metadata correctly represents the stored data.

Claims (25)

1. A method of recovering data stored in a FLASH memory system, the method comprising:

using a computer to maintain, in a non-volatile memory, metadata including a sequence number and a pointer value to a first free page location in a block a plurality of blocks of FLASH memory, each block having a plurality of pages; and, the block is a minimum number of erasable gages of contiguous memory; and,

if a previous page location to the first free page location in the block has data and page metadata written thereto and a sequence number in the previous page metadata is less than or equal to the maintained sequence number:

validating the pointer value by determining that first free memory page location pointed to has not had data written thereto; or

correcting the pointer value if the first free FLASH memory page pointed to has had data written thereto,

wherein the sequence number is sequentially incremented for each write operation performed on the FLASH memory system.

2. The method of claim 1 , wherein the step of correcting the pointer value comprises:

incrementing the pointer value and performing the step of correcting until a page that has not had data written thereto has been found or the pointer value is a largest pointer value for the block.

3. The method of claim 2 , wherein page metadata of each found page is used to update block metadata.

4. The method of claim 3 , wherein page metadata comprises a logical block address and a sequence number assigned when the page metadata is written and: recovering pages of a plurality of blocks; and

determining a most recent one of a plurality of pages having a same logical address and different page memory locations by selecting a page of the plurality of pages with a highest sequence number.

5. The method of claim 1 , further comprising:

determining that the block has not been erased by decrementing the pointer value and determining that the page pointed to has had data written thereto.

6. The method of claim 5 , wherein for each most recent recovered page:

associating the most recent page memory location with a logical address in the metadata.

7. The method of claim 6 , wherein for each recovered page that is not the most recent recovered page for the logical address, mark the memory page location as containing invalid data.

8. The method of claim 1 , wherein, for each block that is determined to have been erased, recover the pages that have been written to the block since the block was erased.

9. The method of claim 1 , wherein when the data is stored in a RAID format, the metadata for each page of data of a RAID stripe has a common sequence number.

10. A computer program product, stored in a non-transient computer readable memory, comprising:

instructions interpretable by a computer to:

maintain a sequence number and a pointer value to a first free page location in each of a plurality of blocks of a FLASH memory system; and, sequentially increment the sequence number and update the pointer value associated with the block of the plurality of blocks to which a write operation is performed for each write operation performed on the FLASH memory system; and,

when recovering data or metadata after a system event:

determining if a previous page location to the first free page location in the block has data and page metadata written thereto and a sequence number in the previous page metadata is less than or equal to the maintained sequence number; and,

validating the pointer value by determining that first free memory page location pointed to has not had data written thereto; or

correcting the pointer value if the first free memory page pointed to has had data written thereto.

Assignments (4)
CORRECTIVE ASSIGNMENT TO REMOVE US PATENT NO. 9013874 PREVIOUSLY RECORDED UNDER REEL AND FRAME 064272/0249. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 17, 2024
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 068998/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2023
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 064272/0249 →
CHANGE OF NAME Recorded May 25, 2021
From: VIOLIN SYSTEMS LLC
To: VSIP HOLDINGS LLC
Reel/Frame 056366/0849 →
CHANGE OF NAME Recorded Dec 19, 2017
From: VIOLIN MEMORY, INC.
To: VIOLIN SYSTEMS LLC
Reel/Frame 044908/0680 →