IP Library Granted Patent US 10,733,147
Granted Patent B2
US 10,733,147 · App. 15/259,071 · Granted Aug 4, 2020

Distributed management of file modification-time field

Inventors: Ezra Hoch (Tel Aviv, IL); Eli Weissbrem (Rehovot, IL)
Assignee: Google LLC
G06F16/1734G06F16/11G06F16/1767G06F16/1847
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 10,733,147
App. No.
15/259,071
Granted
Aug 4, 2020
Kind
B2
Abstract

A method for data storage includes assigning multiple different portions of a given object, which is stored in non-volatile storage, for access by multiple respective software modules running on one or more processors. Storage operations are performed by the software modules in the portions of the given object. Respective local values, which are indicative of most-recent times the storage operations were performed in the given object by the respective software modules, are updated by the software modules. A global value is updated for the given object, by consolidating updates of the local values performed by the software modules.

Claims (48)

1. A method for data storage, comprising:

using File System (FS) software executing on data processing hardware, storing a file in non-volatile storage in communication with the data processing hardware, wherein the file comprises a latest-time value that is exposed to external applications and is indicative of a most-recent time that a storage operation was performed in the file;

executing, by the FS software, a software owner module, the software owner module designated as an owner of the file and configured to manage the latest-time value of the file;

executing, by the FS software, a plurality of software mapper modules on the data processing hardware, each software mapper module executing on the data processing hardware configured to:

access a respective portion of the file stored in the non-volatile storage, the respective portion of the file assigned to the corresponding software mapper module by the software owner module, and the respective portion of the file different than the respective portions of the file assigned to each of the other software mapper modules of the plurality of software mapper modules; and

manage and update a respective local value indicative of a most-recent time at which the respective portion of the file was subject to a storage operation by the corresponding software mapper module; and

permitting, by the FS software, the plurality of software mapper modules to operate on the file simultaneously, while continually maintaining the latest-time value exposed to the external applications by:

each time one of the plurality of software mapper modules performs the storage operation on the respective portion of the file assigned to the corresponding software mapper module by the software owner module, the corresponding software mapper module:

updates the respective local value of the respective portion of the file managed by the corresponding software mapper module,

stores the updated respective local value of the respective portion of the file in the non-volatile storage, and

passes a request to update the latest-time value to the software owner module designated as the owner of the file, the request including the updated respective local value; and

updating, by the software owner module designated as the owner of the file, the latest-time value that is exposed to the external applications for the file, by consolidating the latest-time value with update requests received from the software mapper modules, wherein consolidating the latest-time value with the update requests comprises:

comparing the updated local value of the received update requests to the latest-time value;

when the updated local value is greater than the latest-time value, replacing the latest-time value with the updated local value; and

when the updated local value is not greater than the latest-time value, incrementing the latest-time value by a predefined increment, and

wherein the software owner module executing by the FS software on the data processing hardware prevents more than one of the plurality of software mapper modules from performing the storage operation on a same portion of the file simultaneously.

2. The method according to claim 1 , wherein the storage operations comprise write operations that modify content of the file, and wherein the local values and the latest-time value comprise modification-time (mTime) values that are indicative of most-recent times the content of the file was modified.

3. The method according to claim 2 , wherein updating the local modification-time values comprises temporarily storing the updated local modification-time values together with a corresponding modified content in the non-volatile storage.

4. The method according to claim 3 , further comprising generating and storing a snapshot of the file that comprises the modified content, and deleting the temporarily-stored updated local modification-time values from the non-volatile storage.

5. The method according to claim 2 , further comprising, upon recovery from a failure, determining a count of currently-open write operations to the file, and setting the latest-time value that is exposed to the external applications to an updated value depending on the count.

6. The method according to claim 1 , wherein the predefined increment comprises a finest-resolution increment in a format of the latest-time value.

7. The method according to claim 1 , further comprising, upon recovery from a failure, setting the global modification-time to an updated value depending on the predefined increment.

8. The method according to claim 1 , wherein the storage operations comprise read and write operations, and wherein the local values and the latest-time value comprise access-time (aTime) values that are indicative of most-recent times the file was accessed.

