IP Library Granted Patent US 8,516,211
Granted Patent B2
US 8,516,211 · App. 11/156,093 · Granted Aug 20, 2013

Secure storage management system and method

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,516,211
App. No.
11/156,093
Granted
Aug 20, 2013
Kind
B2
Abstract

A storage management system and method for managing access between a plurality of processes and a common store. In one embodiment, each individual process comprises data processing means, a cache for the temporary storage of data generated by the data processing means, and a control unit for managing the transferral of data between the cache and a common store. The control unit comprises a manager for monitoring the availability of storage locations in the store to receive and store data and for allocating data to available storage locations, an interface for transferring the allocated data to the available storage locations, and a locking arrangement for locking the store during data transfer in order to ensure exclusive access and thereby preserve data integrity.

Claims (60)

1. A storage management system, comprising:

a shared store, accessible by each of a plurality of parties, that stores a first version of management data indicating the storage allocations of the shared store and a second version of management data indicating the storage allocations of the shared store, wherein the first version of management data is more up-to-date than the second version of management data;

a plurality of parties, each party having access to said shared store and each party comprising:

a data processor;

a cache that stores data generated by the data processor and the second version of management data indicating storage allocations of the shared store; and

a control unit that manages a first data transfer between the cache and the shared store, wherein said control unit operates independently without interfering with the access of another party to said shared store and wherein the control unit separates the data into data blocks for transfer to the shared store, the control unit being embedded in each party of said plurality of parties in a shared access network and comprising:

a manager that identifies one or more available storage locations to receive and store the data in the shared store and allocates the data to the one or more available storage locations to render allocated data, wherein allocating to the one or more available storage locations comprises determining the size of the data blocks and allocating the data blocks to a selected address and offset in the shared store;

an interface that manages a second data transfer of the allocated data to the one or more available storage locations; and

a locking mechanism that generates a lock and locks the shared store during the first data transfer and the second data transfer to ensure that each party obtains exclusive access by preventing access from other parties of the plurality of the parties and that data integrity is preserved.

2. The system according to claim 1 , wherein the manager comprises a fault tolerant mechanism that recovers uncorrupted data when data errors arise.

3. The system according to claim 1 , wherein the control unit further comprises a data verifier that detects the corruption of data.

4. The system according to claim 3 , wherein the manager is arranged to co-operate with the data verifier to cancel corrupted data.

5. The system according to claim 1 , wherein the control unit employs version control and in which the manager includes a data version manager to ensure that the data stored in the shared store includes a current data set and a previous data set.

6. The system according to claim 5 , wherein the control unit comprises a data verifier that checks for data corruption and in which the manager is responsive to the data verifier to cancel corrupted data and to revert to the previous version.

7. The system according to claim 1 , wherein the control unit further comprises a data encoder for encrypting data.

8. The system according to claim 1 , wherein the control unit comprises at least one map representing storage locations within the shared store.

9. The system according to claim 8 , wherein the at least one map includes a block map representing storage blocks in the shared store and an address map representing addresses for the storage blocks which have already been allocated.

10. The system according to claim 8 further comprising at least one list representing storage locations in the shared store which are currently available.

11. The system according to claim 10 , wherein the at least one list comprises a free locked list representing blocks in the shared store which have previously been allocated and are no longer needed but which are locked and cannot be overwritten.

12. The system according to claim 10 , wherein the at least one list comprises a free offset list representing blocks in the shared store which have not yet been allocated, and a free address list representing addresses for blocks in the shared store which have previously been allocated and are now free for re-use.

13. The system according to claim 1 , wherein the control unit employs a garbage collection policy.

14. A shared access network comprising:

a plurality of parties,

a shared store, accessible by said plurality of parties, that stores a first version of management data indicating the storage allocations of the shared store and a second version of management data indicating the storage allocations of the shared store, wherein the first version of management data is more up-to-date than the second version of management data, and

each of said parties comprising a storage management system, the storage management system comprising:

a data processor;

a cache that stores data generated by the data processor and the second version of management data indicating storage allocations of the shared store: and

a control unit that manages a first data transfer between the cache and a shared store, wherein said control unit operates independently without interfering with the access of another party to said shared store and wherein the control unit separates the data into data blocks for transfer to the shared store, the control unit being embedded in each party of said plurality of parties in the shared access network and comprising:

