IP Library Granted Patent US 7,565,498
Granted Patent B1
US 7,565,498 · App. 11/268,116 · Granted Jul 21, 2009

System and method for maintaining write order fidelity in a distributed environment

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,565,498
App. No.
11/268,116
Granted
Jul 21, 2009
Kind
B1
Abstract

Various systems and methods for maintaining write order fidelity in a distributed environment are disclosed. One method, which can be performed by each node in a cluster, involves associating a current sequence number with each of several write operations included in a set of independent write operations. In response to detecting that one of the write operations in the set is ready to complete, a new sequence number is selected, and that new sequence number is thereafter used as the current sequence number. None of write operations in the set is allowed to return to the application that initiated the write operations until the new sequence number has been advertised to each other node in the cluster. The method also involves receiving a message advertising a first sequence number from another node in the cluster, and subsequently using the first sequence number as the current sequence number.

Claims (57)

1. A method comprising:

receiving a message advertising a first sequence number from another node in a cluster;

using the first sequence number as a current sequence number;

associating the current sequence number with each of a plurality of write operations included in a set of independent write operations;

selecting a new sequence number, in response to detecting that one of the write operations has been performed, wherein

the write operations are initiated by an application, and

the new sequence number is based on a value of the current sequence number being used at each node in the cluster;

sending a message advertising the new sequence number to each other node in the cluster; and

preventing any of the write operations in the set of independent write operations from returning to the application until the new sequence number has been advertised to each node included in the cluster.

2. The method of claim 1 , wherein the associating the current sequence number with a first write operation in the set of independent write operations comprises:

associating the current sequence number with each block of data being modified by the first write operation.

3. The method of claim 2 , wherein the associating the current sequence number with each block of data being modified by the first write operation comprises one of:

appending the current sequence number to each block of data, prior to transferring each block of data via a network; and

writing the current sequence number to a storage location associated with each block of data.

4. A node comprising:

a processor; and

a memory storing program instructions executable by the processor to implement:

a sequence number module, wherein

the sequence number module is configured to

receive a message advertising a first sequence number from another node in a cluster;

use the first sequence number as a current sequence number;

generate a new sequence number, wherein

the new sequence number is based on a value of a current sequence number being used at each node included in the cluster, and

advertise the new sequence number to each other node included in the cluster; and

an ordered write module configured to:

associate the current sequence number with each of a plurality of write operations included in a set of independent write operations;

request a new sequence number from the sequence number module, in response to detecting that one of the write operations in the set of independent write operations has been performed, wherein

the write operations are initiated by an application; and

prevent any of the write operations in the set of independent write operations from returning to the application until the new sequence number has been advertised to each node included in the cluster.

5. A system comprising:

a plurality of nodes coupled by a network, wherein

each of the nodes is configured to receive write requests and initiate corresponding write operations;

each of the nodes is configured to receive a message advertising a first sequence number from another node in a cluster;

each of the nodes is configured to use the first sequence number as a current sequence number;

each of the nodes is configured to associate the current sequence number with each of a plurality of write operations included in a set of independent write operations;

each of the nodes is configured to generate and advertise a new sequence number to each other node, in response to detecting that any write operation within the set of independent write operations has been performed, wherein

the set of independent write operations is initiated by an application, and

the new sequence number is based on a value of the current sequence number being used at each node in the cluster; and

each of the nodes is configured to prevent any of the write operations in the set of independent write operations from returning to the application until the new sequence number has been advertised to each node included in the cluster.

6. A computer readable storage medium comprising program instructions executable to:

detect reception of a message advertising a first sequence number from another node in a cluster;

use the first sequence number as a current sequence number;

associate the current sequence number with each of a plurality of write operations included in a set of independent write operations;

select a new sequence number, in response to detecting that one of the write operations has been performed, wherein

the write operations are initiated by an application, and

the new sequence number is based on a value of the current sequence number being used at each node in the cluster;

send a message advertising the new sequence number to each other node in the cluster; and

prevent any of the write operations in the set of independent write operations from returning to the application until the new sequence number has been advertised to each node included in the cluster.

7. A system comprising:

means for detecting reception of a message advertising a first sequence number from another node in a cluster;

means for setting the first sequence number as a current sequence number;

means for associating the current sequence number with each of a plurality of write operations included in a set of independent write operations;

means for selecting a new sequence number, in response to detecting that one of the write operations has been performed, wherein

the write operations are initiated by an application, and

the new sequence number is based on a value of the current sequence number being used at each node in the cluster;

network interface means for sending a message advertising the new sequence number to each other node in the cluster; and

means for preventing any of the write operations in the set of independent write operations from returning to the application until the new sequence number has been advertised to each node included in the cluster.

Assignments (17)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
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 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
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: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CHANGE OF NAME Recorded Oct 1, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 019899/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2005
From: BAIRD, ROBERT; KEKRE, ANAND A.
To: VERITAS OPERATING CORPORATION
Reel/Frame 017203/0496 →