Claims
- 1. A method of updating data contained in a file object stored in an object-based distributed data storage system comprising:
receiving a first request from a first requester in said data storage system for updating a first portion of said data in said file object; upon receipt of said first request, determining whether a first write lock has been granted to a second requester in said data storage system to update any portion of said data in said file object; and in the absence of said first write lock, granting a second write lock to said first requester, wherein said second write lock is valid over entirety of said file object, thereby allowing said first requestor to update said first portion and any other portion of said data in said file object.
- 2. The method of claim 1, further comprising:
recalling said second write lock exclusively granted to said first requestor upon receiving a second request from said second requester to update a second portion of said data; granting a first mutual-exclusion (mutex) lock to said first requester to update said first portion of said data in said file object; and granting a second mutex lock to said second requestor to update said second portion of said data in said file object, wherein said first and said second portions are non-overlapping.
- 3. The method of claim 1, further comprising allowing a third requester to read said first portion of said data while said first requester is updating said first portion of said data without requiring said third requester to obtain a read lock over said first portion.
- 4. A method of updating redundant data contained in a file object stored in an object-based distributed data storage system comprising:
receiving a first request from a first requester in said data storage system for updating said redundant data in said file object; upon receipt of said first request, determining whether a first write capability has been granted to a second requester in said data storage system to update said redundant data in said file object; and in the absence of said first write capability, granting a second write capability exclusively to said first requestor sending said first request, thereby allowing said first requester to update any portion of said file object containing said redundant data until a second request is received from said second requestor for updating said redundant data.
- 5. The method of claim 4, further comprising:
upon receiving said second request from said second requester, recalling said second write capability exclusively granted to said first requester; granting a third write capability to said first requester to update a first portion of said redundant data in said file object; and granting a fourth write capability to said second requestor to update a second portion of said redundant data in said file object, wherein said first and said second portions are non-overlapping.
- 6. The method of claim 4, further comprising allowing a third requestor to read a portion of said redundant data while said first requestor is updating said portion of said redundant data.
- 7. A computer-readable storage medium containing a program code, which, upon execution by a processor in an object-based distributed data storage system, causes said processor to perform the following:
receive a request from a first requester in said data storage system for updating a portion of data in a file object stored in said data storage system; upon receipt of said request, determine whether a first write lock has been granted to a second requestor in said data storage system to update any portion of said data in said file object; and in the absence of said first write lock, grant a second write lock to said first requestor, wherein said second write lock is valid over entirety of said file object, thereby allowing said first requester to update any portion of said data in said file object.
- 8. An object-based data storage system comprising:
means for receiving a request from a first requestor in said data storage system for updating a portion of data in a file object stored in said data storage system; upon receipt of said request, means for determining whether a first write lock has been granted to a second requester in said data storage system to update any portion of said data in said file object; and in the absence of said first write lock, means for granting a second write lock to said first requester, wherein said second write lock is valid over entirety of said file object, thereby allowing said first requestor to update any portion of said data in said file object.
- 9. An object-based data storage system comprising:
a first client computer including:
a first client application program (CAP) configured to send a first request for a byte-range based first write lock corresponding to a first write operation to be performed by said first CAP on a first portion of data stored at a first byte-range in a file object stored in said data storage system; and a first client lock manager (CLM) configured to receive said first request from said first CAP and, in response, generate and send a second request for said byte-range based first write lock to a server computer in said data storage system.
- 10. The system of claim 9, further comprising:
a server computer including:
a server lock manager (SLM) configured to receive said second request for said byte-range based first write lock from said first CLM and, in response, to determine whether said first write lock has been granted to a second CLM in a second client computer in said data storage system to update any portion of said data in said file object, wherein, in the absence of said first write lock, said SLM is configured to grant a second write lock to said first CLM, wherein said second write lock is valid over entirety of said file object, thereby allowing said first client computer to update any portion of said data in said file object.
- 11. The system of claim 10, further comprising:
said second client computer including:
a second CLM configured to generate and send a third request for a byte-range based third write lock to said server computer, wherein said third request corresponds to a second write operation to be performed by said second client computer on a second portion of said data stored at a second byte-range in said file object, wherein said first and said second portions are non-overlapping, wherein said SLM is configured to receive said third request from said second CLM and, in response, to recall said second write lock exclusively granted to said first CLM, and wherein said SLM is further configured to grant a first mutual-exclusion (mutex) lock to said first CLM to update said first portion of said data stored at said first byte-range in said file object and to grant a second mutex lock to said second CLM to update said second portion of said data stored at said second byte-range in said file object.
- 12. The system of claim 10, wherein said first CAP is configured to send a third request for a byte-range based first read lock corresponding to a first read operation to be performed by said first CAP on a second portion of data stored at a second byte-range in said file object, and wherein said first CLM is configured to receive said third request from said first CAP and, in response, authorize said first CAP to perform said first read operation without requesting said first read lock from said SLM.
- 13. The system of claim 12, wherein said first and said second byte ranges are identical.
- 14. The system of claim 12, wherein said SLM is configured to require said first CLM to request therefrom a byte-range based third write lock and a byte-range based second read lock to perform each corresponding data write and data read operation on any portion of said file object so long as said file object is in a degraded mode.
- 15. A method of accessing data contained in a file object that is at least partially stored in an object-based secure disk (OBD) in an object-based distributed data storage system, said method comprising:
allowing one or more executable applications operating in said data storage system to access said data using a corresponding mutual-exclusion (mutex) lock only when each said executable application is performing a write operation on said data in said file object and so long as said file object is in a fault-free state, wherein each said mutex lock allows a corresponding executable application to access said file object simultaneously with one or more other executable applications; and further allowing each said executable application to perform a read operation on said data without using a corresponding read lock therefor so long as said file object is in said fault-free state.
- 16. The method of claim 15, wherein allowing one or more executable applications to access said data includes granting each said executable application said corresponding mutex lock over a respective portion of said file object, wherein all respective portions of said file object are non-overlapping.
- 17. The method of claim 15, wherein allowing one or more executable applications to access said data includes granting each said executable application a corresponding write capability along with said corresponding mutex lock, thereby enabling respective executable application to perform said write operation on said data in said file object.
- 18. The method of claim 17, wherein further allowing each said executable application to perform said read operation on said data includes granting each said executable application a corresponding read capability, thereby enabling respective executable application to perform said read operation on said data.
- 19. The method of claim 18, further comprising invalidating all said corresponding read and write capabilities when said file object transitions from said fault-free state into a degraded state.
- 20. The method of claim 15, further comprising:
invalidating all read capabilities and write capabilities granted to said one or more executable applications to perform said read and write operations respectively when said file object transitions from said fault-free state into a degraded state; and requiring each said executable application to acquire a corresponding read lock or write lock over a corresponding byte range of said data in said file object when performing a respective read or write operation on said data in said file object so long as said file object is in said degraded state.
- 21. The method of claim 20, further comprising invalidating all read capabilities and write capabilities granted to said one or more executable applications to perform said read and write operations respectively when said file object transitions from said degraded state into said fault-free state.
- 22. A method of accessing redundant data contained in a file object in an object-based distributed data storage system, said method comprising:
allowing each executable application operating in said data storage system to access said redundant data using a corresponding first lock only when said executable application is performing a write operation on said redundant data in said file object and so long as said file object is in a fault-free state, wherein each said first lock allows a corresponding executable application to access said file object simultaneously with one or more other executable applications; and requiring each said executable application to acquire a corresponding second lock or third lock over a corresponding byte range in said file object when performing a respective read or write operation on said redundant data in said file object so long as said file object is in a degraded state.
- 23. An object-based data storage system comprising:
means for allowing one or more executable applications operating in said data storage system to access data contained in a file object stored in said data storage system using a corresponding mutual-exclusion (mutex) lock only when each said executable application is performing a write operation on said data in said file object and so long as said file object is in a fault-free state, wherein each said mutex lock allows a corresponding executable application to access said file object simultaneously with one or more other executable applications; means for allowing each said executable application to perform a read operation on said data without using a corresponding read lock therefor so long as said file object is in said fault-free state; and means for requiring each said executable application to acquire a corresponding read lock or write lock over a corresponding byte range of said data in said file object when performing a respective read or write operation on said data in said file object so long as said file object is in a degraded state.
- 24. A method of accessing a file object stored in an object-based data storage system, said method comprising:
determining whether said file object is in a fault-free state or a degraded state; performing the following if said file object is in said fault-free state:
granting a client computer a whole-file lock valid over entirety of said file object when said client computer is the only client computer in said data storage system writing to said file object, granting a byte-range based mutual-exclusion lock to each client computer wishing to write to said file object in said data storage system when more than one client computer wishes to write to said file object, and allowing each client computer in said data storage system to read said file object without requiring a corresponding read lock therefor; and performing the following if said file object is in said degraded state:
requiring each client computer in said data storage system to obtain a corresponding byte-range based read lock or write lock on said file object for a respective data read or data write operation on said file object, and granting each client computer said corresponding byte-range based read or write lock on said file object.
REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority benefits of prior filed co-pending and commonly-owned U.S. provisional patent applications Serial No. 60/368,785, filed on Mar. 29, 2002, Ser. No. 60/372,026, filed on Apr. 12, 2002, and Ser. No. 60/372,024, filed on Apr. 12, 2002, the disclosures of all of them are incorporated herein by reference in their entireties.
Provisional Applications (3)
|
Number |
Date |
Country |
|
60368785 |
Mar 2002 |
US |
|
60372026 |
Apr 2002 |
US |
|
60372024 |
Apr 2002 |
US |