a manager that identifies one or more available storage locations to receive and store data in the shared store and allocates the data to one or more available storage locations to render allocated data, wherein allocating to the one or more available storage locations comprises determining the size of the data blocks and allocating the data blocks to a selected address and offset in the shared store;

an interface that manages a second data transfer of the allocated data to the one or more available storage locations; and

a locking mechanism that generates a lock and locks the shared store during the first data transfer and the second data transfer in order to ensure that each party obtains exclusive access by preventing access from other parties of the plurality of the parties and that data integrity is preserved.

15. The network according to claim 14 , wherein the manager comprises a fault tolerant mechanism that recovers uncorrupted data when data errors arise.

16. The network according to claim 14 , wherein the control unit further comprises a data verifier that detects the corruption of data.

17. The network according to claim 16 , wherein the manager is arranged to co-operate with the data verifier to cancel corrupted data.

18. The network according to claim 14 , wherein the control unit employs version control for the data storage and in which the manager includes a data version manager to ensure that data stored in the shared store includes a current data set and a previous data set.

19. The network according to claim 18 , wherein the control unit comprises a data verifier that checks for data corruption and in which the manager is responsive to the data verifier to cancel corrupted data and to revert to the previous version.

20. The network according to claim 14 , wherein the control unit further comprises a data encoder for encrypting data.

21. The network according to claim 14 , wherein the control unit comprises at least one map representing storage locations within the shared store.

22. The network according to claim 21 , wherein the at least one map includes a block map representing storage blocks in the shared store and an address map representing addresses for the storage blocks which have already been allocated.

23. The network according to claim 21 further comprising at least one list representing storage locations in the shared store which are currently available.

24. The network according to claim 23 , wherein the at least one list comprises a free locked list representing blocks in the shared store which have previously been allocated and are no longer needed but which are currently locked and cannot be overwritten.

25. The network according to claim 23 , wherein the at least one list comprises a free offset list representing blocks in the shared store which have not yet been allocated, and a free address list representing addresses for blocks in the shared store which have been previously allocated and are now free for re-use.

26. The network according to claim 14 , wherein the control unit employs a garbage collection policy.

27. A method of storage management comprising:

generating data with a data processor in each party of a plurality of parties in a shared access network, each party of a plurality of parties having an embedded control unit, wherein said control unit operates independently without interfering with the access of another party to a shared store;

storing in a shared store, accessible by each of said parties, a first set of management data indicating the storage allocations of the shared store and a second set of management data indicating the storage allocations of the shared store, wherein the first version of management data is more up-to-date than the second version of management data;

said control unit of each party configured for:

storing in a cache the data generated by the data processor and the second version of management data indicating the current storage allocations of the shared store;

managing a first data transfer between the cache and the shared store;

monitoring the availability of storage locations in the shared store to receive and store the data;

allocating the data to one or more available storage locations to render allocated data, said allocating comprising separating the data into data blocks for transfer to the shared store, determining the size of the data blocks, and allocating the data blocks to a selected address and offset in the shared store;

managing a second data transfer of the allocated data and to one or more available storage locations; and

locking the shared store with a lock generated by the control unit of the party during the first data transfer and the second data transfer in order to ensure that each party obtains exclusive access by preventing access from other parties of the plurality of the parties and that data integrity is preserved.

28. The method according to claim 27 further comprising recovering uncorrupted data when data errors arise.

29. The method according to claim 27 , further comprising detecting the corruption of the data.

30. The method according to claim 29 further comprising cancelling corrupted data.

31. The method according to claim 29 further comprising employing version control for the data storage and storing in the shared store a current set of data and a previous set of data.

32. The method according to claim 31 further comprising checking for data corruption and in the event of data corruption cancelling the corrupted data and reverting to the previous set of data.

33. The method according to claim 27 further comprising encrypting data to be stored.

34. The method according to claim 27 further comprising employing a garbage collection policy for reducing the size of the shared store.

