IP Library Granted Patent US 7,730,222
Granted Patent B2
US 7,730,222 · App. 10/924,582 · Granted Jun 1, 2010

Processing storage-related I/O requests using binary tree data structures

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 7,730,222
App. No.
10/924,582
Granted
Jun 1, 2010
Kind
B2
Abstract

The disclosed technology can be used to develop systems and perform methods that receive and process I/O requests directed to at least a part of a logical unit of storage. The I/O requests can be associated with different times corresponding to when such I/O requests were received. Nodes that include non-overlapping address ranges associated with the logical unit of storage can be formed in response to receiving the I/O requests and such nodes can be subsequently organized into a tree data structure. The tree data structure can serve as a basis for determining address overlap, for example to enable processing a first operation associated with a first one of the I/O requests in accordance with the first I/O request's receipt time, while one or more other operations associated with a different I/O request may be processed irrespective of that different I/O request's receipt time. This can be useful in a system in system operations are improved by easy access to information about whether pending I/O requests are directed to overlapping units of storage.

Claims (43)

1. A system for processing I/O requests, the system comprising:

a logical unit of storage to receive a plurality of I/O requests directed to at least a part of the logical unit of storage; and

a plurality of nodes arranged in a tree data structure, each node in the plurality of nodes being associated with a non-overlapping address range in the logical unit of storage, such that the tree data structure facilitates sequential processing of one or more of the plurality of I/O requests directed to the logical unit of storage based on an order in which the one or more I/O requests directed to the logical unit of storage were received, the plurality of I/O requests processed through the plurality of nodes forwarded to the associated non-overlapping address ranges in the logical unit of storage, wherein at least some of the nodes include pointers to operation sequences associated with corresponding I/O requests.

2. The system of claim 1 , wherein the tree data structure is a binary tree data structure.

3. The system of claim 1 , wherein at least one of the non-overlapping address ranges is associated with address ranges specified by at least two of the I/O requests.

4. The system of claim 1 , wherein at least one of the non-overlapping address ranges is associated with an address range specified by one of the I/O requests.

5. The system of claim 1 , wherein at least one of the nodes is removed from the tree data structure in response to completing operation sequences associated therewith.

6. The system of claim 1 , wherein the tree data structure is expandable to include a new node, in response to receiving a new I/O request associated with a new address range that does not overlap the address ranges associated with other nodes in the tree data structure.

7. The system of claim 1 , wherein at least one of the nodes in the tree data structure is split into at least two other nodes in response to receiving a new I/O request associated with a new address range that at least partially overlaps at least one of the address ranges associated with at least one node in the tree data structure.

8. A method of processing I/O requests, the method comprising:

receiving a plurality of I/O requests directed to particular address ranges in a logical unit of storage, the address ranges of at least some of the I/O requests at least partly overlapping;

forming a plurality of nodes associated with the received I/O requests, at least some of the nodes associated with non-overlapping address ranges in the logical unit of storage, wherein at least some of the nodes include pointers to operation sequences associated with corresponding I/O requests;

organizing the nodes into a tree data structure;

processing the received I/O requests based on the tree data structure; and

forwarding the received I/O requests to the associated address ranges in the logical unit of storage after processing.

9. The method of claim 8 , wherein the I/O requests are further processed based on an order in which the I/O requests were received.

10. The method of claim 8 , wherein the tree data structure is a binary tree data structure.

11. The method of claim 8 , further comprising;

processing a first operation in a selected one of the operation sequences in accordance with an order in which the I/O requests were received; and

processing remaining operations in the selected operation sequence without regard to the order in which the I/O requests were received.

12. The method of claim 8 , further comprising:

removing at least one of the nodes from the tree data structure in response to completing operation sequences associated with corresponding I/O requests.

13. The method of claim 8 , further comprising:

receiving a new I/O request associated with a new address range that does not overlap the address ranges associated with other nodes in the tree data structure;

forming a new node associated with the new address range; and

expanding the tree data structure to include the new node.

14. The method of claim 8 , further comprising:

receiving a new I/O request associated with a new address range that at least partially overlaps at least one of the address ranges associated with at least one node in the tree data structure;

splitting the at least one node in the tree data structure into at least two other nodes, the at least two other nodes including updated address ranges that do not overlap with the address ranges of other nodes in the tree data structure; and

expanding the tree data structure to include the at least two other nodes.

15. A method of processing I/O requests, the method comprising:

receiving a plurality of I/O requests directed to at least a part of a logical unit of storage, the I/O requests being associated with times at which such requests were received, wherein each of the receipt times of the I/O requests differ;

forming a plurality of nodes associated with the received I/O requests, at least some of the nodes associated with non-overlapping address ranges in the logical unit of storage, wherein at least some of the nodes include pointers to operation sequences associated with corresponding I/O requests;

organizing the nodes into a tree data structure;

based on the tree data structure, processing at least a first operation associated with a first one of the received I/O requests in accordance with the first received I/O request's receipt time and processing at least another operation associated with a different one of the received I/O requests irrespective of the different received I/O request's receipt time; and

forwarding the received I/O requests to the associated address ranges in the logical unit of storage after processing.

16. A method of processing I/O requests, the method comprising:

receiving a plurality of I/O requests directed to at least a part of a logical unit of storage;

forming a plurality of nodes associated with the received I/O requests;

organizing the nodes into a binary tree data structure, at least some of the nodes associated with non-overlapping address ranges in the logical unit of storage and pointers to received I/O requests associated with the non-overlapping address ranges wherein at least some of the nodes further include pointers to operations within operation sequences associated with at least some of the received I/O requests;

processing the received I/O requests based on the binary tree data structure; and

forwarding the received I/O requests to the associated address ranges in the logical unit of storage after processing.

17. The method of claim 16 , wherein the operations and operation sequences are directed at data contained within at least one of the non-overlapping address ranges.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2007
From: REVIVIO, INC.
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 019032/0953 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2004
From: PASSERINI, RON
To: REVIVIO, INC.
Reel/Frame 015936/0686 →