IP Library Granted Patent US 12705211
Granted Patent B2
US 12705211 · App. 17/301,283 · Granted Aug 11, 2026

Multi-protocol lock manager for distributed lock management

Inventors: Shyamprasad Chaman (Bangalore, IN); Rasmit Ranjan Swain (Bangalore, IN); Ashwani Raina (Jammu, IN); Ketan Pant (Bangalore, IN); Meharpraveen Maddineni (Bangalore, IN)
Assignee: NetApp, Inc.
G06F16/1774
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 12705211
App. No.
17/301,283
Granted
Aug 11, 2026
Kind
B2
Abstract

Techniques are provided for distributed lock and authorities management. An origin may host a resource, such as a file, that may be accessed by clients through a plurality of caches. The origin may receive a first retrieve request from a first endpoint to obtain a first authority for a resource. The origin may delegate the first authority for the resource to the first endpoint. The origin may delegate the second authority for the resource to the second endpoint in response to determining that the delegated authority information and a set of locks held by the origin do not conflict with a second retrieve request from a second endpoint to obtain a second authority.

Claims (63)

1 . A method comprising:

receiving, at an origin hosting a resource in a distributed storage system, a first retrieve request from a first endpoint to obtain the first authority for the resource;

determining, at the origin, that the first retrieve request is compatible with delegated authority information maintained by the origin and with a set of locks held by the origin for the resource;

sending, from the origin to the first endpoint, a first delegation including identification of the first authority for the resource, wherein the first authority explicitly specifies a first set of actions that the first endpoint is permitted to perform on the resource and a second set of actions that other endpoints are denied from performing on the resource, the first set of actions including permission for the first endpoint to create one or more locks against the resource;

causing, by the origin, the first endpoint to create a first lock against the resource based on the first authority;

causing, by the origin, the first endpoint to perform, locally by the first endpoint instead of at the origin, based on the first lock against the resource, at least one first action from the first set of actions on the resource;

receiving, at the origin, a second retrieve request from a second endpoint to obtain a second authority for the resource;

determining, at the origin, that the second retrieve request is compatible with the delegated authority information maintained by the origin and with the set of locks held by the origin for the resource;

sending, from the origin to the second endpoint, a second delegation including identification of the second authority for the resource, wherein the second authority explicitly specifies a third set or actions that the second endpoint is permitted to perform on the resource and a fourth set of actions that the origin and the first endpoint are denied from performing on the resource;

causing, by the origin, the second endpoint to create a second lock against the resource based on the second authority; and

causing, by the origin, the second endpoint to perform, locally at the second endpoint instead of at the origin, based on the second lock, at least one second action from the third set of actions.

2 . The method of claim 1 , wherein the first and second locks for the resource are distributed across the first and second endpoints.

3 . The method of claim 1 , further comprising:

accessing, at the origin, the resource in accordance with a third lock specifying a set of actions that the origin has permission to perform on the resource and a set of actions that other endpoints including the first and second endpoints are denied from performing on the resource.

4 . The method of claim 1 , wherein the determining that the delegated authority information is compatible with the second retrieve request is in response to determining that a set of allowed dispositions in the delegated authority information is compatible with the fourth set of actions and in response to determining that a set of denied dispositions in the delegated authority information is compatible with the third set of actions.

5 . The method of claim 1 , wherein the determining that the set of locks is compatible with the second retrieve request is in response to determining that an allowed disposition of the set of locks is compatible with the fourth set of actions and in response to determining that a denied disposition of the set of locks is compatible with the third set of actions.

6 . The method of claim 1 , further comprising: transmitting, from the origin to the second endpoint, a downgrade request to surrender a portion of the second authority for the resource.

7 . The method of claim 1 , wherein the origin's view of the first endpoint's authority for the resource is a superset of the first endpoint's view of the first endpoint's authority for the resource.

8 . The method of claim 1 , further comprising:

receiving, at the origin, a third retrieve request from a third endpoint to obtain a third authority for the resource; and

denying the third retrieve request in response to determining that the third authority conflicts with the set of locks held by the origin.

9 . The method of claim 1 , further comprising:

receiving, at the origin, a third retrieve request from a third endpoint to obtain a third authority for the resource; and

denying the third retrieve request in response to determining that the third authority conflicts with the first authority and in response to determining that the first endpoint is in a disconnected mode.

10 . The method of claim 1 , further comprising:

receiving, at the origin, a third retrieve request from a third endpoint to obtain a third authority that conflicts with the first authority; and

granting the third retrieve request in response to determining that the first endpoint is in a disconnected mode.

11 . The method of claim 1 , wherein the first retrieve request specifies a byte range including a minimum value and a maximum value of the resource.

