← Back to Patent Explorer
US5956712A Expired / Lapsed US ⏱️ 0.0 years remaining

Byte range locking in a distributed environment

Assignee: International Business Machines Corp
•
Filing: 1995-06-07
•
Granted: 1999-09-21
•
Expires: 2015-06-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A client-server distributed computer processing system provides staged byte range locking with three levels of lock complexity and contention. When locking activity for a data object involves a plurality of clients, locking is managed centrally in the server operating environment. When only a single client is involved in requesting a lock on a data object such as a data file or portion of a data file, the requesting client can be permitted to manage the locking locally in the requesting client operating environment. Client-managed locking involves two stages of locking complexity on an object-by-object basis. The first stage of client locking involves only a log of current lock activity and handles relatively simple locking. When locking becomes more complex, the client locking is migrated to a second local locking stage, where more complex data structures can support lock fragmentations that affect various portions of the data object, such as partially overlapped byte ranges. Migration between the three stages of locking uses a high level interface rather than migrating implementation-dependant structures and thereby avoids implementation dependencies and local optimization restrictions. The three-stage locking scheme optimizes performance for the more common cases of lock management, where there is minimal contention and less complexity or overlap in locking scope.

Inventors

  • 👤 Robert Bradley Bennett
  • 👤 Brian Paul Dixon
  • 👤 Eugene Johnson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-05 18:04
CPC Classifications
G; G06; G06F; G06F16/00; G06F16/10; G06F16/17; G06F16/176; G06F16/1767; G06F16/1774; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99938

Claims Analysis

