IP Library Granted Patent US 9,794,341
Granted Patent B2
US 9,794,341 · App. 14/494,807 · Granted Oct 17, 2017

Data storage verification in distributed storage system

Inventors: Abhijeet Manohar (Bangalore, IN); Daniel Tuers (Kapaa, HI)
Assignee: SANDISK TECHNOLOGIES LLC
H04L67/1097H04L63/065H04W12/02
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,794,341
App. No.
14/494,807
Granted
Oct 17, 2017
Kind
B2
Abstract

A server system with one or more processors and memory sends a verification request, to a client device, to verify that the client device is storing a data block, where the verification request includes verification parameters. In response, the server system obtains from the client device a first verification value for the data block. The server system compares the first verification value with a second verification value for the data block, where the second verification value was previously computed, in accordance with the data block and the verification parameters, and stored by the server system. In accordance with a determination that the first verification value matches the second verification value, the server system confirms that the client device is storing the data block.

Claims (64)

1. A method of verifying storage of data blocks, the method comprising:

at a server system with one or more processors and memory:

sending a verification request, from the server system to a first client device, to verify that the first client device is storing a data block on behalf of a second client device, the verification request including one or more verification parameters to be used by the first client device in computing a first verification value for the data block, wherein:

the first client device leases memory space for storing data to one or more other client devices, including the second client device; and

the first client device has a storage rating, which is used by the second client device to determine if the first client device satisfies storage criteria for storing data of the second client device;

in response to the verification request, obtaining, from the first client device, the first verification value for the data block, wherein the first verification value is computed by the first client device based on the data block and the one or more verification parameters;

comparing the first verification value with a second verification value for the data block, wherein the second verification value was previously computed, in accordance with the data block and the one or more verification parameters, and stored by the server system;

in accordance with a determination that the first verification value matches the second verification value, confirming that the first client device is storing the data block; and

in accordance with a determination that the first verification value does not match the second verification value, reducing the storage rating associated with the first client device.

2. The method of claim 1 , further comprising:

computing the second verification value for the data block based on the one or more verification parameters, wherein the one or more verification parameters are dynamically generated by the server system; and

storing the second verification value in a verification table.

3. The method of claim 2 , wherein:

the first client device is one of a plurality of client devices associated with the server system;

the verification table associates the second verification value with locations of one or more client devices of the plurality of client devices that store the data block; and

the one or more client devices include at least the first client device from which the first verification value was obtained.

4. The method of claim 2 , wherein the verification table is stored in non-volatile memory.

5. The method of claim 1 , wherein the first verification value and the second verification value are hash values.

6. The method of claim 1 , wherein the one or more verification parameters include at least one of a starting seed, a tap seed, and a rotation value for a generator polynomial.

7. The method of claim 1 , wherein the first client device is a mobile computing device.

8. The method of claim 1 , further comprising: at a sequence of times, sending additional verification requests; and repeating the obtaining and comparing with respect to each additional verification request, wherein one or more of the additional verification requests use distinct sets of one or more verification parameters.

9. A server system, comprising:

one or more processors; and

memory storing one or more programs to be executed by the one or more processors, the one or more programs comprising instructions for:

sending a verification request, to a first client device, to verify that the first client device is storing a data block on behalf of a second client device, the verification request including one or more verification parameters to be used by the first client device in computing a first verification value for the data block, wherein:

the first client device leases memory space for storing data to one or more other client devices, including the second client device; and

the first client device has a storage rating, which is used by the second client device to determine if the first client device satisfies storage criteria for storing data of the second client device;

in response to the verification request, obtaining, from the first client device, the first verification value for the data block, wherein the first verification value is computed by the first client device based on the data block and the one or more verification parameters;

comparing the first verification value with a second verification value for the data block, wherein the second verification value was previously computed, in accordance with the data block and the one or more verification parameters, and stored by the server system;

in accordance with a determination that the first verification value matches the second verification value, confirming that the first client device is storing the data block; and

in accordance with a determination that the first verification value does not match the second verification value, reducing the storage rating associated with the first client device.

