Lock Management Method in Cluster, Lock Server, and Client
First Claim
1. A lock management method in a cluster, the cluster comprising a plurality of clients and a lock server, the lock server comprising an interface card and a memory, and the method comprising:
- receiving, by the interface card, a first write lock request carrying an identifier of a first client in the clients and a memory address of a queue head of a write lock request queue from the first client in the clients, the memory storing the write lock request queue recording identifiers of the clients in the cluster comprising an identifier of a client in a write lock waiting state for a shared resource and an identifier of a client obtaining a write lock for the same shared resource, a write lock allocation identifier indicating whether the write lock for the shared resource is allocated, and a read lock allocation count indicating a quantity of read locks allocated for the shared resource;
writing, by the interface card, the identifier of the first client into the memory address of the queue head of the write lock request queue;
querying, by the interface card, the read lock allocation count to determine whether a read lock has been allocated;
setting, by the interface card, the write lock allocation identifier to a write lock allocated state when the read lock is not allocated;
sending, by the interface card, a first message to the first client indicating that the first client obtains the write lock; and
sending, by the interface card, a second message indicating that the first client is in the write lock waiting state to the first client.
1 Assignment
0 Petitions
Accused Products
Abstract
A lock management solution in a cluster, where the cluster includes a client and a lock server, the lock server includes an interface card and a memory, the memory stores a read lock request queue recording an identifier of a client waiting for a read lock or obtaining the read lock, the memory further stores a write lock request queue recording an identifier of a client waiting for a write lock or obtains the write lock, and the memory further includes a read lock allocation count and a write lock allocation identifier, where the read lock allocation count records an allocated read lock, and the write lock allocation identifier indicates whether the write lock has been allocated.
-
Citations
20 Claims
-
1. A lock management method in a cluster, the cluster comprising a plurality of clients and a lock server, the lock server comprising an interface card and a memory, and the method comprising:
-
receiving, by the interface card, a first write lock request carrying an identifier of a first client in the clients and a memory address of a queue head of a write lock request queue from the first client in the clients, the memory storing the write lock request queue recording identifiers of the clients in the cluster comprising an identifier of a client in a write lock waiting state for a shared resource and an identifier of a client obtaining a write lock for the same shared resource, a write lock allocation identifier indicating whether the write lock for the shared resource is allocated, and a read lock allocation count indicating a quantity of read locks allocated for the shared resource; writing, by the interface card, the identifier of the first client into the memory address of the queue head of the write lock request queue; querying, by the interface card, the read lock allocation count to determine whether a read lock has been allocated; setting, by the interface card, the write lock allocation identifier to a write lock allocated state when the read lock is not allocated; sending, by the interface card, a first message to the first client indicating that the first client obtains the write lock; and sending, by the interface card, a second message indicating that the first client is in the write lock waiting state to the first client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A lock server, applied to a cluster comprising a plurality of clients, comprising:
-
a memory configured to store a write lock request queue recording identifiers of the clients in the cluster comprising an identifier of a client in a write lock waiting state for a shared resource and an identifier of a client obtaining a write lock for the same shared resource, a write lock allocation identifier indicating whether the write lock for the shared resource is allocated, and a read lock allocation count indicating a quantity of read locks allocated for the shared resource; and an interface card coupled to the memory and configured to; receive a first write lock request carrying an identifier of a first client in the clients and a memory address of a queue head of the write lock request queue from the first client in the clients; write the identifier of the first client into the memory address of the queue head of the write lock request queue; query the read lock allocation count to determine whether a read lock has been allocated; set the write lock allocation identifier to a write lock allocated state when the read lock is not allocated; send a first message to the first client indicating that the first client obtains the write lock; and send a second message indicating that the first client is in a write lock waiting state to the first client when the read lock has been allocated. - View Dependent Claims (10, 11, 12, 13)
-
-
14. A lock server, applied to a cluster comprising a plurality of clients, comprising:
-
a memory configured to store a read lock request queue recording an identifier of a client in the cluster in a read lock waiting state or obtaining a read lock for a shared resource, and a write lock allocation identifier indicating whether a write lock for the same shared resource is allocated; and an interface card coupled to the memory and configured to; receive a first read lock request carrying an identifier of a first client in the clients and a first memory address in the read lock request queue from the first client in the clients; write the identifier of the first client into the first memory address in the read lock request queue; and send a first message carrying the write lock allocation identifier to the first client. - View Dependent Claims (15, 16, 17, 18, 19, 20)
-
Specification