Byte range locking in a distributed environment
First Claim
1. 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.
1 Assignment
0 Petitions
Accused Products
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.
-
Citations
36 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. 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. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. 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. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
Specification