9. A computing system, comprising:

a non-volatile storage; and

one or more processors executing File System (FS) software, which are configured to:

using the FS software, store a file in the non-volatile storage, wherein the file comprises a latest-time value that is exposed to external applications and is indicative of a most-recent time that a storage operation was performed on the file;

execute, by the FS software, a software owner module, the software owner module designated as an owner of the file and configured to manage the latest-time value of the file;

execute, by the FS software, a plurality of software mapper modules on the data processing hardware, each software mapper module executing on the data processing hardware configured to:

access a respective portion of the file stored in the non-volatile storage, the respective portion of the file assigned to the corresponding software mapper module by the software owner module, and the respective portion of the file different than the respective portions of the file assigned to each of the other software mapper modules of the plurality of software mapper modules; and

manage and update a respective local value indicative of a most-recent time at which the respective portion of the file was subject to a storage operation by the corresponding software mapper module; and

permit, by the FS software, the plurality of software mapper modules to operate on the file simultaneously, while continually maintaining the latest-time value exposed to the external applications by:

each time one of the plurality of software mapper modules performs the storage operation on the respective portion of the file assigned to the corresponding software mapper module by the software owner module, the corresponding software mapper module:

updates the respective local value of the respective portion of the file managed by the corresponding software mapper module,

stores the updated respective local value of the respective portion of the file in the non-volatile storage, and

passes a request to update the latest-time value to the software owner module designated as the owner of the file, the request including the updated respective local value; and

updating, by the software owner module designated as the owner of the file, the latest-time value that is exposed to the external applications for the file, by consolidating the latest-time value with update requests received from the software mapper modules, wherein consolidating the latest-time value with the update requests comprises:

comparing the updated local value of the received update requests to the latest-time value;

when the updated local value is greater than the latest-time value, replacing the latest-time value with the updated local value; and

when the updated local value is not greater than the latest-time value, incrementing the latest-time value by a predefined increment, and

wherein the software owner module executing by the FS software on the data processing hardware prevents more than one of the plurality of software mapper modules from performing the storage operation on a same portion of the file simultaneously.

10. The system according to claim 9 , wherein the storage operations comprise write operations that modify content of the file, and wherein the local values and the latest-time value comprise modification-time (mTime) values that are indicative of most-recent times the content of the file was modified.

11. The system according to claim 10 , wherein the one or more processors are configured to temporarily store the updated local modification-time values together with a corresponding modified content in the non-volatile storage.

12. The system according to claim 11 , wherein the one or more processors are configured to generate and store a snapshot of the file that comprises the modified content, and to delete the temporarily-stored updated local modification-time values from the non-volatile storage.

13. The system according to claim 10 , wherein, upon recovery from a failure, the one or more processors are configured to determine a count of currently-open write operations to the file, and to set the global modification-time to an updated value depending on the count.

14. The system according to claim 9 , wherein the predefined increment comprises a finest-resolution increment in a format of the latest-time value.

15. The system according to claim 9 , wherein, upon recovery from a failure, the one or more processors are configured to set the global modification-time to an updated value depending on the predefined increment.

16. The system according to claim 9 , wherein the storage operations comprise read and write operations, and wherein the local values and the latest-time value comprise access-time (aTime) values that are indicative of most-recent times the file was accessed.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2019
From: ELASTIFILE LTD
To: GOOGLE LLC
Reel/Frame 050664/0385 →
RELEASE OF SECURITY INTEREST Recorded Oct 8, 2019
From: SILICON VALLEY BANK
To: ELASTIFILE LTD
Reel/Frame 050652/0955 →
SECURITY INTEREST Recorded Jun 8, 2017
From: ELASTIFILE LTD
To: SILICON VALLEY BANK
Reel/Frame 042653/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 8, 2016
From: HOCH, EZRA; WEISSBREM, ELI
To: ELASTIFILE LTD.
Reel/Frame 039667/0858 →
Continuity (2)
Provisional Application 62243154 · Oct 19, 2015
Related Publication 20170109366A1 · Apr 20, 2017