10. The server system of claim 9 , wherein the one or more programs further comprise instructions for:

computing the second verification value for the data block based on the one or more verification parameters, wherein the one or more verification parameters are dynamically generated by the server system; and

storing the second verification value in a verification table.

11. The server system of claim 10 , wherein:

the first client device is one of a plurality of client devices associated with the server system;

the verification table associates the second verification value with locations of one or more client devices of the plurality of client devices that store the data block; and

the one or more client devices at least include the first client device from which the first verification value was obtained.

12. The server system of claim 10 , wherein the verification table is stored in non-volatile memory.

13. The server system of claim 9 , wherein the first verification value and the second verification value are hash values.

14. The server system of claim 9 , wherein the one or more verification parameters include at least one of a starting seed, a tap seed, and a rotation value for a generator polynomial.

15. The server system of claim 9 , wherein the first client device is a mobile computing device.

16. The server system of claim 9 , wherein the one or more programs further comprise instructions for:

at a sequence of times, sending additional verification requests; and

repeating the obtaining and comparing with respect to each additional verification request, wherein one or more of the additional verification requests use distinct sets of one or more verification parameters.

17. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions which, when executed by a server system with one or more processors, cause the server system to perform operations comprising:

sending a verification request, from the server system to a first client device, to verify that the first client device is storing a data block on behalf of a second client device, the verification request including one or more verification parameters to be used by the first client device in computing a first verification value for the data block, wherein:

the first client device leases memory space for storing data to one or more other client devices, including the second client device; and

the first client device has a storage rating, which is used by the second client device to determine if the first client device satisfies storage criteria for storing data of the second client device;

in response to the verification request, obtaining, from the first client device, the first verification value for the data block, wherein the first verification value is computed by the first client device based on the data block and the one or more verification parameters;

comparing the first verification value with a second verification value for the data block, wherein the second verification value was previously computed, in accordance with the data block and the one or more verification parameters, and stored by the server system;

in accordance with a determination that the first verification value matches the second verification value, confirming that the first client device is storing the data block; and

in accordance with a determination that the first verification value does not match the second verification value, reducing the storage rating associated with the first client device.

18. The non-transitory computer readable storage medium of claim 17 , wherein the one or more programs further comprise instructions which cause the server system to:

compute the second verification value for the data block based on the one or more verification parameters, wherein the one or more verification parameters are dynamically generated by the server system; and

store the second verification value in a verification table.

19. A server system, comprising:

means for sending a verification request to a first client device to verify that the first client device is storing a data block on behalf of a second client device, the verification request including one or more verification parameters to be used by the first client device in computing a first verification value for the data block, wherein:

the first client device leases memory space for storing data to one or more other client devices, including the second client device; and

the first client device has a storage rating, which is used by the second client device to determine if the first client device satisfies storage criteria for storing data of the second client device;

means for obtaining from the first client device, in response to the verification request, the first verification value for the data block, wherein the first verification value is computed by the first client device based on the data block and the one or more verification parameters;

means for comparing the first verification value with a second verification value for the data block, wherein the second verification value was previously computed, in accordance with the data block and the one or more verification parameters, and stored by the server system;

means, enabled in accordance with a determination that the first verification value matches the second verification value, for confirming that the first client device is storing the data block; and

means, enabled in accordance with a determination that the first verification value does not match the second verification value, for reducing the storage rating associated with the first client device.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0486 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069169/0572 →
PATENT COLLATERAL AGREEMENT (AR) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0284 →
PATENT COLLATERAL AGREEMENT (DDTL) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0206 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2024
From: SANDISK TECHNOLOGIES LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 066114/0298 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SANDISK ENTERPRISE IP LLC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038295/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2014
From: MANOHAR, ABHIJEET; TUERS, DANIEL
To: SANDISK ENTERPRISE IP LLC
Reel/Frame 034031/0138 →
Continuity (2)
Provisional Application 62019361 · Jun 30, 2014
Related Publication 20150381729A1 · Dec 31, 2015