IP Library Granted Patent US 12,360,956
Granted Patent B2
US 12,360,956 · App. 18/132,952 · Granted Jul 15, 2025

System and method for policy based synchronization of remote and local file systems

Inventors: Ravi Wijayaratne (San Jose, CA); Remus Koos (San Jose, CA); Ray White (San Jose, CA); Manish Marathe (San Jose, CA); Dmitry Tisnek (Poznan, PL); Harikesavan Krishnan (San Jose, CA); Amrit Jassal (Morgan Hill, CA)
Assignee: Egnyte, Inc.
G06F16/178G06F16/16G06F16/176H04L67/1095
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 12,360,956
App. No.
18/132,952
Granted
Jul 15, 2025
Kind
B2
Abstract

A method for synchronizing a local file system (LFS) and a remote (cloud) file system (RFS) includes the step of storing events indicative of differences between the LFS and the RFS, where the events are associated with file system objects of the LFS and RFS. The method further includes the steps of prioritizing the events, generating file system operations for the events based at least in part on the prioritization of the events, and performing at least some of the file system operations to synchronize the LFS and RFS. Prioritizing the events includes defining a plurality of service classes (e.g., based on type of event, event attribute, etc.), assigning a priority to each of the service classes, and assigning each event to one of said service classes. Systems are also described. The invention allocates limited synchronization resources based on a predefined policy to synchronize important file system objects sooner.

Claims (67)

1. A method for decreasing the time for synchronizing some files in a distributed file system including at least a primary file system stored on a primary file storage system and a secondary file system stored on a secondary file storage system, said method comprising:

synchronizing one or more primary directories of said primary file system with one or more secondary directories of said secondary file system as of a first time;

providing a virtual file system configured to communicate with a user, to provide a representation of said primary file system to said user, to receive file system calls including requests to make changes to said one or more primary directories of said primary file system, and to make alterations to said primary file system based at least in part on said requests;

monitoring said file system calls made to said virtual file system, said file system calls including information indicative of said requested changes to said one or more primary directories of said primary file system;

generating, based on said information included in said monitored file system calls, primary events indicative of said alterations made to said one or more primary directories of said primary file system;

receiving, from said secondary file storage system, secondary events indicative of changes made to said one or more secondary directories of said secondary file system;

organizing said primary events and said secondary events in a first storage location, said primary and said secondary events being organized in a first order;

assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria;

processing said primary events and said secondary events to generate primary file system operations and secondary file system operations, said step of processing said primary events and said secondary events occurring in a second order different from said first order, said second order being based at least in part on said assigned priority levels;

providing said secondary file system operations to said secondary file storage system to facilitate application of said secondary file system operations to said secondary file system, thereby reflecting said changes to said one or more primary file system directories on said secondary file system; and

applying said primary file system operations to said primary file storage system, thereby reflecting said changes to said one or more secondary file system directories on said primary file system.

2. The method of claim 1 , wherein said step of assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria includes assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on an attribute of a file system object associated with said each of said primary events and said secondary events.

3. The method of claim 2 , wherein said attribute is a size of a file associated with each said event of said primary events and said secondary events.

4. The method of claim 3 , wherein said step of assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria includes:

assigning a first group of said primary events and said secondary events to a first priority level, each said event of said first group of said primary events and said secondary events being associated with a file having a size below a threshold size; and

assigning a second group of said primary events and said secondary events to a second priority level, each said event of said second group of said primary events and said secondary events being associated with a file having a size above said threshold size.

5. The method of claim 2 , wherein said attribute is a type of a file associated with each said event of said primary events and said secondary events.

6. The method of claim 2 , wherein said attribute is a last modification time of a file associated with each said event of said primary events and said secondary events.

7. The method of claim 6 , wherein said step of assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria includes:

assigning a first group of said primary events and said secondary events to a first priority level, each said event of said first group of said primary events and said secondary events being associated with a file having a last modified time prior to a threshold time; and

assigning a second group of said primary events and said secondary events to a second priority level, each said event of said second group of said primary events and said secondary events being associated with a file having a last modified time subsequent to said threshold time.

