IP Library Granted Patent US 8,161,353
Granted Patent B2
US 8,161,353 · App. 12/098,431 · Granted Apr 17, 2012

Apparatus, system, and method for validating that a correct data segment is read from a data storage device

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 8,161,353
App. No.
12/098,431
Granted
Apr 17, 2012
Kind
B2
Abstract

An apparatus, system, and method are disclosed for validating that correct data is read from a storage device. A read request receiver module receives a read storage request to read a data segment of a file or object stored on a data storage device. The storage request includes one or more source parameters for the data segment. The source parameters include one or more virtual addresses that identify the data segment. A hash generation module generates one or more hash values from the virtual addresses. A read data module reads the requested data segment and returns one or more data packets and corresponding stored hash values stored with the data packets. The stored hash values were generated from a data segment written to the data storage device that contains data of the data packets. A hash check module verifies that the generated hash values match the respective stored hash values.

Claims (39)

1. An apparatus to validate that a correct data segment is read from a storage device, the apparatus comprising:

a read request receiver module that receives a read storage request from a requesting device, the storage request to read a data segment of a file or object stored on a data storage device, the storage request comprising one or more source parameters for the data segment, the source parameters comprising one or more virtual addresses that identify the data segment;

a hash generation module that generates one or more hash values from the one or more virtual addresses;

a read data module that reads the requested data segment and returns one or more data packets and corresponding stored hash values stored with the data packets, the stored hash values being generated from source parameters of a data segment written to the data storage device and containing data of the data packets; and

a hash check module that verifies that the one or more hash values generated by the hash generation module match the respective one or more stored hash values returned by the read data module, wherein the read request receiver module, the hash generation module, the read data module, and the hash check module comprise one or more of logic, hardware and executable code, the executable code stored on a non-transitory computer readable storage medium.

2. The apparatus of claim 1 , wherein the stored hash value is stored in a packet header, the packet header being stored with data of the data segment identified by the virtual address.

3. The apparatus of claim 1 , wherein the data segment comprises one or more data packets and each data packet comprises a packet identifier that uniquely identifies the data packet within the file or object associated with the virtual address.

4. The apparatus of claim 3 , wherein the hash generation module creates one of the one or more hash values by hashing the virtual address and concatenating the packet identifier of a data packet to create a hash value for the data packet that is unique within the file or object associated with the virtual address.

5. The apparatus of claim 1 , further comprising:

a write request receiver module that receives a storage request from a requesting device, the storage request comprising a request to write a data segment of a file or object to a data storage device, the storage request comprising one or more source parameters for the data segment, the source parameters comprising one or more virtual addresses that identify the data segment; and

a write data module that stores the requested data segment as one or more data packets, each data packet stored with a unique hash value generated by the hash generation module that is unique within the file or object for the data segment, the unique hash value comprising the stored hash value.

6. The apparatus of claim 5 , wherein the unique hash value stored with each data packet comprises a nonce for encryption.

7. The apparatus of claim 1 , wherein at least a portion of one or more of the read request receiver module, the hash generation module, the read data module, and the hash check module is located within one or more of the requesting device, the data storage device, a storage device controller, and a computing device separate from the requesting device, the data storage device, and the storage device controller.

8. The apparatus of claim 1 , wherein the hash value generated by the hash generation module is transmitted to the data storage device, the hash check module being located on the data storage device wherein the data storage device utilizes the hash check module to validate a read data packet by comparing the received hash value with the stored hash value retrieved from the data storage device.

9. The apparatus of claim 8 , wherein the hash check module causes the data storage device to retry the read of the data packet in response to the hash check module detects an inconsistency between the received hash value and the stored hash value.

10. The apparatus of claim 1 , wherein the virtual address is transmitted to the data storage device, the hash generation module and the hash check module being located on the storage device wherein the data storage device utilizes the hash generation module to generate a hash check value and the hash check module to validate a read data packet by comparing the generated hash value with the stored hash value retrieved from the data storage device.

