# US 10,311,153 B2 · Versioned file system with global lock

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,311,153 B2
- Document ID: US10311153B2
- Status: Granted
- Kind: B2
- Application number: 14/735,345
- Filed: 2015-06-10
- Published: 2016-06-02
- Granted: 2019-06-04
- Earliest claimed: 2014-11-28
- Assignees: Nasuni Corporation
- Applicants: Nasuni Corporation
- Inventors: Robert S. Mason, Jr.; David M. Shaw; Kevin W. Baughman; Christopher S. Lacasse; Matthew M. McDonald; Russell A. Neufeld; Akshay K. Saxena
- Web page: https://patentgrep.com/patent/US10311153B2

## CPC

- G06F 16/1774: {Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files}
- G06F 16/1827: {Management specifically adapted to NAS (management of storage area networks [SAN] G06F3/067)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A versioned file system comprising network accessible storage is provided. Aspects of the system include globally locking files or groups of files so as to better control the stored files in the file system and to avoid problems associated with simultaneous remote access or conflicting multiple access requests for the same files. A method for operating, creating and using the global locks is also disclosed. A multiprotocol global lock can be provided for filing nodes that have multiple network protocols for generating local lock requests.

## Claims

### Claim 1

A method of locking a shared file stored in a cloud-based network-attached file system (NAS), the method carried out at a local file system, comprising:
creating a snapshot of a most recent version of the shared file without triggering a copy-on-write (COW) event in the local file system;
intercepting a local lock request initiated by a user of a local file system, the local lock request for write access to the shared file;
translating the local lock request having a first local protocol to a global lock request having a common lock format recognized and used by a central lock server to manage locking of the shared file, the common lock format comprising a unique identifier handle, a requested lock mode, and a protocol associated with the local lock request;
sending the global lock request from the local file system to the central lock server; and
receiving, at the local file system and from the central lock server, a global lock for the shared file together with a latest version of the shared file when the central lock server determines that the global lock is available, the latest version of the shared file having been retrieved from the cloud-based NAS by the central lock server using the unique identifier handle.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first local protocol is Network File System (NFS).

### Claim 3 (depends on 1)

The method of claim 1, wherein the first local protocol is Server Message Block (SMB) or Common Internet File System (CIFS).

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
intercepting a second local lock request initiated by a second user of a second local file system, the second local lock request for write access to the shared file, the second local lock request having a second local protocol, the second local protocol comprising Server Message Block (SMB) or Common Internet File System (CIFS);
translating the second local lock request having the second local protocol to a second global lock request having the common protocol;
sending the second global lock request to the central lock server; and
receiving a multiprotocol global lock for the shared file if the central lock server determines that the multiprotocol global lock is available.

### Claim 5 (depends on 1)

The method of claim 1, further comprising marking a parent directory of the shared file as modified.

### Claim 6 (depends on 1)

The method of claim 1, further comprising merging a file data for the shared file in a local cache prior to locking a file path of the shared file.

### Claim 7 (depends on 6)

The method of claim 6, further comprising determining whether a network file data stored in a server is newer than a local file data stored in the local cache.

### Claim 8 (depends on 7)

The method of claim 7, further comprising, prior to releasing the global lock, discarding the network file data if the local file data of the shared file is newer than the network file data of the shared file.

### Claim 9 (depends on 8)

The method of claim 8, further comprising discarding the network file data if a lock write version value of the shared file is less than a lock push version value of the shared file.

### Claim 10 (depends on 8)

The method of claim 8, further comprising merging the local file data with the network file data if a lock write version value of the shared file is greater than a lock push version value of the shared file.

### Claim 11 (depends on 1)

The method of claim 1, further comprising storing a local lock release request in a local lock cache for a given time.

### Claim 12 (depends on 11)

The method of claim 11, further comprising reestablishing the global lock if a second local lock request is generated while the local lock release is stored in the local cache.

### Claim 13 (depends on 12)

The method of claim 12, further comprising resetting an existing lock mode of the global lock if the new lock mode for the second lock request is different than the existing lock mode.

### Claim 14 (depends on 13)

The method of claim 13, wherein the reset lock mode is inclusive of an existing access level of the existing lock mode and a new access level of the new lock mode.

### Claim 15 (depends on 13)

The method of claim 13, wherein the reset lock mode is inclusive of an existing share level of the existing lock mode and a new share level of the new lock mode.

### Claim 16 (depends on 11)

The method of claim 11, further comprising:
translating the local lock release to a global lock release having the common lock format; and
sending the global lock release to the central lock server.

### Claim 17 (depends on 1)

The method of claim 1, further comprising updating a central lock database with an identity of the shared file associated with the global lock released by the central lock server.

### Claim 18 (depends on 1)

The method of claim 1, further comprising determining whether a requested lock mode is available.

### Claim 19 (depends on 18)

The method of claim 18, wherein the requested lock mode includes an exclusive write access or a shared write access.

### Claim 20 (depends on 18)

The method of claim 18, further comprising determining if the requested lock mode is compatible with an existing lock mode for an existing global lock on the shared file.

### Claim 21 (depends on 20)

The method of claim 20, wherein determining if the requested lock mode is compatible with an existing lock mode comprises comparing the first local protocol associated with the global lock request with a second local protocol associated with the existing global lock.

### Claim 22 (depends on 1)

The method of claim 1, further comprising storing a new file request on the central lock server.

### Claim 23 (depends on 22)

The method of claim 22, further comprising polling the central lock server for new files or new objects that have not been merged into the NAS.

### Claim 24 (depends on 22)

The method of claim 22, further comprising merging a new file generated by the new file request into the NAS.

### Claim 25 (depends on 1)

The method of claim 1, further comprising promoting the local lock request to a write lock that allows read-only access to others users of the NAS.

### Claim 26 (depends on 1)

The method of claim 1, further comprising honoring an access flag and a shared access flag associated with the local lock request.

### Claim 27 (depends on 1)

The method of claim 1, further comprising initiating a lock peek when the user opens the shared file.

### Claim 28 (depends on 27)

The method of claim 27, wherein the lock peek comprises retrieving at least one of a file handle, a handle version, a first handle, and a lock push version.

### Claim 29 (depends on 28)

The method of claim 28, wherein the lock peek is retrieved from a local lock cache.

### Claim 30 (depends on 28)

The method of claim 28, wherein the lock peek is retrieved from the central lock server.

### Claim 31 (depends on 30)

The method of claim 30, further comprising storing information retrieved from the lock peek in a local lock cache for a given time.
