Method and computer system for sharing objects
First Claim
1. A computer system for sharing objects including at least directories, the computer system comprising:
- multiple front-end nodes that are coupled to clients; and
a back-end node being configured to provide a namespace shared by the multiple front-end nodes,a first front-end node that is any one of the multiple front-end nodes, being configured to manage local-lock counts for each of directories managed by the first front-end node, the local-lock count being the number of locks taken by operations to the objects including the directory and sub-objects thereof,the first front-end node being configured to, every time an update request is received for processing a target object from a client that is coupled to the first front-end node, request the back-end node to lock a parent directory of the target object and increment the local-lock count for the parent directory when the parent directory has not been locked by the back-end node,the first front-end node being configured to send a response of the received update request to the client regardless of whether or not the parent directory has been unlocked by the back-end node, andthe first front-end node being configured to, when the local-lock count of the parent directory is zero, request the back-end node to unlock the parent directory,wherein the first front-end node is configured to migrate not only the processed target object but also the parent directory thereof to the back-end node, and the first front-end node is configured not to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has not become zero, and the first front-end node is configured to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has become zero,wherein the first front-end node is configured to, when completing migration of the processed target object to the back-end node, decrement the local-lock counts of the processed target object and the parent directory thereof, andwherein the first front-end node is configured to, when at least one of the local-lock counts of the processed target object and the parent directory has become zero, request the back-end node to unlock the at least one of the processed target object and the parent directory whose local-lock count has become zero.
1 Assignment
0 Petitions
Accused Products
Abstract
A computer system for sharing objects comprises multiple front-end nodes and a back-end node for providing a namespace shared by the front-end nodes. A first front-end node that is any one of the front-end nodes manages local-lock counts for each of objects managed by the first front-end node. The local-lock count is the number of locks taken by operations to the objects including the directory and sub-objects thereof. Every time receiving a request for processing a target object from a client, the front-end node requests the back-end node to lock a parent directory of the target object if the parent directory has not been locked by the back-end node. The front-end node sends a response of the received request to the client regardless of whether or not the parent directory has been unlocked by the back-end node. If the local-lock count of the parent directory is zero, the first front-end node requests the back-end node to unlock the parent directory.
4 Citations
11 Claims
-
1. A computer system for sharing objects including at least directories, the computer system comprising:
-
multiple front-end nodes that are coupled to clients; and a back-end node being configured to provide a namespace shared by the multiple front-end nodes, a first front-end node that is any one of the multiple front-end nodes, being configured to manage local-lock counts for each of directories managed by the first front-end node, the local-lock count being the number of locks taken by operations to the objects including the directory and sub-objects thereof, the first front-end node being configured to, every time an update request is received for processing a target object from a client that is coupled to the first front-end node, request the back-end node to lock a parent directory of the target object and increment the local-lock count for the parent directory when the parent directory has not been locked by the back-end node, the first front-end node being configured to send a response of the received update request to the client regardless of whether or not the parent directory has been unlocked by the back-end node, and the first front-end node being configured to, when the local-lock count of the parent directory is zero, request the back-end node to unlock the parent directory, wherein the first front-end node is configured to migrate not only the processed target object but also the parent directory thereof to the back-end node, and the first front-end node is configured not to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has not become zero, and the first front-end node is configured to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has become zero, wherein the first front-end node is configured to, when completing migration of the processed target object to the back-end node, decrement the local-lock counts of the processed target object and the parent directory thereof, and wherein the first front-end node is configured to, when at least one of the local-lock counts of the processed target object and the parent directory has become zero, request the back-end node to unlock the at least one of the processed target object and the parent directory whose local-lock count has become zero. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer for sharing objects with another computer that is coupled to a storage apparatus for providing a shared namespace to store the objects, the objects including at least directories, the computer comprising:
-
an interface that is coupled to the storage apparatus and a client; a memory being configured to store management information including local-lock counts for each of directories, the local-lock count being the number of locks taken by operations to the objects including the directory and sub-objects thereof; and a processor that is coupled to the interface and the memory, the processor being configured to, every time an update request is received for processing a target object from the client, request the storage apparatus to lock a parent directory of the target object and increment the local-lock count for the parent directory when the parent directory has not been locked by the storage apparatus, the processor being configured to send a response of the received update request to the client regardless of whether or not the parent directory has been unlocked by the storage apparatus, and the processor being configured to, when the local-lock count of the parent directory is zero, request the storage apparatus to unlock the parent directory, wherein the processor is configured to migrate not only the processed target object but also the parent directory thereof to the back-end node, and the first front-end node is configured not to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has not become zero, and the processor is configured to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has become zero, wherein, the processor is configured to, when completing migration of the processed target object to the back-end node, decrement the local-lock counts of the processed target object and the parent directory thereof, and wherein the processor is configured to, when at least one of the local-lock counts of the processed target object and the parent directory has become zero, request the back-end node to unlock the at least one of the processed target object and the parent directory whose local-lock count has become zero.
-
-
11. A method for sharing, by multiple front-end nodes that are coupled to clients, objects including at least directories managed in a namespace provided to the multiple front-end nodes by a back-end node, the method comprising:
-
managing, by a first front-end node that is any one of the multiple front-end nodes, local-lock counts for each of directories managed by the first front-end node, the local-lock count being the number of locks taken by operations to the objects including the directory and sub-objects thereof, every time an update request is received for processing a target object from a client that is coupled to the first front-end node, requesting, by the first front-end node, the back-end node to lock a parent directory of the target object and increment the local-lock count for the parent directory when the parent directory has not been locked by the back-end node, sending, by the first front-end node, a response of the received update request to the client regardless of whether or not the parent directory has been unlocked by the back-end node, and requesting, by the first front-end node, the back-end node to unlock the parent directory, when the local-lock count of the parent directory is zero, wherein the first front-end node is configured to migrate not only the processed target object but also the parent directory thereof to the back-end node, and the first front-end node is configured not to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has not become zero, and the first front-end node is configured to migrate the parent directory of the processed target object to the back-end node when the local-lock count of the parent directory of the processed target object has become zero, wherein the first front-end node is configured to, when completing migration of the processed target object to the back-end node, decrement the local-lock counts of the processed target object and the parent directory thereof, and wherein the first front-end node is configured to, when at least one of the local-lock counts of the processed target object and the parent directory has become zero, request the back-end node to unlock the at least one of the processed target object and the parent directory whose local-lock count has become zero.
-
Specification