IP Library Granted Patent US 9,235,593
Granted Patent B2
US 9,235,593 · App. 12/895,827 · Granted Jan 12, 2016

Transmitting filesystem changes over a network

Inventors: Mark Huang (Seattle, WA); Curtis Anderson (Saratoga, CA); R. Hugo Patterson (Los Altos, CA)
Assignee: EMC Corporation
G06F17/30174G06F17/30575G06F17/30578H04L29/0854
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,235,593
App. No.
12/895,827
Filed
Sep 30, 2010
Granted
Jan 12, 2016
Kind
B2
Art Unit
2158
USPC
707/613
Abstract

Transmitting filesystem changes over a network is disclosed. A hash of data comprising a chunk of directory elements comprising one or more consecutive directory elements in a set of elements sorted in a canonical order is computed at a client system. One or more directory elements comprising the chunk are sent to a remote server in the event it is determined based at least in part on the computed hash that corresponding directory elements as stored on the remote server are not identical to the directory elements comprising the chunk as stored on the client system.

Claims (51)

1. A method of synchronizing filesystem changes, comprising:

sorting, in a canonical order, a list of directory elements wherein each directory element includes a canonical representation of metadata associated with a node in the filesystem;

determining a chunk of directory elements comprising one or more consecutive directory elements by breaking up the sorted list of directory elements sorted in a canonical order;

computing at a client system a hash of data comprising the chunk of directory elements sorted in canonical order;

determining based at least in part on the computed hash whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system, wherein the determining whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system comprises determining whether the computed hash is previously stored in a hash cache on the client system; and

in the event that the computed cache was not previously stored in the hash cache,

sending, to the remote server, the computed hash and information from which the remote server computes a verification hash, wherein the computed hash is compared to the verification hash to determine whether the corresponding directly elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system; and

sending the one or more directory elements comprising the chunk to a remote server in the event it is determined based at least in part on the computed hash that corresponding directory elements as stored on the remote server are not identical to the directory elements comprising the chunk as stored on the client system,

wherein at least a portion of the one or more directory elements comprising the chunk that are sent to the remote server correspond to at least a subset of changes in data stored at the client system since a previous synchronization between the remote server and the client system.

2. The method of claim 1 , further comprising receiving from the remote server an indication whether a corresponding hash corresponding to the computed hash and computed by the server based on corresponding filesystem information stored on the server matched the computed hash.

3. The method of claim 2 , further comprising adding the computed hash to the hash cache if the response from the server indicates that the corresponding hash matched the computed hash.

4. The method of claim 3 , further comprising adding the computed hash to the hash cache once the one or more directory elements comprising the chunk have been sent to the remote server in response to receiving from the server an indication that the corresponding hash computed at the server did not match the computed hash sent by the client system.

5. The method of claim 1 , further comprising adding the computed hash

to a span of consecutive chunks, if any, the respective hashes of which have been found in the hash cache, in the event the computed hash is found in the hash cache.

6. The method of claim 5 , further comprising synchronizing the span and the chunk if the computed hash is not found in the hash cache.

7. The method of claim 6 , wherein synchronizing the span includes sending to the remote server a hash of directory elements comprising chunks included in the span.

8. The method of claim 7 , further comprising sending directory elements comprising chunks included in the span to the remote server in the event an indication is received that a corresponding hash computed based on directory elements stored on the server that correspond to elements comprising the chunks included in the span as stored on the client system did not match the hash of directory elements comprising chunks included in the span sent by the client system.

9. The method of claim 5 , further comprising:

determining upon reaching an end of the set of elements that the span covers the entire set of elements; and

ensuring that a hash of the entire set of elements is stored in the hash cache.

10. The method of claim 9 , further comprising checking at the outset of a synchronization of the set of elements whether said hash of the entire set of elements is stored in the hash cache; and concluding without further processing that the set of elements are in sync between the client system and the remote server if the hash of the entire set of elements is found in the hash cache.

11. The method of claim 9 , further comprising synchronizing the span if upon reaching the end of the set of elements it is determined that the span does not cover the entire set of elements.

