Data integrity enhancement to protect against returning old versions of data
First Claim
1. A method of enhancing data integrity, the method comprising:
- receiving, at a storage device, a write request from a host, wherein the write request specifies write data for a first set of one or more logical block addresses in a logical address space of the host;
mapping the first set of one or more logical block addresses associated with the write request to a first set of one or more physical addresses of the storage device, the first set of one or more physical addresses corresponding to one or more physical pages of the storage device, wherein the mapping of the first set of one or more logical block addresses associated with the write request to the first set of one or more physical addresses of the storage device is stored in a mapping table; and
performing, at the storage device, one or more operations for each logical block specified by the first set of one or more logical block addresses, including;
generating metadata for the logical block, the metadata including a version number for the logical block;
storing the metadata, including the version number, for the logical block in a header of a physical page in which the specified write data for the logical block is stored; and
storing the version number for the logical block in a version data structure,wherein;
the version data structure is a separate data structure from the mapping table,after said performing, the version data structure includes entries with version numbers for multiple logical block addresses, including the first set of one or more logical block addresses, andthe mapping data structure includes logical address to physical address mapping entries for multiple logical block addresses, including the first set of one or more logical block addresses.
3 Assignments
0 Petitions
Accused Products
Abstract
Systems, methods and/or devices are used to enable enhancing data integrity to protect against returning old versions of data. In one aspect, the method includes (1) receiving a write request from a host that specifies write data for a set of logical block addresses in a logical address space of the host, (2) mapping the set of logical block addresses to a set of physical addresses corresponding to physical pages of the storage device, and (3) performing one or more operations for each logical block specified by the set of logical block addresses, including: (a) generating metadata for the logical block, the metadata including a version number for the logical block, (b) storing the metadata, including the version number, in a header of a physical page in which the logical block is stored, and (c) storing the version number in a version data structure.
126 Citations
25 Claims
-
1. A method of enhancing data integrity, the method comprising:
-
receiving, at a storage device, a write request from a host, wherein the write request specifies write data for a first set of one or more logical block addresses in a logical address space of the host; mapping the first set of one or more logical block addresses associated with the write request to a first set of one or more physical addresses of the storage device, the first set of one or more physical addresses corresponding to one or more physical pages of the storage device, wherein the mapping of the first set of one or more logical block addresses associated with the write request to the first set of one or more physical addresses of the storage device is stored in a mapping table; and performing, at the storage device, one or more operations for each logical block specified by the first set of one or more logical block addresses, including; generating metadata for the logical block, the metadata including a version number for the logical block; storing the metadata, including the version number, for the logical block in a header of a physical page in which the specified write data for the logical block is stored; and storing the version number for the logical block in a version data structure, wherein; the version data structure is a separate data structure from the mapping table, after said performing, the version data structure includes entries with version numbers for multiple logical block addresses, including the first set of one or more logical block addresses, and the mapping data structure includes logical address to physical address mapping entries for multiple logical block addresses, including the first set of one or more logical block addresses. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A storage device, comprising:
-
a storage medium; memory distinct from the storage medium, the memory storing a mapping table, the mapping table including information for mapping logical addresses in a logic address space of a host to physical addresses in a physical address space of the storage system; and a storage controller having one or more processors configured to execute instructions in one or more programs, wherein the storage controller is configured to perform operations comprising; receiving, at the storage device, a write request from the host, wherein the write request specifies write data for a first set of one or more logical block addresses in the logical address space of the host; mapping the first set of one or more logical block addresses associated with the write request to a first set of one or more physical addresses of the storage device, the first set of one or more physical addresses corresponding to one or more physical pages of the storage device, wherein the mapping of the first set of one or more logical block addresses associated with the write request to the first set of one or more physical addresses of the storage device is stored in the mapping table; and performing, at the storage device, one or more operations for each logical block specified by the first set of one or more logical block addresses, including; generating metadata for the logical block, the metadata including a version number for the logical block; storing the metadata, including the version number, for the logical block in a header of a physical page in which the specified write data for the logical block is stored; and storing the version number for the logical block in a version data structure, wherein; the version data structure is a separate data structure from the mapping table, after said performing, the version data structure includes entries with version numbers for multiple logical block addresses, including the first set of one or more logical block addresses, and the mapping data structure includes logical address to physical address mapping entries for multiple logical block addresses, including the first set of one or more logical block addresses. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A non-transitory computer-readable storage medium, storing one or more programs configured for execution by one or more processors of a storage device, the one or more programs including instructions for:
-
receiving, at a storage device, a write request from a host, wherein the write request specifies write data for a first set of one or more logical block addresses in a logical address space of the host; mapping the first set of one or more logical block addresses associated with the write request to a first set of one or more physical addresses of the storage device, the first set of one or more physical addresses corresponding to one or more physical pages of the storage device, wherein the mapping of the first set of one or more logical block addresses associated with the write request to the first set of one or more physical addresses of the storage device is stored in a mapping table; and performing, at the storage device, one or more operations for each logical block specified by the first set of one or more logical block addresses, including; generating metadata for the logical block, the metadata including a version number for the logical block; storing the metadata, including the version number, for the logical block in a header of a physical page in which the specified write data for the logical block is stored; and storing the version number for the logical block in a version data structure, wherein; the version data structure is a separate data structure from the mapping table, after said performing, the version data structure includes entries with version numbers for multiple logical block addresses, including the first set of one or more logical block addresses, and the mapping data structure includes logical address to physical address mapping entries for multiple logical block addresses, including the first set of one or more logical block addresses. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
Specification