8. The method of claim 1 , wherein:

said step of assigning one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria includes assigning some of said primary events and said secondary events to a first priority level and assigning others of said primary events and said secondary events to a second priority level; and

said step of processing said primary events and said secondary events includes allocating a first quota of synchronization resources for processing said primary events and said secondary events of said first priority level and allocating a second quota of synchronization resources for processing said primary events and said secondary events of said second priority level.

9. The method of claim 8 , wherein:

said step of allocating said first quota of synchronization resources includes allocating a first amount of processor time; and

said step of allocating said second quota of synchronization resources includes allocating a second amount of processor time, said first amount being greater than said second amount.

10. The method of claim 8 , wherein:

said step of allocating a first quota of synchronization resources includes processing only a first number of said primary events and said secondary events of said first priority level; and

said step of allocating a second quota of synchronization resources includes processing only a second number of said primary events and said secondary events of said second priority level, said first number being greater than said second number.

11. A system for decreasing the time for synchronizing some files in a distributed file system including at least a primary file system stored on a primary file storage system and a secondary file system stored on a secondary file storage system, said system comprising:

a hardware server, said hardware server including one or more hardware processors and memory; and wherein

each of said one or more hardware processors is configured to execute code, said code including a native set of instructions for causing each said hardware processor to perform a corresponding set of native operations when executed by said hardware processor; and

said memory is electrically connected to store data and said code, said data and said code including

a virtual file system configured to communicate with a user, to provide a representation of said primary file system to said user, to receive file system calls including requests to make changes to one or more primary directories of said primary file system, and to make alterations to said primary file system based at least in part on said requests,

a synchronizer including a first subset of said native set of instructions configured to synchronize said one or more primary directories of said primary file system with one or more secondary directories of said secondary file system as of a first time,

a data monitor including

a second subset of said native set of instructions configured to monitor said file system calls made to said virtual file system, said file system calls including information indicative of said requested changes to said one or more primary directories of said primary file system,

a third subset of said native set of instructions configured to generate, based on said information included in said monitored file system calls, primary events indicative of said alterations made to said one or more primary directories of said primary file system,

a fourth subset of said native set of instructions configured to receive, from said secondary file storage system, secondary events indicative of changes made to said one or more secondary directories of said secondary file system, and

a fifth subset of said native set of instructions configured to organize said primary events and said secondary events in a first storage location, said primary and said secondary events being organized in a first order,

an admissions controller including

a sixth subset of said native set of instructions configured to assign one of a plurality of different priority levels to each of said primary events and said secondary events based on a predetermined criteria and

a seventh subset of said native set of instructions configured to process, in a second order different from said first order, said primary events and said secondary events to generate primary file system operations and secondary file system operations, said second order being based at least in part on said assigned priority levels, and

an operations handler including

an eighth subset of said native set of instructions configured to provide said secondary file system operations to said secondary file storage system to facilitate application of said secondary file system operations to said secondary file system, thereby reflecting said changes to said one or more primary file system directories on said secondary file system and

a ninth subset of said native set of instructions configured to apply said primary file system operations to said primary file storage system, thereby reflecting said changes to said one or more secondary file system directories on said primary file system.

12. The system of claim 11 , wherein said sixth subset of said native set of instructions is additionally configured to assign one of a plurality of different priority levels to each of said primary events and said secondary events based on an attribute of a file system object associated with said each of said primary events and said secondary events.

13. The system of claim 12 , wherein said attribute is a size of a file associated with each said event of said primary events and said secondary events.

14. The system of claim 13 , wherein said sixth subset of said native set of instructions is additionally configured to:

assign a first group of said primary events and said secondary events to a first priority level, each said event of said first group of said primary events and said secondary events being associated with a file having a size below a threshold size; and

assign a second group of said primary events and said secondary events to a second priority level, each said event of said second group of said primary events and said secondary events being associated with a file having a size above said threshold size.

15. The system of claim 12 , wherein said attribute is a type of a file associated with each said event of said primary events and said secondary events.

16. The system of claim 12 , wherein said attribute is a last modification time of a file associated with each said event of said primary events and said secondary events.

