Locking technique for control and synchronization
First Claim
1. A method for controlling access to shared data comprising:
- sending a message requesting exclusive access to said shared data from a requester to any other users of said shared data included in a list associated with said shared data indicating users currently accessing said shared data for non-exclusive read access, wherein a user is added to said list after receiving approval messages from any users included in a second list associated with said shared data, said second list indicating users interested in accesses to said shared data;
said requester receiving approval messages from the other users of said shared data included in said list;
said requester obtaining a lock on a first copy of said shared data included in a global storage location upon receiving said approval messages; and
said requester, in response to obtaining said lock, modifying said first copy of shared data, wherein said requester releases said lock when said requester has completed said modifying.
3 Assignments
0 Petitions
Accused Products
Abstract
Described are techniques used in a computer system for handling data operations to storage devices. A switching fabric includes one or more fast paths for handling lightweight, common data operations and at least one control path for handling other data operations. A control path manages one or more fast paths. The fast path and the control path are utilized in mapping virtual to physical addresses using mapping tables. The mapping tables include an extent table of one or more entries corresponding to varying address ranges. The size of an extent may be changed dynamically in accordance with a corresponding state change of physical storage. The fast path may cache only portions of the extent table as needed in accordance with a caching technique. The fast path may cache a subset of the extent table stored within the control path. A set of primitives may be used in performing data operations. A locking mechanism is described for controlling access to data shared by the control paths.
355 Citations
54 Claims
-
1. A method for controlling access to shared data comprising:
-
sending a message requesting exclusive access to said shared data from a requester to any other users of said shared data included in a list associated with said shared data indicating users currently accessing said shared data for non-exclusive read access, wherein a user is added to said list after receiving approval messages from any users included in a second list associated with said shared data, said second list indicating users interested in accesses to said shared data;
said requester receiving approval messages from the other users of said shared data included in said list;
said requester obtaining a lock on a first copy of said shared data included in a global storage location upon receiving said approval messages; and
said requester, in response to obtaining said lock, modifying said first copy of shared data, wherein said requester releases said lock when said requester has completed said modifying. - View Dependent Claims (2, 5, 6, 9, 11, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
-
-
3. A method for controlling access to shared data comprising:
-
sending a message from a requester to at least one other user of said shared data accessing said shared data for read access;
said requester receiving approval messages from each of said at least one other user;
said requester obtaining a lock on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another;
said requester, in response to obtaining said lock, modifying said first copy of shared data, and wherein a local copy of said shared data is divided into varying size portions and said first copy is a global copy that is divided into corresponding fixed size portions, the method further comprising;
determining at least one lock of a fixed size portion corresponding to at least one portion of varying size; and
obtaining said at least one lock of a fixed size portion to obtain a lock on a corresponding varying size portion. - View Dependent Claims (4)
-
-
7. A method for controlling access to shared data comprising:
-
sending a message from a requester to at least one other user of said shared data accessing said shared data for read access;
said requester receiving approval messages from each of said at least one other user;
said requester obtaining a lock on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another;
said requester, in response to obtaining said lock, modifying said first copy of shared data;
prior to each of said other users sending an approval message, each of said other users invalidating all local copies of said shared data, and wherein said requester is a first requester and the method further comprising;
a second requester sending a message to at least one user requesting permission to obtain said lock after said first requester has obtained said lock; and
said first requester sending a message to said second requester granting permission to obtain said lock, said first requester being an owner of said lock until said second requester obtains permission to obtain said lock, wherein said second requester is unavailable after obtaining said lock. - View Dependent Claims (8)
-
-
10. A method for controlling access to shared data comprising:
-
sending a message from a requester to at least one other user of said shared data accessing said shared data for read access;
said requester receiving approval messages from each of said at least one other user;
said requester obtaining a lock on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another;
said requester, in response to obtaining said lock, modifying said first copy of shared performing a snapshot operation, wherein, said snapshot operation pushes data from a first device to a second snapshot device, included in said shared data is metadata used in accessing a physical data location for a data operation, the method comprising;
acquiring at least one lock for a portion of metadata associated with said first device;
acquiring at least one lock on said second device corresponding to those of said first device;
determining if data has already been copied from said first to said second device;
if said data has not been copied, copying said data;
updating said metadata to indicate a state change in said second device that data has been copied from said first device;
waiting for read operations to said first device to complete; and
updating said metadata to indicate a state change in said first device that data has been copied from said first device.
-
-
12. A computer program product that controls access to shared data comprising:
-
machine executable code that sends a message requesting exclusive access to said shared data from a requester to any other users of said shared data included in a list associated with said shared data indicating users currently accessing said shared data for non-exclusive read access, wherein a user is added to said list after receiving approval messages from any users included in a second list associated with said shared data, said second list indicating users interested in accesses to said shared data;
machine executable code that receives approval messages for said requester from the other users of said shared data included in said list;
machine executable code that obtains a lock for said requester on a first copy of said shared data included in a global storage location upon receiving said approval messages; and
machine executable code that, in response to obtaining said lock, causes said requester to modify said first copy of shared data, wherein said requester releases said lock when modification by said requester is complete. - View Dependent Claims (13, 17, 20, 22, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
-
14. A computer program product that controls access to shared data comprising:
-
machine executable code that sends a message from a requester to at least one other user of said shared data accessing said shared data for read access;
machine executable code that receives approval messages for said requester from each of said at least one other user;
machine executable code that obtains a lock for said requester on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another; and
machine executable code that, in response to obtaining said lock, causes said requester to modify said first copy of shared data; and
wherein a local copy of said shared data is divided into varying size portions and said first copy is a global copy that is divided into corresponding fixed size portions, the computer program product further comprising;
machine executable code that determines at least one lock of a fixed size portion corresponding to at least one portion of varying size; and
machine executable code that obtains said at least one lock of a fixed size portion to obtain a lock on a corresponding varying size portion. - View Dependent Claims (15)
-
-
16. A computer program product that controls access to shared data comprising:
-
machine executable code that sends a message from a requester to at least one other user of said shared data accessing said shared data for read access;
machine executable code that receives approval messages for said requester from each of said at least one other user;
machine executable code that obtains a lock for said requester on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another;
machine executable code that, in response to obtaining said lock, causes said requester to modify said first copy of shared data;
machine executable code that, prior to each of said other users sending an approval message, causes each of said other users to invalidate all local copies of said shared data; and
machine executable code that causes a user to send a non-approval message to said requester such that said requester is not granted permission to obtain said lock.
-
-
18. A computer program product that controls access to shared data comprising:
-
machine executable code that sends a message from a requester to at least one other user of said shared data accessing said shared data for read access;
machine executable code that receives approval messages for said requester from each of said at least one other user;
machine executable code that obtains a lock for said requester on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another;
machine executable code that, in response to obtaining said lock, causes said requester to modify said first copy of shared data;
machine executable code that, prior to each of said other users sending an approval message, causes each of said other users to invalidate all local copies of said shared data; and
wherein said requester is a first requester and the computer program product further comprising;
machine executable code that causes a second requester to send a message to at least one user requesting permission to obtain said lock after said first requester has obtained said lock; and
machine executable code that causes said first requester to send a message to said second requester granting permission to obtain said lock said first requester being an owner of said lock until said second requester obtains permission to obtain said lock, wherein said second requester is unavailable after obtaining said lock. - View Dependent Claims (19)
-
-
21. A computer program product that controls access to shared data comprising:
-
machine executable code that sends a message from a requester to at least one other user of said shared data accessing said shared data for read access;
machine executable code that receives approval messages for said requester from each of said at least one other user;
machine executable code that obtains a lock for said requester on a first copy of said shared data included in a global storage location upon receiving said approval messages wherein said requester releases said lock when said lock is requested by another; and
machine executable code that, in response to obtaining said lock, causes said requester to modify said first copy of shared data;
machine executable code that performs a snapshot operation; and
wherein, said snapshot operation pushes data from a first device to a second snapshot device, included in said shared data is metadata used in accessing a physical data location for a data operation, the computer program product comprising;
machine executable code that acquires at least one lock for a portion of metadata associated with said first device;
machine executable code that acquires at least one lock on said second device corresponding to those of said first device;
machine executable code that determines if data has already been copied from said first to said second device;
machine executable code that, if said data has not been copied, copies said data;
machine executable code that updates said metadata to indicate a state change in said second device that data has been copied from said first device;
machine executable code that waits for read operations to said first device to complete; and
machine executable code that updates said metadata to indicate a state change in said first device that data has been copied from said first device.
-
-
33. A method for controlling access to a shared resource comprising:
-
sending a message from a requester to any other users included in a list for a requested access state to a shared resource, said list being determined in accordance with said requested access state included in said message;
said requester receiving approval messages from the other users; and
said requester obtaining said requested access state in response to receiving said approval messages; and
wherein said list is an interest list if said requested access state is a nonexclusive read access state indicating nonexclusive read access to said shared resource, said interest list including any users in an interested state indicating an interest in accesses to said shared resource, and wherein said list is a reader list if said requested access state is an exclusive access state for exclusive access to said shared resource, said reader list including any users currently in said nonexclusive read access state. - View Dependent Claims (34, 35, 36)
-
-
47. A method for controlling access to a shared resource comprising:
-
sending a message from a requester to any other users included in a list for a requested access state to a shared resource, said list being determined in accordance with said requested access state included in said message;
said requester receiving approval messages from the other users; and
said requester obtaining said requested access state in response to receiving said approval messages; and
wherein said list is an interest list if said requested access state is a nonexclusive read access state indicating nonexclusive read access to said shared resource, said interest list including any users in an interested state indicating an interest in accesses to said shared resource, and wherein said list is a reader list if said requested access state is an exclusive access state for exclusive access to said shared resource, said reader list including any users currently in said nonexclusive read access state. - View Dependent Claims (48, 49, 50)
-
-
51. A method of updating a shared resource having an unrestrictive update policy comprising:
-
a requester receiving a lock on said shared resource to modify said shared resource;
modifying said shared resource producing a modified version of said shared resource;
said requester sending a message to other users included in a list of current readers associated with said shared resource; and
in resource to receiving said message, each of said other users updating a local copy of said shared resource without synchronization with I/O operations for said shared resource, currently outstanding I/O operations being allowed to proceed using either said shared resource or said modified shared resource. - View Dependent Claims (52)
-
-
53. A computer program product for updating a shared resource having an unrestrictive update policy comprising:
-
code that receives a lock on said shared resource to modify said shared resource by a requester of said lock;
code that modifies said shared resource producing a modified version of said shared resource;
code that sends a message from said requester to other users included in a list of current readers associated with said shared resource; and
code that, in response to receiving said message, updates a local copy of said shared resource in each of said users without synchronization with I/O operations for said shared resource, currently outstanding I/O operations being allowed to proceed using either said shared resource or said modified shared resource. - View Dependent Claims (54)
-
Specification