12 . A non-transitory machine-readable medium having stored thereon instructions for processing a retrieve request at an origin hosting a resource that is cached at a first endpoint in a distributed storage system, comprising machine executable code which when executed by at least one processor of an origin, causes the origin to:

receive a retrieve request from the first endpoint to obtain a first authority for the resource;

determine that the retrieve request is compatible with delegated authority information maintained by the origin and with a set of locks held by the origin for the resource;

transmit, to the first endpoint, a first delegation including identification of a first authority for the resource, wherein the first authority explicitly specifies a first set of actions that the first endpoint is permitted to perform on the resource and a second set of actions that other endpoints are denied from performing on the resource;

cause the first endpoint to create a first lock against the resource based on the first authority;

cause the first endpoint to perform, locally at the first endpoint and not at the origin, based on the first lock against the resource, at least one first action from the first set of actions on the resource;

receive a second retrieve request from a second endpoint to obtain a second authority for the resource;

determine that the second retrieve request is compatible with the delegated authority information maintained by the origin and with the set of locks held by the origin for the resource;

send, to the second endpoint, a second delegation including identification of the second authority for the resource, wherein the second authority explicitly specifies a third set of actions that the second endpoint is permitted to perform on the resource and a fourth set of actions that the origin and the first endpoint are denied from performing on the resource; and

cause at the second endpoint to perform, locally at the second endpoint instead of at the origin, based on the second lock against the resource at least one second action from the third set of actions on the resource.

13 . The non-transitory machine-readable medium of

claim 12 , further comprising code, which when executed causes the machine to: send, from the origin, the delegation of the first authority including identification of the first authority to the first endpoint in response to determining that the retrieve request is compatible with the origin's updated delegated authority information, the identification including information about the first set of actions and the second set of actions.

14 . The non-transitory machine-readable medium of claim 12 , further comprising code, which when executed causes the machine to:

deny, at the origin, the retrieve request in response to determining that the retrieve request conflicts with the origin's updated delegated authority information.

15 . The non-transitory machine-readable medium of claim 12 , wherein the resource is cached at the first endpoint.

16 . The non-transitory machine-readable medium of claim 12 , further comprising code, which when executed causes the machine to:

create, at the origin, a second lock on the resource in response to receiving a request from a host device to perform an operation on the resource.

17 . A computing device comprising:

a memory containing a machine-readable medium comprising machine executable code having stored thereon instructions for processing a retrieve request received at an origin hosting a resource in a distributed storage system; and

a processor coupled to the memory, the processor configured to execute the machine executable code to:

receive, at an origin hosting a resource in a distributed storage system, a first retrieve request from a first endpoint to obtain the first authority for the resource;

determine, at the origin, that the first retrieve request is compatible with delegated authority information maintained by the origin and with a set of locks held by the origin for the resource;

send, from the origin to the first endpoint, a first delegation including identification of the first authority for the resource, wherein the first authority explicitly specifies a first set of actions that the first endpoint is permitted to perform on the resource and a second set of actions that other endpoints are denied from performing on the resource, the first set of actions including permission for the first endpoint to create one or more locks against the resource;

cause, by the origin, the first endpoint to create a first lock against the resource based on the first authority;

cause, by the origin, the first endpoint to perform, locally by the first endpoint instead of at the origin, based on the first lock against the resource, at least one first action from the first set of actions on the resource;

receive, at the origin, a second retrieve request from a second endpoint to obtain a second authority for the resource;

determine, at the origin, that the second retrieve request is compatible with the delegated authority information maintained by the origin and with the set of locks held by the origin for the resource;

send, from the origin to the second endpoint, a second delegation including identification of the second authority for the resource, wherein the second authority explicitly specifies a third set or actions that the second endpoint is permitted to perform on the resource and a fourth set of actions that the origin and the first endpoint are denied from performing on the resource;

cause, by the origin, the second endpoint to create a second lock against the resource based on the second authority; and

cause, by the origin, the second endpoint to perform, locally at the second endpoint instead of at the origin, based on the second lock, at least one second action from the third set of actions.

18 . The computing device of claim 17 , wherein the first retrieve request specifies a byte range authority of the resource.

19 . The computing device of claim 17 , wherein the processor is further configured to execute the machine executable code to:

create, at the origin, a third lock based on a third authority that is compatible with the first and second authorities in response to receiving a request from a host device to perform an operation on the resource.

20 . The computing device of claim 17 , wherein the processor is further configured to execute the machine executable code to:

discard, at the origin, a third retrieve request from a third endpoint to obtain a third authority in response to transmission of a downgrade request.