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, 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, wherein the mapping table includes a plurality of subsets, each subset having address mapping entries corresponding to a group of contiguous logical blocks in the logical address space of the host; and
performing, at the storage device, one or more operations for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, including;
generating metadata for the subset of the mapping table, the metadata including a version number for the subset of the mapping table;
calculating a first Cyclic Redundancy Check (CRC) checksum for the subset of the mapping table; and
storing the version number for the subset of the mapping table and the first CRC checksum for the subset of the mapping table 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 subsets, including a distinct entry for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, andthe mapping table 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 enhance data integrity to protect against returning old versions of data. In one aspect, a method includes (1) receiving a write request from a host that specifies write data for a set of logical block addresses, (2) mapping, using a mapping table, the set of logical block addresses to a set of physical addresses, where the mapping table includes a plurality of subsets, and (3) performing operations for each subset of the mapping table that includes at least one entry corresponding to a logical block specified by the set of logical block addresses, including: (a) generating metadata for the subset, the metadata including a version number for the subset, (b) calculating a Cyclic Redundancy Check (CRC) checksum for the subset, and (c) storing the version number for the subset and the CRC checksum for the subset in a version data structure.
129 Citations
19 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, 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, wherein the mapping table includes a plurality of subsets, each subset having address mapping entries corresponding to a group of contiguous logical blocks in the logical address space of the host; and performing, at the storage device, one or more operations for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, including; generating metadata for the subset of the mapping table, the metadata including a version number for the subset of the mapping table; calculating a first Cyclic Redundancy Check (CRC) checksum for the subset of the mapping table; and storing the version number for the subset of the mapping table and the first CRC checksum for the subset of the mapping table 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 subsets, including a distinct entry for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, and the mapping table 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. 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 logical address space of a host to physical addresses in a physical address space of the storage device; 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 a 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, 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, wherein the mapping table includes a plurality of subsets, each subset having address mapping entries corresponding to a group of contiguous logical blocks in the logical address space of the host; and performing, at the storage device, one or more operations for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, including; generating metadata for the subset of the mapping table, the metadata including a version number for the subset; calculating a first Cyclic Redundancy Check (CRC) checksum for the subset of the mapping table; and storing the version number for the subset of the mapping table and the first CRC checksum for the subset of the mapping table 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 subsets, including a distinct entry for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, and the mapping table 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 (8, 9, 10, 11, 12, 13)
-
-
14. 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 the 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, 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, wherein the mapping table includes a plurality of subsets, each subset having address mapping entries corresponding to a group of contiguous logical blocks in the logical address space of the host; and performing, at the storage device, one or more operations for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, including; generating metadata for the subset of the mapping table, the metadata including a version number for the subset of the mapping table; calculating a first Cyclic Redundancy Check (CRC) checksum for the subset of the mapping table; and storing the version number for the subset of the mapping table and the first CRC checksum for the subset of the mapping table 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 subsets, including a distinct entry for each subset of the mapping table that includes at least one address mapping entry corresponding to a logical block specified by the first set of one or more logical block addresses, and the mapping table 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 (15, 16, 17, 18, 19)
-
Specification