Assignments (24)
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS - REEL/FRAME 045441/ 0499 Recorded Aug 25, 2025
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
Reel/Frame 072552/0558 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Apr 18, 2024
From: JEFFERIES FINANCE LLC
To: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
Reel/Frame 067636/0534 →
SECOND LIEN SECURITY AGREEMENT Recorded Mar 3, 2021
From: BDNA CORPORATION; FLEXERA SOFTWARE LLC; PALAMIDA, INC.; RIGHTSCALE, INC.; RISC NETWORKS, LLC; REVULYTICS, INC.
To: JEFFERIES FINANCE LLC
Reel/Frame 055487/0354 →
RELEASE OF SECOND LIEN SECURITY INTEREST Recorded Feb 28, 2020
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION; RIGHTSCALE, INC.; RISC NETWORKS, LLC
Reel/Frame 052049/0560 →
SECOND LIEN SECURITY AGREEMENT Recorded Feb 27, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045451/0499 →
TERMINATION OF 2ND LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 032590/0805 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC
Reel/Frame 045447/0842 →
TERMINATION OF 1ST LIEN SECURITY INTEREST RECORDED AT REEL/FRAME 032590/0617 Recorded Feb 26, 2018
From: JEFFERIES FINANCE LLC
To: FLEXERA SOFTWARE LLC
Reel/Frame 045447/0894 →
FIRST LIEN SECURITY AGREEMENT Recorded Feb 26, 2018
From: FLEXERA SOFTWARE LLC; PALAMIDA, INC.; BDNA CORPORATION
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 045441/0499 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Apr 2, 2014
From: FLEXERA SOFTWARE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 032590/0617 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2014
From: BANK OF MONTREAL
To: FLEXERA SOFTWARE LLC
Reel/Frame 032581/0652 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Apr 2, 2014
From: FLEXERA SOFTWARE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 032590/0805 →
AMENDED AND RESTATED PATENT SECURITY AGREEMENT Recorded Mar 28, 2013
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 030111/0362 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 027022/0202 Recorded Mar 25, 2013
From: BNAK OF MONTREAL, AS COLLATERAL AGENT
To: FLEXERA SOFTWARE LLC
Reel/Frame 030081/0156 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Oct 5, 2011
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 027021/0054 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 5, 2011
From: FLEXERA SOFTWARE LLC
To: BANK OF MONTREAL, AS COLLATERAL AGENT
Reel/Frame 027022/0202 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Oct 3, 2011
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: FLEXERA SOFTWARE, INC.
Reel/Frame 027004/0601 →
CERTIFICATE OF CONVERSION Recorded Sep 29, 2011
From: FLEXERA SOFTWARE, INC.
To: FLEXERA SOFTWARE LLC
Reel/Frame 026994/0341 →
SECURITY AGREEMENT Recorded Jan 21, 2011
From: FLEXERA SOFTWARE, INC.
To: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
Reel/Frame 025675/0840 →
RELEASE OF SECURITY INTEREST Recorded Jan 20, 2011
From: BANK OF MONTREAL, AS AGENT
To: FLEXERA SOFTWARE, INC. (F/K/A ACRESSO SOFTWARE INC.)
Reel/Frame 025668/0070 →
THE SUBMISSION IS TO CORRECT AN ERROR MADE IN A PREVIOUSLY RECORDED DOCUMENT AT REEL/FRAME: 020986/0074 THAT ERRONEOUSLY AFFECTS THE IDENTIFIED PATENT APPLICATIONS #: 11/156093 AND 11/121506 Recorded Dec 16, 2010
From: FLEXERA SOFTWARE, INC.
To: FLEXERA SOFTWARE, INC.
Reel/Frame 025505/0066 →
CHANGE OF NAME Recorded Nov 25, 2009
From: ACRESSO SOFTWARE INC.
To: FLEXERA SOFTWARE, INC.
Reel/Frame 023565/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2008
From: MACROVISION CORPORATION
To: ACRESSO SOFTWARE INC.
Reel/Frame 020817/0960 →
SECURITY AGREEMENT Recorded Apr 2, 2008
From: ACRESSO SOFTWARE INC.
To: BANK OF MONTREAL, AS AGENT
Reel/Frame 020741/0288 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2005
From: WYLES, DAVID
To: MACROVISION CORPORATION
Reel/Frame 016708/0474 →