17. The system of claim 16 , wherein said sixth subset of said native set of instructions is additionally configured to:

assign a first group of said primary events and said secondary events to a first priority level, each said event of said first group of said primary events and said secondary events being associated with a file having a last modified time prior to a threshold time; and

assign a second group of said primary events and said secondary events to a second priority level, each said event of said second group of said primary events and said secondary events being associated with a file having a last modified time subsequent to said threshold time.

18. The system of claim 11 , wherein:

said sixth subset of said native set of instructions is additionally configured to assign some of said primary events and said secondary events to a first priority level and assigning others of said primary events and said secondary events to a second priority level;

said seventh subset of said native set of instructions is additionally configured to allocate a first quota of synchronization resources for processing said primary events and said secondary events of said first priority level; and

said seventh subset of said native set of instructions is additionally configured to allocate a second quota of synchronization resources for processing said primary events and said secondary events of said second priority level.

19. The system of claim 18 , wherein:

said first quota of synchronization resources includes a first amount of processor time; and

said second quota of synchronization resources includes a second amount of processor time, said first amount being greater than said second amount.

20. The system of claim 18 , wherein:

said seventh subset of said native set of instructions is configured to process only a first number of said primary events and said secondary events of said first priority level; and

said seventh subset of said native set of instructions is configured to process only a second number of said primary events and said secondary events of said second priority level, said first number being greater than said second number.

Assignments (1)
SECURITY INTEREST Recorded Mar 25, 2025
From: EGNYTE, INC.
To: TCG SENIOR FUNDING, L.L.C., AS COLLATERAL AGENT
Reel/Frame 070614/0319 →
Continuity (5)
Continuation 17161623 · Jan 28, 2021
Continuation 16539925 · Aug 13, 2019
Continuation 14805226 · Jul 21, 2015
Provisional Application 62027201 · Jul 21, 2014
Related Publication 20230325360A1 · Oct 12, 2023
References Cited (29)
US 9275125B1 · Mungur et al. · 2016 [cited by applicant]
US 11449596B2 · Sharma et al. · 2022 [cited by applicant]
US 20030110188A1 · Howard · 2003 [cited by examiner]
US 20030236850A1 · Kodama · 2003 [cited by examiner]
US 20060026168A1 · Bosworth et al. · 2006 [cited by applicant]
US 20060253731A1 · Petruzzo · 2006 [cited by examiner]
US 20070220029A1 · Jones · 2007 [cited by examiner]
US 20100287137A1 · Lyakhovitskiy · 2010 [cited by examiner]
US 20120150799A1 · Matsuzawa · 2012 [cited by examiner]
US 20130041918A1 · Landais · 2013 [cited by applicant]
US 20130067017A1 · Carriere et al. · 2013 [cited by applicant]
US 20130226876A1 · Gati · 2013 [cited by examiner]
US 20130226971A1 · Shoolman et al. · 2013 [cited by applicant]
US 20140040197A1 · Wijayaratne · 2014 [cited by examiner]
US 20140188790A1 · Hunter · 2014 [cited by applicant]
US 20140379647A1 · Smith · 2014 [cited by examiner]
US 20150095442A1 · Jan · 2015 [cited by examiner]
US 20150358406A1 · Scheer · 2015 [cited by examiner]
US 20160094624A1 · Mordani et al. · 2016 [cited by applicant]
US 20160217700A1 · Zimmer et al. · 2016 [cited by applicant]
US 20160224572A1 · Le · 2016 [cited by examiner]
US 20170351700A1 · Takata et al. · 2017 [cited by applicant]
US 20180018347A1 · Yokoi et al. · 2018 [cited by applicant]
Fu et al. [cited by applicant]
Lindlom et al. [cited by applicant]
U.S. Appl. No. 17/480,891, Office Action dated Jul. 18, 2023. [cited by applicant]
U.S. Appl. No. 18/407,147, Office Action dated Sep. 17, 2024. [cited by applicant]
U.S. Appl. No. 17/480,891, Office Action dated May 28, 2025. [cited by applicant]
U.S. Appl. No. 18/407,147, Office Action dated May 13, 2025. [cited by applicant]