11. The apparatus of claim 10 , wherein the hash check module causes the data storage device to retry the read of the data packet in response to the hash check module detects an inconsistency between the generated hash value and the stored hash value.

12. The apparatus of claim 1 , wherein the data storage device transmits the stored hash value to one of a storage controller, a server, and a client, and the hash generation module and the hash check module are located outside the data storage device.

13. The apparatus of claim 12 , wherein the read data module retries the read of the data segment in response to the hash check module detecting an inconsistency between the stored has value received from the data storage device and the generated hash value.

14. The apparatus of claim 1 , further comprising a map rebuild module, wherein when the hash check module detects an inconsistency between the generated hash value and the stored hash value one or more times, the map rebuild module rebuilds one or more maps that map virtual addresses associated with stored data and physical addresses where the data is stored.

15. The apparatus of claim 14 , wherein the read data module retries the read of the data segment in response to a recovery of the one or more maps by the map rebuild module.

16. The apparatus of claim 1 , wherein the requested data segment is regenerated using data from a redundant array of independent drives (“RAID”) or retrieved from a data storage device different from the data storage device that is the target of the read storage request in response to the hash generation module determining that the generated hash value and the stored hash value do not match.

17. The apparatus of claim 1 , further comprising a mapping module that maps one or more source parameters of the data segment to one or more locations in the data storage device where the data storage device stored the one or more data packets of the data segment.

18. A system to validate that a correct data segment is read from a storage device, the system comprising:

a data storage device;

a storage controller that controls data storage on the data storage device;

a read request receiver module that receives a read storage request from a requesting device, the storage request to read a data segment of a file or object stored on the data storage device, the storage request comprising one or more source parameters for the data segment, the source parameters comprising one or more virtual addresses that identify the data segment;

a hash generation module that generates one or more hash values from the one or more virtual addresses;

a read data module that reads the requested data segment and returns one or more data packets and corresponding stored hash values stored with the data packets, the stored hash values being generated from source parameters of a data segment written to the data storage device and containing data of the data packets; and

a hash check module that verifies that the one or more hash values generated by the hash generation module match the respective one or more stored hash values returned by the read data module, wherein the read request receiver module, the hash generation module, the read data module, and the hash check module comprise one or more of logic hardware and executable code, the executable code stored on a non-transitory computer readable storage medium.

19. The system of claim 18 , wherein the data storage device comprises a solid-state storage device.

20. The system of claim 18 , wherein the data storage device comprises a sequential storage device.

21. The system of claim 18 , wherein the data storage device comprises an object storage device.

22. The system of claim 21 , wherein the object storage device emulates a block storage device.

23. A computer program product comprising a non-transitory computer readable medium having computer usable program code executable to perform operations for validating that a correct data segment is read from a storage device, the operations of the computer program product comprising:

receiving a read storage request from a requesting device, the storage request to read a data segment of a file or object stored on a data storage device, the storage request comprising one or more source parameters for the data segment, the source parameters comprising one or more virtual addresses that identify the data segment;

generating one or more hash values from the one or more virtual addresses;

reading the requested data segment and returning one or more data packets and corresponding stored hash values stored with the data packets, the stored hash values being generated from source parameters of a data segment written to the data storage device and containing data of the data packets; and

verifying that the one or more generated hash values match the respective one or more stored hash values returned in response to the read request.

Assignments (16)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 053654 FRAME: 0254. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 15, 2021
From: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 058134/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Nov 15, 2021
From: UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 058223/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT DOCUMENT FILED PREVIOUSLY RECORDED ON REEL 047702 FRAME 0413. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 16, 2019
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
Reel/Frame 048918/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2018
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES LIMITED
Reel/Frame 047702/0413 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →
CHANGE OF NAME Recorded Jul 9, 2010
From: FUSION MULTISYSTEMS, INC.
To: FUSION-IO, INC.
Reel/Frame 024651/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2009
From: FLYNN, DAVID; THATCHER, JONATHAN; STRASSER, JOHN
To: FUSION MULTISYSTEMS, INC. DBA FUSION-IO
Reel/Frame 022885/0310 →