12. The method of claim 1 , wherein each of the directory elements comprises a canonical representation of metadata comprising filesystem information associated with a corresponding file in a directory with which the directory elements are associated.

13. The method of claim 12 , further comprising generating the respective canonical representations.

14. The method of claim 13 , further comprising sorting the directory elements in the canonical order.

15. The method of claim 1 , wherein the information from which the server computes the verification hash comprises an offset of a first file represented by the chunk associated with the hash, and a number of files represented by the chunk associated with the hash.

16. The method of claim 1 , wherein the verification hash is computed based at least in part on the information received from the client system and corresponding information stored at the remote server.

17. A computer system, comprising:

a processor configured to:

sort, in a canonical order, a list of directory elements wherein each directory element includes a canonical representation of metadata associated with a node in the filesystem;

determine a chunk of directory elements comprising one or more consecutive directory elements by breaking up the sorted list of directory elements sorted in a canonical order;

compute a hash of data comprising the chunk of directory elements comprising sorted in canonical order;

determine based at least in part on the computed hash whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system, wherein the determining whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system comprises determining whether the computed hash is previously stored in a hash cache on the client system; and

in the event that the computed cache was not previously stored in the hash cache,

send, to the remote server, the computed hash and information from which the remote server computes a verification hash, wherein the computed hash is compared to the verification hash to determine whether the corresponding directly elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system; and

send the one or more directory elements comprising the chunk to a remote server in the event it is determined based at least in part on the computed hash that corresponding directory elements as stored on the remote server are not identical to the directory elements comprising the chunk as stored on the computer system; and

a storage device coupled to the processor and configured to store data comprising the directory elements,

wherein the one or more directory elements comprising the chunk that are sent to the remote server correspond to at least a subset of changes in data stored on the storage device since a previous synchronization between the remote server and the computer system.

18. The system of claim 17 , further comprising a communication interface couple to the processor and configured to be used by the processor to send the one or more directory elements comprising the chunk to the remote server.

19. The system of claim 17 , wherein each of the directory elements comprises a canonical representation of metadata comprising filesystem information associated with a corresponding file in a directory with which the directory elements are associated and the processor is configured to generate the canonical representations.

20. The system of claim 17 , wherein the processor is configured to sort the directory elements in the canonical order.

21. The system of claim 17 , wherein the processor is further configured to add the computed hash to the hash cache if the one or more directory elements comprising the chunk are sent to the remote server.

22. A computer program product for synchronizing filesystem changes, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

sorting, in a canonical order, a list of directory elements wherein each directory element includes a canonical representation of metadata associated with a node in the filesystem;

determining a chunk of directory elements comprising one or more consecutive directory elements by breaking up the sorted list of directory elements sorted in a canonical order;

computing at a client system a hash of data comprising a chunk of directory elements comprising one or more consecutive directory elements in a set of elements sorted in a canonical order;

determining based at least in part on the computed hash whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system, wherein the determining whether the corresponding directory elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system comprises determining whether the computed hash is previously stored in a hash cache on the client system; and

in the event that the computed cache was not previously stored in the hash cache,

sending, to the remote server, the hash and information from which the remote server computes a verification hash, wherein the hash is compared to the verification hash to determine whether the corresponding directly elements as stored on the remote server are identical to the directory elements comprising the chunk as stored on the client system; and

sending the one or more directory elements comprising the chunk to a remote server in the event it is determined based at least in part on the computed hash that corresponding directory elements as stored on the remote server are not identical to the directory elements comprising the chunk as stored on the client system,

wherein at least a portion of the one or more directory elements comprising the chunk that are sent to the remote server correspond to at least a subset of changes in data stored at the client system since a previous synchronization between the remote server and the client system.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2010
From: HUANG, MARK; ANDERSON, CURTIS; PATTERSON, R. HUGO
To: EMC CORPORATION
Reel/Frame 025381/0770 →
Continuity (1)
Related Publication 20120084333A1 · Apr 5, 2012