Total Claims: 39
Claim 1
Independent Claim 317 words
A method of providing staged object locks in response to the level of lock complexity and system resource limitation in a distributed computer processing system in which a server that operates in accordance with a server environment is connected to a direct access storage device containing data objects, and a plurality of client processes that operate in accordance with respective client environments, at least one of which has access to the data objects, and that generate requests to the server for locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects, the method comprising the steps of: receiving a lock request at the server from a first client process for an object lock in one of the data objects; determining if any other client process has requested an object lock in the same data object; responding to the lock request of the first client process if it is determined that no other client process has requested a lock for the same data object by granting the requested lock to the first client process and recording the lock locally in the client environment of the first client process; responding to the lock request of the first client process, if it is determined that at least a second client process has locally recorded in its environment a lock for the same data object, by migrating any locks recorded in the respective client environments for an object portion within the same data object to the server environment, wherein the migrating locks for either the respective data objects in their entirety or portions of the data objects is effectuated even when client and server lock managers are different, placing all lock requests for portions of the same data object in contention in the server, and determining a queue order in which the requested locks will be granted to the requesting client processes.
Claim 2
Independent Claim 317 words
A method of providing staged object locks in response to the level of lock complexity and system resource limitation in a distributed computer processing system in which a server that operates in accordance with a server environment is connected to a direct access storage device containing data objects, and a plurality of client processes that operate in accordance with respective client environments, at least one of which has access to the data objects, and that generate requests to the server for locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects, the method comprising the steps of: receiving a lock request at the server from a first client process for an object lock in one of the data objects; determining if any other client process has requested an object lock in the same data object; responding to the lock request of the first client process if it is determined that no other client process has requested a lock for the same data object by granting the requested lock to the first client process and recording the lock locally in the client environment of the first client process; responding to the lock request of the first client process, if it is determined that at least a second client process has locally recorded in its environment a lock for the same data object, by migrating any locks recorded in the respective client environments for an object portion within the same data object to the server environment, wherein the migrating locks for either the respective data objects in their entirety or portions of the data objects is effectuated even when client and server lock managers are different, placing all lock requests for portions of the same data object in contention in the server, and determining a queue order in which the requested locks will be granted to the requesting client processes.
Claim 3
Dependent Claim 54 words
A method as defined in claim 1, wherein the step of recording the lock locally in the client environment of the first client process includes adding an entry to a client lock log in the client environment containing row entries that contain sufficient information to reconstruct the lock request of the first client process.
Claim 4
Dependent Claim 72 words
A method as defined in claim 2, wherein the lock request of the first client process includes data that specifies whether the client process desires recording of locks in the requesting client environment, and the step of recording the lock in the client environment of the first client process is executed only if the received lock request specifies that the first client process desires recording of locks locally in the client environment.
Claim 5
Dependent Claim 97 words
A method as defined in claim 1, further including the steps of: determining if any other client process in the client environment of the first client process has requested an object lock for an overlapping portion of a data object for which a lock is already maintained in the client environment; responding to the lock request by placing all lock requests and locally maintained locks in the client environment for the same data object in contention in the client environment and determining a queue order in which the locks will be granted to the requesting client processes.
Claim 6
Dependent Claim 97 words
A method as defined in claim 4, wherein the step of recording the lock locally in the client environment of the first client process includes the steps of: adding an entry to a client lock log in the client environment that contains row entries having sufficient information to reconstruct the lock request; and storing a client lock structure in the client environment such that the client lock structure identifies the first client process as holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 7
Dependent Claim 113 words
A method as defined in claim 5, wherein the step of migrating all locks for the same data object recorded in the respective client environments to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from the client lock log; generating the original lock request in accordance with the reconstruction information from the client lock log and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted object lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 8
Dependent Claim 52 words
A method as defined in claim 5, wherein the step of storing a client lock structure includes the step of storing sufficient client process and data object information to support splitting the object portion covered by locks recorded in the client environment to reflect the determined queue order for the requested locks.
Claim 9
Dependent Claim 107 words
A method as defined in claim 1, wherein the step of migrating all locks for the same data object recorded in the respective client environments to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from a client lock log; generating the original lock request in accordance with the reconstruction information and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 10
Dependent Claim 27 words
A method as defined in claim 8, further including the step of deleting the client lock log entry and the client lock structure for the migrated lock.
Claim 11
Dependent Claim 71 words
A method as defined in claim 1, further including the steps of: determining if a predetermined client resource limit has been reached that prevents the local recording of a lock in the client environment; responding to the lock request of the first client process, if it is determined that the predetermined client resource limit has been reached, by migrating all object locks recorded in the client environment to the server environment.
Claim 12
Dependent Claim 101 words
A method as defined in claim 10, wherein the step of migrating all locks in the client environment to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from a client lock data structure; generating the original lock request in accordance with the reconstruction information and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 13
Dependent Claim 92 words
A method as defined in claim 1, wherein the first received client process lock request includes data that specifies whether the client process desires to wait for a requested lock if it cannot be granted immediately, and the step of determining if the object portion covered by the requested lock overlaps the object portion covered by another lock and placing all lock requests for the same data object in contention for the lock request is executed only if the received request specifies that the client desires to wait for a requested lock.
Claim 14
Dependent Claim 289 words
A computer processing system comprising: a server that operates in accordance with a server environment; a direct access storage device containing data objects; a plurality of client processes, at least one of which has access to the data objects, that operate according to respective client environments; receiving means for receiving client process requests at the server from the client processes for locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects; cache means for determining if an object lock in a data object requested by a first client process also has been requested by another client process and, if no other client process has requested a lock in the same data object, responding to the lock request of the first client process by granting an object lock to the first client process and recording the lock locally in the client environment of the first client process; and contention means for determining if the object portion covered by the first client process lock request overlaps the object portion covered by at least a second client process request and, if there is overlap, responding to the lock request by migrating any locks recorded in the client environments for the same data object to the server environment, wherein the migrating locks for the respective data objects in their entirety or portions of the data objects is effectuated even when client and server lock managers are different, placing all lock requests for the same data object in contention, and determining a queue order in which the requested locks will be granted to the requesting client processes, whereby staged locking occurs in the system in response to lock complexity level and the system resource limitations.
Claim 15
Dependent Claim 289 words
A computer processing system comprising: a server that operates in accordance with a server environment; a direct access storage device containing data objects; a plurality of client processes, at least one of which has access to the data objects, that operate according to respective client environments; receiving means for receiving client process requests at the server from the client processes for locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects; cache means for determining if an object lock in a data object requested by a first client process also has been requested by another client process and, if no other client process has requested a lock in the same data object, responding to the lock request of the first client process by granting an object lock to the first client process and recording the lock locally in the client environment of the first client process; and contention means for determining if the object portion covered by the first client process lock request overlaps the object portion covered by at least a second client process request and, if there is overlap, responding to the lock request by migrating any locks recorded in the client environments for the same data object to the server environment, wherein the migrating locks for the respective data objects in their entirety or portions of the data objects is effectuated even when client and server lock managers are different, placing all lock requests for the same data object in contention, and determining a queue order in which the requested locks will be granted to the requesting client processes, whereby staged locking occurs in the system in response to lock complexity level and the system resource limitations.
Claim 16
Dependent Claim 38 words
A computer processing system as defined in claim 13, wherein the cache means adds an entry to a client lock log in the client environment that contains row entries with sufficient information to reconstruct the original lock request.
Claim 17
Dependent Claim 61 words
A computer processing system as defined in claim 14, wherein the first received lock request includes data that specifies whether the first client process desires recording of locks locally in the client environment, and the cache means executes its process operations only if the received request specifies that the first client process desires recording of locks locally in the client environment.
Claim 18
Dependent Claim 95 words
A computer processing system as defined in claim 13, wherein the cache means determines if any other client process in the client environment of the first client process has requested an object lock for an overlapping portion of a data object for which a lock is already maintained in the client environment and responds to the lock request by placing all lock requests and locally maintained locks in the client environment for the same data object in contention and determining a queue order in which the locks will be granted to the requesting client processes.
Claim 19
Dependent Claim 91 words
A computer processing system as defined in claim 13, wherein the client environment includes a client cache log and a client lock structure and the cache means adds an entry to a client lock log containing row entries that contain sufficient information to reconstruct the original lock request and stores a client lock structure in the client environment such that the client lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 20
Dependent Claim 92 words
A computer processing system as defined in claim 17, wherein the contention means determines sufficient information to reconstruct the original lock request from the client lock log, generates the original lock request in accordance with the reconstruction information from the client lock log and sends it to the server, and stores a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 21
Dependent Claim 39 words
A computer processing system as defined in claim 17, wherein the cache means stores sufficient client process and data object information in the client environment to support splitting the object portion covered by locks recorded in the client environment.
Claim 22
Dependent Claim 88 words
A computer processing system as defined in claim 13, wherein the contention means determines sufficient information from a client lock data structure to reconstruct the original lock request, generates the original lock request in accordance with the reconstruction information and sends it to the server, and stores a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 23
Dependent Claim 29 words
A computer processing system as defined in claim 20, wherein the contention means further deletes the client lock log entry and the client lock structure for the migrated lock.
Claim 24
Dependent Claim 73 words
A computer processing system as defined in claim 13, wherein the cache means determines if a predetermined client resource limit has been reached that prevents the local recording of a lock in the client environment and responds to the lock request of the first client process, if the cache means determined that the predetermined client resource limit has been reached, by migrating all locks recorded in the client environment to the server environment.
Claim 25
Dependent Claim 118 words
A computer processing system as defined in claim 22, wherein: the client environment includes a client lock data structure, wherein the cache means determines sufficient information to reconstruct the original lock request from the client lock data structure and generates the original lock request in accordance with the reconstruction information in response to a callback command from the server and sends the generated lock request to the server; and the server environment includes a server lock structure, wherein the server records locks in the server lock structure with sufficient information to identify the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 26
Dependent Claim 97 words
A computer processing system as defined in claim 13, wherein the first received client process lock request includes data that specifies whether the client process desires to wait for a requested lock if it cannot be granted immediately, and the contention means for determining if the object portion covered by the requested lock overlaps the object portion covered by another lock and placing all lock requests for the same data object in contention for the lock request performs its process operations only if the received request specifies that the client desires to wait for a requested lock.
Claim 27
Dependent Claim 304 words
A program storage device readable by a server processor machine that includes a direct access storage device containing data files and communicates with a plurality of clients, the program storage device tangibly embodying a program of instructions executable by the processor machine to perform method steps for granting locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects, such that the method steps performed by the server processor machine comprise the steps of: receiving a lock request at the server from a first client process for an object lock in one of the data objects; determining if any other client process has requested an object lock in the same data object; responding to the lock request of the first client process if it is determined that no other client process has requested a lock for the same data object by granting the requested lock to the first client process and recording the lock locally in the client environment of the first client process; responding to the lock request of the first client process, if it is determined that at least a second client process has locally recorded in its environment a lock for the same data object, by migrating any locks recorded in the respective client environments for an object portion within the same data object to the server environment, wherein migrating any locks of either the respective data objects in their entirety or portions of data objects occurs even when client and server lock managers are different, placing all lock requests for the same data object in contention in the server, and determining a queue order in which the requested locks will be granted to the requesting client processes, whereby staged locking occurs in response to lock complexity level and the machine resource limitation.
Claim 28
Dependent Claim 304 words
A program storage device readable by a server processor machine that includes a direct access storage device containing data files and communicates with a plurality of clients, the program storage device tangibly embodying a program of instructions executable by the processor machine to perform method steps for granting locks that cover data object portions comprising respective data objects in their entirety or portions of the data objects, such that the method steps performed by the server processor machine comprise the steps of: receiving a lock request at the server from a first client process for an object lock in one of the data objects; determining if any other client process has requested an object lock in the same data object; responding to the lock request of the first client process if it is determined that no other client process has requested a lock for the same data object by granting the requested lock to the first client process and recording the lock locally in the client environment of the first client process; responding to the lock request of the first client process, if it is determined that at least a second client process has locally recorded in its environment a lock for the same data object, by migrating any locks recorded in the respective client environments for an object portion within the same data object to the server environment, wherein migrating any locks of either the respective data objects in their entirety or portions of data objects occurs even when client and server lock managers are different, placing all lock requests for the same data object in contention in the server, and determining a queue order in which the requested locks will be granted to the requesting client processes, whereby staged locking occurs in response to lock complexity level and the machine resource limitation.
Claim 29
Dependent Claim 61 words
A program storage device as defined in claim 25, wherein the performed method steps cause the local recording of the lock in the client environment of the first client process to include adding an entry to a client lock log in the client environment containing row entries that contain sufficient information to reconstruct the lock request of the first client process.
Claim 30
Dependent Claim 74 words
A program storage device as defined in claim 26, wherein the lock request of the first client process includes data that specifies whether the client process desires recording of locks in the requesting client environment, and the step of recording the lock in the client environment of the first client process is executed only if the received lock request specifies that the first client process desires recording of locks locally in the client environment.
Claim 31
Dependent Claim 102 words
A program storage device as defined in claim 25, wherein the performed method steps include the steps of: determining if any other client process in the client environment of the first client process has requested a lock for an overlapping portion of a data object for which a lock is already maintained in the client environment; responding to the lock request by placing all lock requests and locally maintained locks in the client environment for the same data object in contention in the client environment and determining a queue order in which the locks will be granted to the requesting client processes.
Claim 32
Dependent Claim 101 words
A program storage device as defined in claim 28, wherein the performed method step of recording the lock locally in the client environment of the first client process includes the steps of: adding an entry to a client lock log in the client environment that contains row entries having sufficient information to reconstruct the lock request; and storing a client lock structure in the client environment such that the client lock structure identifies the first client process as holding the granted object lock, the data object for which the lock has been granted, and the range of the corresponding object lock.
Claim 33
Dependent Claim 116 words
A program storage device as defined in claim 29, wherein the performed method step of migrating all locks for the same data object recorded in the respective client environments to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from the client lock log; generating the original lock request in accordance with the reconstruction information from the client lock log and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 34
Dependent Claim 56 words
A program storage device as defined in claim 29, wherein the performed method step of storing a client lock structure includes the step of storing sufficient client process and data object information to support splitting the object portions covered by locks recorded in the client environment to reflect the determined queue order for the requested locks.
Claim 35
Dependent Claim 111 words
A program storage device as defined in claim 25, wherein the performed method step of migrating all locks for the same data object recorded in the respective client environments to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from a client lock log; generating the original lock request in accordance with the reconstruction information and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 36
Dependent Claim 34 words
A program storage device as defined in claim 32, wherein the performed method steps further include the step of deleting the client lock log entry and the client lock structure for the migrated lock.
Claim 37
Dependent Claim 77 words
A program storage device as defined in claim 32, wherein the performed method steps further include the steps of: determining if a predetermined client resource limit has been reached that prevents the local recording of a lock in the client environment; responding to the lock request of the first client process, if it is determined that the predetermined client resource limit has been reached, by migrating all locks recorded in the client environment to the server environment.
Claim 38
Dependent Claim 105 words
A program storage device as defined in claim 34, wherein the performed method step of migrating all locks in the client environment to the server environment includes the steps of: determining sufficient information to reconstruct the original lock request from a client lock data structure; generating the original lock request in accordance with the reconstruction information and sending it to the server; and storing a server lock structure in the server environment such that the server lock structure identifies the client process holding the granted lock, the data object for which the lock has been granted, and the object portion covered by the corresponding lock.
Claim 39
Dependent Claim 94 words
A program storage device as defined in claim 32, wherein the first received client process lock request includes data that specifies whether the client process desires to wait for a requested lock if it cannot be granted immediately, and the step of determining if the object portion covered by the requested lock overlaps the object portion covered by another lock and placing all lock requests for the same data object in contention for the lock request is executed only if the received request specifies that the client desires to wait for a requested lock.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-09-20 2003-03-22 2003-09-21 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-09-20 2007-03-22 2007-09-21 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-09-20 2011-03-22 2011-09-21 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag